ソースを参照

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/ConstructionCost

vian 5 年 前
コミット
7f00f924ca

+ 6 - 5
modules/main/models/ration.js

@@ -24,11 +24,12 @@ class rationModel extends baseModel {
             if (!err) {
                 if (isReport){  // 调价中间件机制
                     for (let i = 0; i < datas.length; i++) {
-                        if (datas[i]._doc.rationQuantityCoe !== null && datas[i]._doc.rationQuantityCoe !== undefined && datas[i]._doc.rationQuantityCoe !== '' && datas[i]._doc.rationQuantityCoe !== 0) {
-                            //如有调价,则需要改动
-                            datas[i]._doc.quantity = parseFloat(datas[i]._doc.quantity) * parseFloat(datas[i]._doc.rationQuantityCoe);
-                            datas[i]._doc.contain = parseFloat(datas[i]._doc.contain) * parseFloat(datas[i]._doc.rationQuantityCoe);
-                        }
+                        let coe = datas[i]._doc.rationQuantityCoe;
+                        if ((!coe) || (coe == '0')) coe = 1;
+                        //如有调价,则需要改动
+                        datas[i]._doc.quantity = parseFloat(datas[i]._doc.quantity) * parseFloat(coe);
+                        datas[i]._doc.contain = parseFloat(datas[i]._doc.contain) * parseFloat(coe);
+
                         let fees = datas[i]._doc.fees;
                         if (fees){
                             for (let i = 0; i < fees.length; i++) {

+ 1 - 0
modules/ration_glj/facade/ration_glj_facade.js

@@ -965,6 +965,7 @@ function getData(projectID, callback, isReport) {
                                     };
 
                                 };
+                                if ((!coe) || (coe == '0')) coe = 1;
                                 glj.quantity = glj.quantity * coe;
                             }
                         }

+ 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 = fieldNameArr ? fieldNameArr : [];
+            // 这两个默认是要保留的
+            if (!keeps.includes('common')) keeps.push('common');
+            if (!keeps.includes('estimate')) keeps.push('estimate');
+
+            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;