Chenshilong 7 gadi atpakaļ
vecāks
revīzija
e8ceafd645

+ 4 - 5
public/calc_util.js

@@ -238,7 +238,6 @@ class Calculation {
         me.compiledFeeTypeNames = [];
         me.compiledCalcBases = {};
         me.saveForReports = [];
-        me.changed = false;
 
         let private_compile_feeRateFile = function() {
             if (feeRates) {
@@ -400,7 +399,7 @@ class Calculation {
             if (!$treeNode.data.fees) {
                 $treeNode.data.fees = [];
                 $treeNode.data.feesIndex = {};
-                me.changed = true;
+                $treeNode.changed = true;
             };
 
             for (let idx of template.compiledSeq) {
@@ -427,17 +426,17 @@ class Calculation {
                         };
                         $treeNode.data.fees.push(fee);
                         $treeNode.data.feesIndex[calcItem.fieldName] = fee;
-                        me.changed = true;
+                        $treeNode.changed = true;
                     }
                     else{
                         if ($treeNode.data.feesIndex[calcItem.fieldName].unitFee != calcItem.unitFee){
                             $treeNode.data.feesIndex[calcItem.fieldName].unitFee = calcItem.unitFee;
-                            me.changed = true;
+                            $treeNode.changed = true;
                         };
 
                         if ($treeNode.data.feesIndex[calcItem.fieldName].totalFee != calcItem.totalFee){
                             $treeNode.data.feesIndex[calcItem.fieldName].totalFee = calcItem.totalFee;
-                            me.changed = true;
+                            $treeNode.changed = true;
                         };
                     }
                 };

+ 49 - 67
web/building_saas/main/js/models/calc_program.js

@@ -52,6 +52,7 @@ class CalcProgram {
     };
 
     calculate(treeNode){
+        let me = this;
         if (treeNode.sourceType === this.project.Ration.getSourceType()) {
             treeNode.data.gljList = this.project.ration_glj.getGljArrByRation(treeNode.data.ID);
         }
@@ -63,10 +64,11 @@ class CalcProgram {
         this.calc.calculate(treeNode);
 
         // 存储、刷新本结点、所有父结点
-        if (this.calc.changed) {
+        if (treeNode.changed) {
             me.saveAndCalcParents(treeNode);
-            this.calc.changed = false;
+            delete treeNode.changed;
         };
+
     };
 
     saveAndCalcParents(treeNode) {
@@ -82,16 +84,46 @@ class CalcProgram {
         projectObj.mainController.refreshTreeNode([treeNode]);
     };
 
+
+    initFees(treeNode){
+        if (!treeNode.data.fees) {
+            treeNode.data.fees = [];
+            treeNode.data.feesIndex = {};
+            treeNode.changed = true;
+        };
+    };
+
+    checkFee(treeNode, ftObj){
+        if (!treeNode.data.feesIndex[ftObj.type]){
+            let fee = {
+                'fieldName': ftObj.type,
+                'unitFee': ftObj.unitFee,
+                'totalFee': ftObj.totalFee,
+                'tenderUnitFee': 0,
+                'tenderTotalFee': 0
+            };
+            treeNode.data.fees.push(fee);
+            treeNode.data.feesIndex[ftObj.type] = fee;
+            treeNode.changed = true;
+        }
+        else{
+            if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){
+                treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee;
+                treeNode.changed = true;
+            };
+
+            if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){
+                treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee;
+                treeNode.changed = true;
+            };
+        };
+    };
+
     gatherRationFeeTypes(treeNode){
         let me = this;
-        let changed = false;
         let rst = [];
         if (treeNode.sourceType === this.project.Bills.getSourceType()) {
-            if (!treeNode.data.fees) {
-                treeNode.data.fees = [];
-                treeNode.data.feesIndex = {};
-                changed = true;
-            };
+            me.initFees(treeNode);
 
             let rations = this.project.Ration.getRationsByNode(treeNode);
             for (let ft of feeType) {
@@ -112,36 +144,14 @@ class CalcProgram {
                 ftObj.tenderUnitFee = tuf.toDecimal(me.digit);
                 ftObj.tenderTotalFee = ttf.toDecimal(me.digit);
 
-                if (!treeNode.data.feesIndex[ftObj.type]){
-                    let fee = {
-                        'fieldName': ftObj.type,
-                        'unitFee': ftObj.unitFee,
-                        'totalFee': ftObj.totalFee,
-                        'tenderUnitFee': 0,
-                        'tenderTotalFee': 0
-                    };
-                    treeNode.data.fees.push(fee);
-                    treeNode.data.feesIndex[ftObj.type] = fee;
-                    changed = true;
-                }
-                else{
-                    if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){
-                        treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee;
-                        changed = true;
-                    };
-
-                    if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){
-                        treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee;
-                        changed = true;
-                    };
-                };
+                me.checkFee(treeNode, ftObj);
 
                 rst.push(ftObj);
             };
 
-            if (changed) {
+            if (treeNode.changed) {
                 me.saveAndCalcParents(treeNode);
-                changed = false;
+                delete treeNode.changed;
             };
         };
         return rst;
@@ -149,14 +159,9 @@ class CalcProgram {
 
     gatherBillFeeTypes(treeNode){
         let me = this;
-        let changed = false;
         let rst = [];
         if (treeNode.sourceType === this.project.Bills.getSourceType()) {
-            if (!treeNode.data.fees) {
-                treeNode.data.fees = [];
-                treeNode.data.feesIndex = {};
-                changed = true;
-            };
+            me.initFees(treeNode);
 
             for (let ft of feeType) {
                 let ftObj = {};
@@ -176,36 +181,13 @@ class CalcProgram {
                 ftObj.tenderUnitFee = tuf.toDecimal(me.digit);
                 ftObj.tenderTotalFee = ttf.toDecimal(me.digit);
 
-                if (!treeNode.data.feesIndex[ftObj.type]){
-                    let fee = {
-                        'fieldName': ftObj.type,
-                        'unitFee': ftObj.unitFee,
-                        'totalFee': ftObj.totalFee,
-                        'tenderUnitFee': 0,
-                        'tenderTotalFee': 0
-                    };
-                    treeNode.data.fees.push(fee);
-                    treeNode.data.feesIndex[ftObj.type] = fee;
-                    changed = true;
-                }
-                else{
-                    if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){
-                        treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee;
-                        changed = true;
-                    };
-
-                    if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){
-                        treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee;
-                        changed = true;
-                    };
-                };
-
+                me.checkFee(treeNode, ftObj);
                 rst.push(ftObj);
+            };
 
-                if (changed) {
-                    me.saveAndCalcParents(treeNode);
-                    changed = false;
-                };
+            if (treeNode.changed) {
+                me.saveAndCalcParents(treeNode);
+                delete treeNode.changed;
             };
         };
         return rst;

+ 1 - 1
web/building_saas/main/js/views/calc_program_view.js

@@ -205,9 +205,9 @@ let calcProgramObj = {
             {headerName: "费用名称", headerWidth: CP_Col_Width.name, dataCode: "name", dataType: "String"},
             {headerName: "计算基数", headerWidth: CP_Col_Width.dispExprUser, dataCode: "dispExprUser", dataType: "String"},
             {headerName: "费率", headerWidth: CP_Col_Width.feeRate, dataCode: "feeRate", dataType: "Number"},   // precision: 3
-            {headerName:"费用类别", headerWidth:CP_Col_Width.displayFieldName, dataCode:"displayFieldName", dataType: "String", hAlign: "center"},
             {headerName: "单价", headerWidth: CP_Col_Width.unitFee, dataCode: "unitFee", dataType: "Number"},  // execRst
             {headerName: "合价", headerWidth: CP_Col_Width.totalFee, dataCode: "totalFee", dataType: "Number"},
+            {headerName:"费用类别", headerWidth:CP_Col_Width.displayFieldName, dataCode:"displayFieldName", dataType: "String", hAlign: "center"},
             {headerName: "基数说明", headerWidth: CP_Col_Width.statement, dataCode: "statement", dataType: "String"},
             {headerName: "备注", headerWidth: CP_Col_Width.memo, dataCode: "memo", dataType: "String"}
         ],