UNPKG

maycur-business

Version:

maycur business react components of web

420 lines (340 loc) 13.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _i18next = require("i18next"); var _asyncValidator = _interopRequireDefault(require("async-validator")); var _lodash = _interopRequireDefault(require("lodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var ruleMap = { required: 'required' }; //给schema增加addRule规则 _asyncValidator["default"].prototype.addRule = function (name, rule) { if (name && rule && !_lodash["default"].isEmpty(rule)) { this.rules[name] = Array.isArray(rule) ? rule : [rule]; } }; var customRules = { number: function number(rule, value, callback, source, options) { var precision; var errors = []; if (rule.required) { if (!value) { errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } } if (rule.customArgs) { precision = rule.customArgs.precision; } var _value = _lodash["default"].isObject(value) ? value.number : value; if (_value && isNaN(Number(_value))) { errors.push((0, _i18next.t)('preload.FormChef_validNumberFormat'), rule.fullField); } else if (_value && precision >= 0) { var splitValue = String(_value).split('.'); if (splitValue[1] && splitValue[1].length > precision) { var message = precision === 0 ? (0, _i18next.t)('preload.FormChef_supportInt') : (0, _i18next.t)('preload.FormChef_noSupportSomeNumber', { count: precision }); errors.push(message, rule.fullField); } } callback(errors); }, pairRequire: function pairRequire(rule, value, callback, source, options) { var errors = []; if (value !== undefined && value !== null) { var validResult = true; _lodash["default"].forEach(value, function (v, k) { if (v === undefined || v === null) { validResult = false; } }); if (!validResult) errors.push((0, _i18next.t)('preload.FormChef_wholeDataInfo'), rule.fullField); } else { errors.push((0, _i18next.t)('preload.FormChef_wholeDataInfo'), rule.fullField); } callback(errors); }, /* 每刻城市必填行校验 */ mkCityRequire: function mkCityRequire(rule, value, callback, source, options) { var errors = []; var _options$formFields = options.formFields, formFields = _options$formFields === void 0 ? {} : _options$formFields; var fieldInfo = _lodash["default"].find(formFields, { identifier: rule.fullField }); var selectionModule = fieldInfo ? fieldInfo.property.selectionModule : 'SINGLE'; if (value !== undefined && value !== null) { var singleValue = value.location; var pairValue = value.cityPair; var validResult = true; if (selectionModule === 'SINGLE' && singleValue) { validResult = true; } else if (selectionModule === 'PAIR' && pairValue) { _lodash["default"].forEach(pairValue, function (v, k) { if (v === undefined || v === null) { validResult = false; } }); } else { validResult = false; } if (!validResult) errors.push((0, _i18next.t)('preload.FormChef_wholeDataInfo'), rule.fullField); } else { errors.push((0, _i18next.t)('preload.FormChef_wholeDataInfo'), rule.fullField); } callback(errors); }, /* 每刻日期必填行校验 */ mkDateRequire: function mkDateRequire(rule, value, callback, source, options) { var _options$formFields2 = options.formFields, formFields = _options$formFields2 === void 0 ? {} : _options$formFields2; var fieldInfo = _lodash["default"].find(formFields, { identifier: rule.fullField }); var selectionModule = fieldInfo ? fieldInfo.property.selectionModule : 'SINGLE'; var errors = []; if (value !== undefined && value !== null) { var singleValue = value.currentTime; var pairValue = value.timeRange; var validResult = true; if (selectionModule === 'SINGLE' && singleValue) { validResult = true; } else if (selectionModule === 'PAIR' && pairValue) { _lodash["default"].forEach(pairValue, function (v, k) { if (v === undefined || v === null) { validResult = false; } }); } else { validResult = false; } if (!validResult) errors.push((0, _i18next.t)('preload.FormChef_wholeDataInfo'), rule.fullField); } else { errors.push((0, _i18next.t)('preload.FormChef_wholeDataInfo'), rule.fullField); } callback(errors); }, /* 每刻发票必填行校验 */ mkInvoiceRequire: function mkInvoiceRequire(rule, value, callback, source, options) { var _options$formFields3 = options.formFields, formFields = _options$formFields3 === void 0 ? {} : _options$formFields3; var fieldInfo = _lodash["default"].find(formFields, { identifier: rule.fullField }); var required = fieldInfo && fieldInfo.property.required; var errors = []; if (value !== undefined && value !== null) { var validResult = true; if (_lodash["default"].isEmpty(value.list) && value.invoiceStatus !== 1 && required) { validResult = false; } else if (value.invoiceStatus === 1 && !value.invoiceExpectSubmitTime) { validResult = false; } if (!validResult) errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } else if (required) { errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } callback(errors); }, /* 收款账户校验 */ mkAccountRequire: function mkAccountRequire(rule, value, callback, source, options) { var _options$formFields4 = options.formFields, formFields = _options$formFields4 === void 0 ? {} : _options$formFields4; var fieldInfo = _lodash["default"].find(formFields, { identifier: rule.fullField }); var required = fieldInfo && fieldInfo.property.required; var errors = []; if (value !== undefined && value !== null) { var validResult = true; if (_lodash["default"].isEmpty(value.bankAcctName) && required) { validResult = false; } if (!validResult) errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } else if (required) { errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } callback(errors); }, mkAssociationRequire: function mkAssociationRequire(rule, value, callback, source, options) { var _options$formFields5 = options.formFields, formFields = _options$formFields5 === void 0 ? {} : _options$formFields5; var fieldInfo = _lodash["default"].find(formFields, { identifier: rule.fullField }); var required = fieldInfo && fieldInfo.property.required; var errors = []; if (value) { if (required && _lodash["default"].isEmpty(value.value)) { errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } } else { if (required) errors.push((0, _i18next.t)('preload.FormChef_required'), rule.fullField); } callback(errors); }, /* 考勤校验 */ mkAttendanceRequire: function mkAttendanceRequire(that, rule, value, callback, source, options) { var errors = that.fieldInstance[rule.fullField].fieldRef.attendanceRef.validate(); if (errors.length) { callback(['', rule.fullField]); } callback(); }, mkApplicationDetailRequire: function mkApplicationDetailRequire(rule, value, callback, source, options) { if (rule && !rule.required) { return callback(); } if (!value) { callback((0, _i18next.t)('preload.FormChef_required')); // - requireItem } else if (Array.isArray(value.consumeDetails) && _lodash["default"].isEmpty(value.consumeDetails)) { callback((0, _i18next.t)('preload.FormChef_required')); } else if (value.applicationPattern === 'CONSUME_DETAIL' && !isApplDetailListValid(value.consumeDetails)) { callback((0, _i18next.t)('preload.FormChef_required')); // - expenseTipWarn } else { callback(); } }, amountRequire: function amountRequire(rule, value, callback, source, options) { if (rule && !rule.required) { return callback(); } if (!value) { callback((0, _i18next.t)('preload.FormChef_required')); } else if (_lodash["default"].isObject(value) && (_lodash["default"].isNaN(value.amount) || _lodash["default"].isNull(value.amount) || _lodash["default"].isUndefined(value.amount))) { callback((0, _i18next.t)('preload.FormChef_required')); } else { callback(); } }, /* 收款人以及收款人类型校验 */ collectionTypeStaffRequire: function collectionTypeStaffRequire(that, rule, value, callback, source, options) { var errors = that.fieldInstance[rule.fullField].fieldRef.CollectionTypeStaffRef.validate(); if (errors.length) { callback(['', rule.fullField]); } callback(); }, //收款方式以及承兑汇票号校验 collectionTypeRequire: function collectionTypeRequire(that, rule, value, callback, source, options) { var errors = that.fieldInstance[rule.fullField].fieldRef.CollectionTypeRef.validate(); if (errors.length) { callback(['', rule.fullField]); } callback(); }, //金额以及比例校验 amountRatioRequire: function amountRatioRequire(that, rule, value, callback, source, options) { var errors = that.fieldInstance[rule.fullField].fieldRef.AmountRatioRef.validate(); if (errors.length) { callback(['', rule.fullField]); } callback(); } }; function isApplDetailListValid() { var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var bool = true; if (list.length === 0) { bool = false; } var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _t = _step.value; if (!_t.expenseTypeCode || !_t.amount) { bool = false; break; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator["return"] != null) { _iterator["return"](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return bool; } /* 生成validator */ function generateValidator(formFields, validateMessages) { var _this = this; var descriptor = {}; if (!_lodash["default"].isEmpty(formFields)) { _lodash["default"].forEach(formFields, function (field, index) { if (field.type === 'SplitSpace') return; var rule = {}; _lodash["default"].each(field.property, function (value, key) { var mapKey = ruleMap[key]; if (mapKey) { rule[mapKey] = value; } }); if (field.type === 'NumberInput') { rule.validator = customRules.number; rule.customArgs = { precision: field.property.valueFormat || 0 }; } else if (['DateRangeInput', 'StayTimeInput', 'CityPairInput'].includes(field.type)) { if (field.property.required) { rule.validator = customRules.pairRequire; } } else if (field.type === 'CityInput') { if (field.property.required) { rule.validator = customRules.mkCityRequire; } } else if (field.type === 'DateTimeInput') { if (field.property.required) { rule.validator = customRules.mkDateRequire; } } else if (field.type === 'InvoiceInput') { rule.validator = customRules.mkInvoiceRequire; } else if (field.type === 'AccountInput') { rule.validator = customRules.mkAccountRequire; } else if (field.type === 'AssociationInput') { rule.validator = customRules.mkAssociationRequire; } else if (field.type === 'AttendanceInput') { rule.validator = function (rule, value, callback, source, options) { return customRules.mkAttendanceRequire(_this, rule, value, callback, source, options); }; } else if (field.type === 'ApplicationDetailListInput') { rule.validator = customRules.mkApplicationDetailRequire; } else if (field.type === 'AmountInput') { rule.validator = customRules.amountRequire; } else if (field.type === 'CollectionTypeStaffInput') { rule.validator = function (rule, value, callback, source, options) { return customRules.collectionTypeStaffRequire(_this, rule, value, callback, source, options); }; } else if (field.type === 'CollectionTypeInput') { rule.validator = function (rule, value, callback, source, options) { return customRules.collectionTypeRequire(_this, rule, value, callback, source, options); }; } else if (field.type === 'AmountRatioInput') { rule.validator = function (rule, value, callback, source, options) { return customRules.amountRatioRequire(_this, rule, value, callback, source, options); }; } if (!_lodash["default"].isEmpty(rule)) { descriptor[field.identifier] = rule; } }); var validator = new _asyncValidator["default"](descriptor); if (validateMessages) { validator.messages(validateMessages); } return validator; } } var _default = generateValidator; exports["default"] = _default;