maycur-business
Version:
maycur business react components of web
420 lines (340 loc) • 13.7 kB
JavaScript
;
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;