UNPKG

maycur-business

Version:

maycur business react components of web

210 lines (172 loc) 6.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slimLodash = _interopRequireDefault(require("../utils/slimLodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * 生成公式字段的公式规则 */ var applicationDetailHandle = function applicationDetailHandle(value) { var varValue = 0; if (value) { if (value.consumeDetails) { var arrayValue = value.consumeDetails; if (_slimLodash["default"].isArray(arrayValue)) { _slimLodash["default"].forEach(arrayValue, function (item) { if (item.amount !== undefined) { varValue += Number(item.amount.amount); } }); } } else { varValue = value.appliedAmount; } } return varValue; }; var applicationExpenseHandle = function applicationExpenseHandle(value) { var varValue = 0; _slimLodash["default"].forEach(value, function (item) { if (item.approvedAmount !== undefined) { varValue += Number(item.approvedAmount.amount); } }); return varValue; }; var expenseListHandle = function expenseListHandle(value) { var varValue = 0; _slimLodash["default"].forEach(value, function (item) { if (item.approvedAmount !== undefined) { varValue += Number(item.approvedAmount.amount); } }); return varValue; }; var DetailTableExpenseListHandle = function DetailTableExpenseListHandle(value) { return value ? value.reduce(function (total, _ref) { var expenseList = _ref.expenseList; return total + (expenseList || []).reduce(function (sum, _ref2) { var consumeAmount = _ref2.consumeAmount; return sum + consumeAmount.amount || 0; }, 0); }, 0) : 0; }; var deductionListHandle = function deductionListHandle(value) { var varValue = 0; _slimLodash["default"].forEach(value, function (item) { if (item.deductionAmount !== undefined) { varValue += Number(item.deductionAmount.amount); } }); return varValue; }; var recordDeductionListHandle = function recordDeductionListHandle(value) { var varValue = 0; _slimLodash["default"].forEach(value, function (item) { if (item.recordDeductionAmount !== undefined) { varValue += Number(item.recordDeductionAmount.amount); } }); return varValue; }; var moneyInputHandle = function moneyInputHandle(value) { var varValue = value; if (varValue && _slimLodash["default"].isObject(varValue)) { varValue = varValue.amount; } return varValue; }; function genFormulaFieldFormula(formFields) { if (!_slimLodash["default"].isEmpty(formFields)) { var result = []; var variableList = []; _slimLodash["default"].forEach(formFields, function (field) { var info = { name: field.identifier }; if (field.identifier === 'applicationDetail') { info.handle = applicationDetailHandle; } else if (field.identifier === 'expenseList') { info.handle = expenseListHandle; } else if (field.identifier === 'detailTableExpenseList') { info.handle = DetailTableExpenseListHandle; } else if (field.identifier === 'loanDeductionList') { info.handle = deductionListHandle; } else if (field.type === 'AmountInput') { info.handle = moneyInputHandle; } else if (field.identifier === 'deductionList') { info.handle = recordDeductionListHandle; } else if (field.identifier === 'applicationExpense') { info.handle = applicationExpenseHandle; } variableList.push(info); }); _slimLodash["default"].forEach(formFields, function (field) { if (!_slimLodash["default"].isEmpty(field.formulaDataRelations)) { var formula = ''; _slimLodash["default"].forEach(field.formulaDataRelations, function (formulaItem) { formula = formula.concat(formulaItem.value); }); _slimLodash["default"].forEach(field.formulaDataRelations, function (formulaItem) { if (formulaItem.category === 'field') { result.push({ formula: formula, targetField: field.identifier, referField: formulaItem.value, privateParser: false }); var matchVariable = _slimLodash["default"].find(variableList, function (t) { return t.name === formulaItem.value; }); /* 正常公式都需要匹配默认值 */ if (matchVariable) { matchVariable.defaultValue = 0; } } else if (['formField', 'fromField'].includes(formulaItem.category)) { var referField = formulaItem.parentValue; result.push({ formula: formula, referField: referField, targetField: field.identifier, privateParser: false }); if (!_slimLodash["default"].find(variableList, function (t) { return t.name === formulaItem.value; })) { var variable = { name: formulaItem.value, parent: referField, defaultValue: 0, handle: function handle(arrayValue) { // NOTE 公式中的金额变量,目前都会带上币种的信息,所以不能简单的累加,需要过滤出金额变量的信息,通过amount属性来进行累加 var varValue = 0; if (_slimLodash["default"].isArray(arrayValue)) { _slimLodash["default"].forEach(arrayValue, function (item) { if (item[formulaItem.value] !== undefined) { if (_slimLodash["default"].isObject(item[formulaItem.value])) { varValue += Number(item[formulaItem.value].amount); } else { varValue += Number(item[formulaItem.value]); } } }); } return varValue; } }; variableList.push(variable); } } }); } }); return { formula: result, variableList: variableList }; } } var _default = genFormulaFieldFormula; exports["default"] = _default;