formTool.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import fieldIsAllow from "./fieldIsAllow";
  2. export function initForm(formObject){
  3. let keys = Object.keys(formObject);
  4. for(let i = 0; i < keys.length; i++){
  5. let key = keys[i];
  6. if(formObject[key].options && formObject[key].options.length > 0){
  7. formObject[key].init = formObject[key].options[0].key;
  8. }
  9. formObject[key].val = formObject[key].init;
  10. formObject[key].msg = '';
  11. formObject[key].state = 0;
  12. formObject[key].showText = '';
  13. }
  14. }
  15. export function checkFormItem(form,field,enumOptions,reCheckField){
  16. let formItem = form[field];
  17. if (formItem){
  18. if (enumOptions){
  19. // 遍历枚举
  20. for (let i = 0; i < enumOptions.length; i++) {
  21. let enumOption = enumOptions[i];
  22. if (enumOption.value === formItem.val){
  23. return true;
  24. }
  25. }
  26. formItem.msg = '选项不在范围内';
  27. return false;
  28. }
  29. if(reCheckField){
  30. // 检查用字段
  31. formItem.msg = fieldIsAllow({
  32. [reCheckField]:formItem.val,
  33. })
  34. }else{
  35. formItem.msg = fieldIsAllow({
  36. [field]:formItem.val,
  37. })
  38. }
  39. }else{
  40. let r = true;
  41. for (const fieldKey in form) {
  42. formItem = form[fieldKey];
  43. let depend = form[formItem.depend];
  44. let checkField = fieldKey;
  45. if(formItem.reCheckField){
  46. checkField = formItem.reCheckField;
  47. }
  48. // 枚举值判断
  49. if(formItem.options){
  50. // 有枚举字段,只判断是否在枚举中
  51. if(formItem.options.findIndex(item=>item.value == formItem.val) === -1){
  52. formItem.msg = '选项不在范围内';
  53. r = false;
  54. }
  55. // 枚举值判断完毕,继续下一个字段
  56. continue;
  57. }
  58. // 判断是否有依赖字段
  59. if(depend){
  60. if(depend.options){
  61. // 依赖的对象有枚举类型,检查该枚举类型是否有有检测值
  62. let optionItem = depend.options.find(item=>item.value == depend.val);
  63. if(!optionItem){
  64. depend.msg = '选项不在范围内';
  65. formItem.msg = '该值依赖项输入异常';
  66. r = false;
  67. continue;
  68. }
  69. if(optionItem.checkField){
  70. // console.log(`采用依赖项的检测字段${optionItem.checkField}`)
  71. checkField = optionItem.checkField;
  72. }
  73. }
  74. }
  75. // console.log(`检测字段:${checkField},值:${formItem.val}`);
  76. formItem.msg = fieldIsAllow({
  77. [checkField]:formItem.val,
  78. })
  79. if (formItem.msg){
  80. r = false;
  81. }
  82. }
  83. return r
  84. }
  85. }