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