formTool.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. // 禁用值判断 array
  49. if(formItem.disables){
  50. if(formItem.disables.indexOf(formItem.val) !== -1){
  51. formItem.msg = '该项内容不合法';
  52. r = false;
  53. }
  54. }
  55. // 枚举值判断
  56. if(formItem.options){
  57. // 有枚举字段,只判断是否在枚举中
  58. console.log(`检测枚举字段:${checkField},值:${formItem.val}`);
  59. if(formItem.options.findIndex(item=>item.value == formItem.val) === -1){
  60. console.log(`检测枚举字段:${checkField},值:${formItem.val}不在范围内`);
  61. formItem.msg = '选项不在范围内';
  62. r = false;
  63. }
  64. // 枚举值判断完毕,继续下一个字段
  65. continue;
  66. }
  67. // 判断是否有依赖字段
  68. if(depend){
  69. if(depend.options){
  70. // 依赖的对象有枚举类型,检查该枚举类型是否有有检测值
  71. let optionItem = depend.options.find(item=>item.value == depend.val);
  72. if(!optionItem){
  73. depend.msg = '选项不在范围内';
  74. formItem.msg = '该值依赖项输入异常';
  75. r = false;
  76. continue;
  77. }
  78. if(optionItem.checkField){
  79. // console.log(`采用依赖项的检测字段${optionItem.checkField}`)
  80. checkField = optionItem.checkField;
  81. }
  82. }
  83. }
  84. // console.log(`检测字段:${checkField},值:${formItem.val}`);
  85. formItem.msg = fieldIsAllow({
  86. [checkField]:formItem.val,
  87. })
  88. if (formItem.msg){
  89. r = false;
  90. }
  91. }
  92. return r
  93. }
  94. }