Browse Source

造价书,删除、升降级,应实时计算

MaiXinRong 7 years ago
parent
commit
6685c735a1

+ 7 - 1
web/building_saas/main/js/calc/bills_calc.js

@@ -323,6 +323,12 @@ class BillsCalcHelper {
             this.setTotalFee(node, field, value, isIncre);
         }
     };
+    clearFeeFields(node, fields, isIncre) {
+        for (let field of fields) {
+            node.data.feesIndex[field.type].unitFee = 0;
+            this.setTotalFee(node, field, 0, isIncre);
+        }
+    }
     calcNode(node, isIncre) {
         if (node.source.children.length > 0) {
             this.calcParent(node, this.project.calcFields, isIncre);
@@ -334,7 +340,7 @@ class BillsCalcHelper {
                     this.calcVolumePriceLeaf(node, this.project.calcFields, isIncre);
                 }
             } else {
-
+                this.clearFeeFields(node, this.project.calcFields, isIncre);
             }
         }
     };

+ 31 - 23
web/building_saas/main/js/views/project_view.js

@@ -425,7 +425,7 @@ var projectObj = {
                         return !selected;
                     },
                     callback: function () {
-                        var selected = controller.tree.selected;
+                        var selected = controller.tree.selected, parent = selected.parent;
                         if (selected) {
                             if (selected.sourceType === project.Bills.getSourceType()) {
                                 project.Bills.deleteBills(selected.source);
@@ -437,6 +437,7 @@ var projectObj = {
                                 project.VolumePrice.delete(selected.source);
                                 controller.delete();
                             };
+                            projectObj.converseCalculateBills(parent);
                         }
                     }
                 },
@@ -452,16 +453,18 @@ var projectObj = {
     },
     // 计算node及node的所有父项
     converseCalculateBills: function (node) {
-        let calc = new BillsCalcHelper(this.project);
-        calc.calcNode(node, true);
-        let cur = node, nodes = [];
-        while (cur) {
-            nodes.push(cur);
-            cur = cur.parent;
+        if (node) {
+            let calc = new BillsCalcHelper(this.project);
+            calc.calcNode(node, true);
+            let cur = node, nodes = [];
+            while (cur) {
+                nodes.push(cur);
+                cur = cur.parent;
+            }
+            this.mainController.refreshTreeNode(nodes, false);
+            this.project.Bills.updateNodes(nodes, true);
+            calc = null;
         }
-        this.mainController.refreshTreeNode(nodes, false);
-        this.project.Bills.updateNodes(nodes, true);
-        calc = null;
     },
     // 计算全部清单
     calculateAll: function () {
@@ -487,7 +490,7 @@ $('#insert').click(function () {
 });
 $('#delete').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
-    var selected = controller.tree.selected;
+    var selected = controller.tree.selected, parent = selected.parent;
 
     if (selected) {
         if (selected.sourceType === project.Bills.getSourceType()) {
@@ -500,15 +503,17 @@ $('#delete').click(function () {
             project.VolumePrice.delete(selected.source);
             controller.delete();
         };
+        projectObj.converseCalculateBills(parent);
     }
 });
 $('#upLevel').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
-    var selected = controller.tree.selected;
+    var selected = controller.tree.selected, orgParent = selected.parent;
 
     if (selected && selected.sourceType === project.Bills.getSourceType()) {
         project.Bills.upLevelBills(selected.source);
         controller.upLevel();
+        projectObj.converseCalculateBills(orgParent);
     }
 });
 $('#downLevel').click(function () {
@@ -516,12 +521,13 @@ $('#downLevel').click(function () {
     var selected = controller.tree.selected;
     if (selected && selected.sourceType === project.Bills.getSourceType()) {
         project.Bills.downLevelBills(selected.source);
-        controller.downLevel();
+        controller.downLevel();       
+        projectObj.converseCalculateBills(selected.parent);
     }
 });
 $('#upMove').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
-    var selected = controller.tree.selected, pre, preSerialNo;
+    var selected = controller.tree.selected, pre = selected.preSibling, preSerialNo;
 
     if (selected.sourceType === project.Bills.getSourceType()) {
         project.Bills.upMoveBills(selected.source);
@@ -538,15 +544,17 @@ $('#downMove').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
     var selected = controller.tree.selected, next, nextSerialNo;
 
-    if (selected.sourceType === project.Bills.getSourceType()) {
-        project.Bills.downMoveBills(selected.source);
-        controller.downMove();
-    } else if (selected.sourceType === project.Ration.getSourceType()) {
-        project.Ration.changePos(selected.source, selected.nextSibling.source);
-        controller.downMove();
-    } else if (selected.sourceType === project.VolumePrice.getSourceType()) {
-        project.VolumePrice.changePos(selected.source, selected.nextSibling.source);
-        controller.downMove();
+    if (selected) {
+        if (selected.sourceType === project.Bills.getSourceType()) {
+            project.Bills.downMoveBills(selected.source);
+            controller.downMove();
+        } else if (selected.sourceType === project.Ration.getSourceType()) {
+            project.Ration.changePos(selected.source, selected.nextSibling.source);
+            controller.downMove();
+        } else if (selected.sourceType === project.VolumePrice.getSourceType()) {
+            project.VolumePrice.changePos(selected.source, selected.nextSibling.source);
+            controller.downMove();
+        }
     }
 });