formData.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = void 0;
  6. var _fieldCheck = _interopRequireDefault(require("./fieldCheck"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  8. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  9. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  10. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
  11. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
  12. function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  13. function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
  14. function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
  15. var hasOwnProperty = Object.prototype.hasOwnProperty;
  16. function hasOwn(obj, key) {
  17. return hasOwnProperty.call(obj, key);
  18. }
  19. var FormItem = function () {
  20. function FormItem(object, fieldCheck, option) {
  21. _classCallCheck(this, FormItem);
  22. _defineProperty(this, "formData", null);
  23. _defineProperty(this, "fieldCheck", null);
  24. _defineProperty(this, "formState_default", 0);
  25. _defineProperty(this, "formState_pass", 1);
  26. _defineProperty(this, "formState_notPass", 2);
  27. _defineProperty(this, "defaultOption", {
  28. isMustMatchRule: false
  29. });
  30. _defineProperty(this, "option", {});
  31. this.fieldCheck = fieldCheck || new _fieldCheck["default"]();
  32. this.option = Object.assign(this.defaultOption, option);
  33. var errMsg;
  34. for (var key in object) {
  35. this[key] = object[key];
  36. errMsg = FormItem.buildFormItem(object, key, object[key], this.fieldCheck, this.option.isMustMatchRule);
  37. if (errMsg) {
  38. throw new Error("\u8868\u5355\u9879".concat(key, "\u4E0D\u7B26\u5408\u8981\u6C42,err:").concat(errMsg));
  39. }
  40. }
  41. this.formData = object;
  42. }
  43. _createClass(FormItem, [{
  44. key: "checkForm",
  45. value: function checkForm(form, isMustMatch) {
  46. var _this = this;
  47. var r = true;
  48. var n_checkPass = 0,
  49. n_checkTotal = 0;
  50. var msg = '';
  51. var _loop = function _loop() {
  52. var formItem = form[fieldKey];
  53. var depend = form[formItem.depend];
  54. var checkField = fieldKey;
  55. var tmpInd = -1;
  56. n_checkTotal++;
  57. if (formItem.reCheckField) {
  58. checkField = formItem.reCheckField;
  59. }
  60. if (formItem.disables) {
  61. if (formItem.disables.indexOf(formItem.val) !== -1) {
  62. formItem.msg = '该项内容不合法';
  63. r = false;
  64. }
  65. }
  66. if (formItem.options) {
  67. tmpInd = formItem.options.findIndex(function (item) {
  68. return item.value == formItem.val;
  69. });
  70. if (tmpInd === -1) {
  71. console.log("\u68C0\u6D4B\u679A\u4E3E\u5B57\u6BB5:".concat(checkField, ",\u503C:").concat(formItem.val, "\u4E0D\u5728\u8303\u56F4\u5185"));
  72. formItem.msg = '选项不在范围内';
  73. formItem.state = 1;
  74. r = false;
  75. } else {
  76. if (formItem.options[tmpInd].disabled) {
  77. formItem.msg = '该选项已经被禁用';
  78. r = false;
  79. }
  80. }
  81. n_checkPass++;
  82. return 1;
  83. }
  84. if (depend) {
  85. if (depend.options) {
  86. var optionItem = depend.options.find(function (item) {
  87. return item.value == depend.val;
  88. });
  89. if (!optionItem) {
  90. depend.msg = '选项不在范围内';
  91. formItem.msg = '该值依赖项输入异常';
  92. r = false;
  93. }
  94. if (optionItem.checkField) {
  95. checkField = optionItem.checkField;
  96. }
  97. } else {
  98. r = false;
  99. }
  100. if (!r) {
  101. depend.msg = '该项依赖项输入异常';
  102. formItem.msg = '该值依赖项输入异常';
  103. }
  104. }
  105. formItem.msg = _this.fieldCheck.verify(_defineProperty({}, checkField, formItem.val));
  106. if (formItem.msg) r = false;
  107. if (r) {
  108. n_checkPass++;
  109. formItem.state = _this.formState_pass;
  110. } else {
  111. formItem.state = _this.formState_notPass;
  112. }
  113. };
  114. for (var fieldKey in form) {
  115. if (_loop()) continue;
  116. }
  117. msg = "\u68C0\u67E5\u8868\u5355\u9879\u901A\u8FC7\u7387:".concat(n_checkPass, "/").concat(n_checkTotal);
  118. console.log(msg);
  119. return r;
  120. }
  121. }], [{
  122. key: "isObject",
  123. value: function isObject(obj) {
  124. return obj !== null && _typeof(obj) === 'object';
  125. }
  126. }, {
  127. key: "buildFormItem",
  128. value: function buildFormItem(object, field, formItemData, fieldCheck, isMustMatchRule) {
  129. if (!FormItem.isObject(formItemData)) {
  130. return "form item ".concat(field, " must be object");
  131. }
  132. var isNeedMatchRule = true;
  133. var checkFieldStr = field;
  134. var disables = formItemData.disables;
  135. formItemData.val = formItemData.val || formItemData.init || '';
  136. formItemData.msg = formItemData.msg || '';
  137. formItemData.state = formItemData.state || FormData.formState_default;
  138. formItemData.label = formItemData.label || '';
  139. if (formItemData.options) {
  140. if (!formItemData.options.length || !formItemData.options[0]) {
  141. return "form item ".concat(field, " options must be array and has item");
  142. }
  143. if (!formItemData.init) {
  144. formItemData.init = formItemData.options[0].key;
  145. }
  146. var hasInit = false;
  147. for (var i = 0; i < formItemData.options.length; i++) {
  148. var option = formItemData.options[i];
  149. if (option.key === formItemData.init) {
  150. hasInit = true;
  151. }
  152. if (disables && disables.indexOf(option.key) !== -1) {
  153. option.disabled = true;
  154. }
  155. }
  156. if (!hasInit) {
  157. return "form item ".concat(field, " init value must be in options");
  158. }
  159. }
  160. if (formItemData.depend && formItemData.reCheckField) {
  161. return "form item ".concat(field, " has depend and reCheckField, but depend and reCheckField can not exist at the same time");
  162. }
  163. if (formItemData.depend) {
  164. if (!object[formItemData.depend]) {
  165. return "form item ".concat(field, " depend field ").concat(formItemData.depend, " but the field not exist");
  166. }
  167. if (!object[formItemData.depend].options) {
  168. return "form item ".concat(field, " depend field ").concat(formItemData.depend, " has no options");
  169. }
  170. var hasCheckField = false;
  171. for (var _i = 0; _i < object[formItemData.depend].options.length; _i++) {
  172. var _option = object[formItemData.depend].options[_i];
  173. if (_option.checkField) {
  174. hasCheckField = true;
  175. checkFieldStr = _option.checkField;
  176. break;
  177. }
  178. }
  179. if (!hasCheckField) {
  180. return "form item ".concat(field, " depend field ").concat(formItemData.depend, " has no checkField");
  181. }
  182. }
  183. if (formItemData.reCheckField) {
  184. checkFieldStr = formItemData.reCheckField;
  185. }
  186. if (isMustMatchRule) {
  187. if (fieldCheck.getRuleItem(checkFieldStr)) {
  188. return "form item ".concat(field, " has no rules");
  189. }
  190. }
  191. return '';
  192. }
  193. }, {
  194. key: "initFormItemData",
  195. value: function initFormItemData(formObject) {
  196. var keys = Object.keys(formObject);
  197. for (var i = 0; i < keys.length; i++) {
  198. var key = keys[i];
  199. formObject[key].val = formObject[key].init;
  200. formObject[key].msg = '';
  201. formObject[key].state = FormData.formState_default;
  202. formObject[key].showText = '';
  203. }
  204. }
  205. }]);
  206. return FormItem;
  207. }();
  208. var _default = exports["default"] = FormItem;