formTool.js 3.1 KB

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