Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

zhongzewei 7 years ago
parent
commit
aa935a5190

+ 44 - 16
web/building_saas/main/js/models/calc_program.js

@@ -686,29 +686,57 @@ class CalcProgram {
     saveNode(treeNode, saveParents = true) {
         if (!treeNode.changed) return;
         let me = this;
-        let newDataArr = [], nodesArr = [];
-
-        me.project.beginUpdate('');
+        let nodesArr = [];
         let curNode = treeNode;
         while (curNode) {
-            if (curNode.changed){
+            if (curNode.changed){nodesArr.push(curNode)};
+            if (saveParents) curNode = curNode.parent
+            else break;
+        };
+        me.saveNodes(nodesArr);
+    };
+
+    // 待保存的树结点列表入库存储
+    saveNodes(treeNodes){
+        if (treeNodes.length < 1) return;
+
+        let me = this;
+
+        me.project.beginUpdate('');
+        for (let node of treeNodes){
+            if (node.changed){
                 let data = {
-                    ID: curNode.data.ID,
+                    ID: node.data.ID,
                     projectID: me.project.ID(),
-                    quantity: curNode.data.quantity,
-                    fees: curNode.data.fees
+                    quantity: node.data.quantity,
+                    fees: node.data.fees
                 };
-                let newDta = {'updateType': 'ut_update', 'updateData': data};
-                newDataArr.push(newDta);
-                nodesArr.push(curNode);
-                me.project.push(curNode.sourceType, newDataArr);
-            };
-            if (saveParents) curNode = curNode.parent
-            else break;
+                let newData = {'updateType': 'ut_update', 'updateData': data};
+                me.project.push(node.sourceType, [newData]);
+            }
         };
         me.project.endUpdate();
 
-        for (let node of nodesArr){delete node.changed;};
-        projectObj.mainController.refreshTreeNode(nodesArr);
+        for (let node of treeNodes){delete node.changed};
+        projectObj.mainController.refreshTreeNode(treeNodes);
+    };
+
+    calcAllBills(){
+        let me = this;
+        let needSaveNodes = [];
+
+        function calcNodes(nodes) {
+            for (let node of nodes) {
+                if (node.sourceType !== me.project.Bills.getSourceType()) return;
+                if (node.source.children.length > 0) {
+                    calcNodes(node.children);
+                }
+                me.calculate(node, false);
+                if (node.changed) needSaveNodes.push(node);
+            };
+        };
+
+        calcNodes(me.project.mainTree.roots);
+        me.saveNodes(needSaveNodes);
     };
 }

+ 3 - 2
web/building_saas/main/js/views/project_view.js

@@ -504,11 +504,12 @@ var projectObj = {
     },
     // 计算全部清单
     calculateAll: function () {
-        let calc = new BillsCalcHelper(this.project);
+/*        let calc = new BillsCalcHelper(this.project);
         calc.calcAll();
         this.mainController.showTreeData();
         this.project.Bills.updateAll();
-        calc = null;
+        calc = null;*/
+        this.project.calcProgram.calcAllBills();
     }
 };