|
|
@@ -1864,6 +1864,56 @@ class CalcProgram {
|
|
|
if (treeNode.changed && !changedArr.includes(treeNode)) changedArr.push(treeNode);
|
|
|
};
|
|
|
|
|
|
+ innerCalcForFTRation(treeNode, tender = tenderTypes.ttCalc){ // 用于分摊定额计算:只有普通定额和量价类。
|
|
|
+ let me = this;
|
|
|
+ let fnArr = [];
|
|
|
+ calcTools.getGLJList(treeNode, true);
|
|
|
+
|
|
|
+ // 量价、工料机类型的定额要求市场合价
|
|
|
+ if (treeNode.data.type == rationType.volumePrice){
|
|
|
+ treeNode.data.totalPrice = (treeNode.data.unitPrice * treeNode.data.quantity).toDecimal(decimalObj.ration.totalPrice);
|
|
|
+ };
|
|
|
+
|
|
|
+ let template = me.compiledTemplates[treeNode.data.programID];
|
|
|
+ treeNode.data.calcTemplate = template;
|
|
|
+
|
|
|
+ if (treeNode && template && template.hasCompiled) {//2018-08-27 空行的时候,取费专业为空,template也为空,加入template非空判断
|
|
|
+ let $CE = executeObj;
|
|
|
+ $CE.treeNode = treeNode;
|
|
|
+ $CE.template = template;
|
|
|
+
|
|
|
+ calcTools.initFees(treeNode);
|
|
|
+
|
|
|
+ for (let idx of template.compiledSeq) {
|
|
|
+ let calcItem = template.calcItems[idx];
|
|
|
+ $CE.tempCalcItem = calcItem;
|
|
|
+ let feeRate = 100; // 100%
|
|
|
+ if (calcItem.feeRate != undefined)
|
|
|
+ feeRate = parseFloat(calcItem.feeRate).toDecimal(decimalObj.feeRate);
|
|
|
+
|
|
|
+ let tf = (eval(calcItem.compiledExpr) * feeRate * 0.01).toDecimal(decimalObj.process);
|
|
|
+ calcItem.totalFee = tf.toDecimal(decimalObj.decimal('totalPrice', treeNode));
|
|
|
+ let nodeQ = calcTools.uiNodeQty(treeNode) ? calcTools.uiNodeQty(treeNode) : 1;
|
|
|
+ calcItem.unitFee = (tf / nodeQ).toDecimal(decimalObj.decimal('unitPrice', treeNode));
|
|
|
+
|
|
|
+ if (tender == tenderTypes.ttCalc) {
|
|
|
+ let tExpr = analyzer.getCompiledTenderExpr(calcItem.compiledExpr);
|
|
|
+ calcItem.tenderUnitFee = (eval(tExpr) * feeRate * 0.01).toDecimal(decimalObj.decimal('unitPrice', treeNode));
|
|
|
+ calcItem.tenderTotalFee = (calcItem.tenderUnitFee * treeNode.data.tenderQuantity).toDecimal(decimalObj.decimal('totalPrice', treeNode));
|
|
|
+ };
|
|
|
+
|
|
|
+ if (calcItem.fieldName) {
|
|
|
+ fnArr.push(calcItem.fieldName);
|
|
|
+ calcTools.checkFeeField(treeNode, calcItem);
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ if (tender == tenderTypes.ttReverseRation || tender == tenderTypes.ttReverseGLJ)
|
|
|
+ this.calcTenderReverse(treeNode, tender);
|
|
|
+ deleteUselessFees(treeNode, fnArr);
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
// 存储、刷新零散的多个结点。
|
|
|
saveNodes(treeNodes, callback){
|
|
|
if (treeNodes.length < 1) {
|