chenshilong 7 年之前
父節點
當前提交
d42fcdb361
共有 1 個文件被更改,包括 9 次插入10 次删除
  1. 9 10
      web/building_saas/main/js/models/calc_program.js

+ 9 - 10
web/building_saas/main/js/models/calc_program.js

@@ -1,9 +1,6 @@
 /**
  * Created by CSL on 2017-07-19.
  * 计算程序。所有定额、清单、父清单的计算都从此入。
- *  dispExpr: F8*(L-1); expression: "@('8') * (L-1)";
- *  说明:F后跟行号,L替换人工系数值,@后跟ID。用到L的规则必须有labourCoeID属性(反过来不要求),
- *  用到费率的规则必须有feeRateID属性,当有该属性时,会自动显示费率值。
  */
 
 /*  新版GLD 取消了默认清单模板,所以这里废弃。先留着,预防不时之需。
@@ -795,7 +792,7 @@ class CalcProgram {
         };
 
         // 计算暂估费用
-        function estimateFee(treeNode){
+        function calcEstimateFee(treeNode){
             let sumU = 0, sumT = 0;
 
             if (treeNodeTools.isTotalCostBill(treeNode)){
@@ -876,12 +873,13 @@ class CalcProgram {
             treeNodeTools.checkFeeField(treeNode, {'fieldName': 'estimate', 'unitFee': sumU, 'totalFee': sumT});
         };
 
-        // 删掉多余的费用。例如:从其它计算方式切换到公式计算方式,会多出其它的费(不光是common、estimate)
+        // 删掉多余的费用。例如:从其它计算方式切换到公式计算方式,会多出其它的费(不光是common)
         function deleteUselessFees(treeNode){
+            let reserveArr = treeNodeTools.isTotalCostBill(treeNode)? ['common', 'estimate']:['common'];
             if (treeNode.data.fees && treeNode.data.fees.length > 0){
                 let feesArr = treeNode.data.fees;
                 for (let i = 0; i < feesArr.length; i++) {
-                    if (feesArr[i].fieldName != 'common' && feesArr[i].fieldName != 'estimate') {
+                    if (!reserveArr.includes(feesArr[i].fieldName)) {
                         delete treeNode.data.feesIndex[feesArr[i].fieldName];
                         feesArr.splice(i, 1);
                         treeNode.changed = true;
@@ -997,9 +995,10 @@ class CalcProgram {
             deleteUselessFees(treeNode);
             treeNodeTools.checkFeeField(treeNode, {'fieldName': 'common', 'unitFee': uf, 'totalFee': tf});
 
-            // 如果是总造价清单还要做单项工程、建设项目金额汇总
+            // 总造价清单还要做单项工程、建设项目的四大项金额汇总
             if (treeNodeTools.isTotalCostBill(treeNode)){
-                estimateFee(treeNode);
+                // 公式叶子清单没有暂估费,但总造价清单除外。
+                calcEstimateFee(treeNode);
                 treeNodeTools.initSummaryFee(treeNode);
                 treeNode.data.summaryFees.totalFee = tf;
                 treeNode.data.summaryFees.estimateFee = treeNode.data.feesIndex.estimate.totalFee;
@@ -1026,7 +1025,7 @@ class CalcProgram {
                 else{
                     treeNode.data.gljList = me.project.ration_glj.getGljArrByRation(treeNode.data.ID);
                     // 计算程序里没有暂估费的计算规则,会漏掉,所以这里要专门算。
-                    estimateFee(treeNode);
+                    calcEstimateFee(treeNode);
                 };
 
                 if (treeNode.data.programID == undefined){
@@ -1042,7 +1041,7 @@ class CalcProgram {
                 }
 
                 // 叶子清单自己的计算程序计算,其暂估费也要汇总算。
-                estimateFee(treeNode);
+                calcEstimateFee(treeNode);
             };
 
             let template = me.compiledTemplates[treeNode.data.programID];