浏览代码

新项目无法调价问题。

chenshilong 5 年之前
父节点
当前提交
20e4c2fa5b
共有 1 个文件被更改,包括 14 次插入24 次删除
  1. 14 24
      web/building_saas/main/js/models/calc_program.js

+ 14 - 24
web/building_saas/main/js/models/calc_program.js

@@ -1818,31 +1818,21 @@ class CalcProgram {
             };
         };
 
-        /*删掉多余的费用。例如:从其它计算方式(有很多费)切换到公式计算方式(只需要common费),多出来的费要删除。
-        fieldNameArr 值取自:遍历treeNode的计算规则,取有绑定的字段名。这些字段名以外的fee是因旧计算多出来的,需要删除。 */
+        // 删掉多余的费用。例如:①切换取费类别 ②从其它计算方式(有很多费)切换到公式计算方式(只需要common费),多出来的费要删除。
+        // 如果指定了保留字段,则按用户指定的来。如果没指定保留字段,则按默认的来:总造价清单只留common, estimate两个费用类别。其它公式清单只留common。
         function deleteUselessFees(treeNode, fieldNameArr){
-            if (fieldNameArr){   // 用于计算程序没有绑定的费用类别,不要同步到清单,而清单因为以前计算过该类别又有值,需删除。如切换取费类别,旧费要清掉。
-                for (var i = 0; i < treeNode.data.fees.length; i++) {
-                    let fee = treeNode.data.fees[i];
-                    if ((fee.fieldName != 'estimate') && !fieldNameArr.includes(fee.fieldName)){
-                        treeNode.data.fees.splice(i, 1);
-                        delete treeNode.data.feesIndex[fee.fieldName];
-                        treeNode.changed = true;
-                    }
+            if (!(treeNode.data.fees && treeNode.data.fees.length > 0)) return;
+            // 这两个默认是要保留的
+            let keeps = ['common', 'estimate'];   // if (calcTools.isTotalCostBill(treeNode)) keeps.push('estimate');
+            if (fieldNameArr)
+                keeps = keeps.concat(fieldNameArr);
+
+            for (let i = 0; i < treeNode.data.fees.length; i++) {
+                if (!keeps.includes(treeNode.data.fees[i].fieldName)) {
+                    delete treeNode.data.feesIndex[treeNode.data.fees[i].fieldName];
+                    treeNode.data.fees.splice(i, 1);
+                    treeNode.changed = true;
                 }
-            }
-            else{   // 总造价清单只留common, estimate两个费用类别。其它公式清单只留common。
-                let reserveArr = calcTools.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 (!reserveArr.includes(feesArr[i].fieldName)) {
-                            delete treeNode.data.feesIndex[feesArr[i].fieldName];
-                            feesArr.splice(i, 1);
-                            treeNode.changed = true;
-                        }
-                    }
-                };
             };
         };
 
@@ -1928,7 +1918,7 @@ class CalcProgram {
         else if (treeNode.calcType == treeNodeCalcType.ctNull){
             delete treeNode.data.gljList;
             deleteProperties(treeNode, ['calcBase', 'calcBaseValue', 'tenderCalcBaseValue', 'programID']);
-            deleteUselessFees(treeNode, ['common', 'rationCommon']);
+            deleteUselessFees(treeNode, ['rationCommon']);
             // 不能直接删除该属性,否则无法冲掉库中已存储的值。下同。
 /*            if (treeNode.data.calcBase){
                 treeNode.data.calcBase = null;