Selaa lähdekoodia

计算全部清单、全部定额、全部树结点。

Chenshilong 7 vuotta sitten
vanhempi
commit
5cad81ba23

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

@@ -721,19 +721,26 @@ class CalcProgram {
         projectObj.mainController.refreshTreeNode(treeNodes);
     };
 
-    calcAllBills(){
+
+    // 参数取值如下:
+    // calcAllType.catAll       计算所有树结点 (不指定参数时的默认值)
+    // calcAllType.catBills     计算所有清单 (改变项目属性中清单取费算法时会用到)
+    // calcAllType.catRations   计算所有定额、工料机形式的定额、量价,因为它们都走自己的计算程序。 (改变人工系数、费率值、工料机单价时会用到)
+    calcAllNodes(calcType = calcAllType.catAll){
         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) {
+                if (node.children.length > 0) {
                     calcNodes(node.children);
-                }
-                me.calculate(node, false);
-                if (node.changed) needSaveNodes.push(node);
-            };
+                };
+
+                if ((calcType == calcAllType.catAll) || (calcType == node.sourceType)) {
+                    me.calculate(node, false);
+                    if (node.changed) needSaveNodes.push(node);
+                };
+            }
         };
 
         calcNodes(me.project.mainTree.roots);

+ 6 - 0
web/building_saas/main/js/models/main_consts.js

@@ -44,6 +44,12 @@ const treeNodeCalcType = {
     ctCalcBaseValue: 5
 };
 
+const calcAllType = {
+    catAll: 'all',
+    catBills: 'bills',
+    catRations: 'ration'
+};
+
 const subSheetIndex = {
     ssiRationGLJ: 0,
     ssiRationCoe: 1,

+ 0 - 7
web/building_saas/main/js/models/ration.js

@@ -373,13 +373,6 @@ var Ration = {
 
             this.project.endUpdate();
         };
-
-        ration.prototype.calcAll = function (){
-            for (let ration of this.datas){
-                let node = this.project.mainTree.findNode(ration.ID);
-                 this.project.calcProgram.calculate(node);
-            };
-        };
         
         return new ration(project);
     }

+ 18 - 10
web/building_saas/main/js/views/project_view.js

@@ -479,7 +479,8 @@ var projectObj = {
                 "calculateAll_RationContent": {
                     name: '造价计算',
                     callback: function () {
-                        projectObj.calculateAll();
+                        // projectObj.calculateAll();
+                        project.calcProgram.calcAllNodes();
                     }
                 }
             }
@@ -503,14 +504,13 @@ var projectObj = {
         projectObj.project.calcProgram.saveNode(node);
     },
     // 计算全部清单
-    calculateAll: function () {
-/*        let calc = new BillsCalcHelper(this.project);
+/*    calculateAll: function () {
+        let calc = new BillsCalcHelper(this.project);
         calc.calcAll();
         this.mainController.showTreeData();
         this.project.Bills.updateAll();
-        calc = null;*/
-        this.project.calcProgram.calcAllBills();
-    }
+        calc = null;
+    }*/
 };
 
 $('#insert').click(function () {
@@ -634,10 +634,18 @@ $('#property_ok').click(function () {
         reCalc = true;
     }
     if (reCalc) {
-        projectObj.calculateAll();
-        project.pushNow('editBillsCalcMode',
+        // projectObj.calculateAll();
+/*        project.pushNow('editBillsCalcMode',
             [project.projSetting.moduleName, project.Bills.getSourceType()],
-            [{projectID: project.ID(), billsCalcMode: project.projSetting.billsCalcMode}, project.Bills.getUpdateAllData()]
-        );
+            [{
+                projectID: project.ID(),
+                billsCalcMode: project.projSetting.billsCalcMode
+            }, project.Bills.getUpdateAllData()]
+        );*/
+        project.pushNow('', [project.projSetting.moduleName], [{
+            projectID: project.ID(),
+            billsCalcMode: project.projSetting.billsCalcMode
+        }]);
+        project.calcProgram.calcAllNodes(calcAllType.catBills);
     }
 });