Browse Source

添加行、删除行,刷新公式行引用。

chenshilong 7 years ago
parent
commit
49e632fa45

+ 34 - 1
web/building_saas/main/js/models/calc_base.js

@@ -43,7 +43,7 @@ let cbTools = {
     //通过ID获取节点行
     //通过ID获取节点行
     getRowByID: function (items, ID) {
     getRowByID: function (items, ID) {
         for(let i = 0, len = items.length; i < len; i++){
         for(let i = 0, len = items.length; i < len; i++){
-            if(items[i]['data']['ID'] === ID){
+            if(items[i]['data']['ID'] == ID){
                 return i + 1;
                 return i + 1;
             }
             }
         }
         }
@@ -272,6 +272,39 @@ let cbTools = {
             }
             }
             return null;
             return null;
         }
         }
+    },
+
+    // 获取全部有公式的树节点清单。 CSL, 2018-01-05
+    getFormulaNodes: function (needOrder = false) {
+        // 给公式结点清单换照引用计算顺序排序。
+        function orderFormulaNodes (nodesArr) {
+            let orderArr = [];
+            function recursionNode(nodes) {
+                for (let node of nodes){
+                    if (orderArr.includes(node)) continue;    // 已排过序的节点则跳过
+                    if (node.data.calcBase){
+                        let subNodes = cbTools.getNodesByExp(node.data.calcBase);
+                        recursionNode(subNodes);
+                    };
+                    if (nodesArr.includes(node) && !orderArr.includes(node)) orderArr.push(node);
+                };
+            }
+            recursionNode(nodesArr);
+            return orderArr;
+        };
+
+        let nodes = [];
+        for (let node of projectObj.project.mainTree.items){
+            if (node.sourceType == ModuleNames.bills && node.data.calcBase && node.data.calcBase != '')
+                nodes.push(node);
+        };
+        if (needOrder && nodes.length >= 2) return orderFormulaNodes(nodes)
+        else return nodes;
+    },
+    // 刷新全部行引用的公式清单。 CSL, 2018-01-05
+    refreshFormulaNodes: function () {
+        let nodes = this.getFormulaNodes();
+        if (nodes.length > 0) projectObj.mainController.refreshTreeNode(nodes);
     }
     }
 };
 };
 
 

+ 1 - 34
web/building_saas/main/js/models/calc_program.js

@@ -422,39 +422,6 @@ let executeObj = {
 };
 };
 
 
 let treeNodeTools = {
 let treeNodeTools = {
-    // 获取全部有公式的树节点清单
-    getFormulaNodes: function () {
-        let nodes = [];
-        for (let node of projectObj.project.mainTree.items){
-              if (node.sourceType == ModuleNames.bills && node.data.calcBase && node.data.calcBase != '')
-                  nodes.push(node);
-        };
-
-        if (nodes.length >= 2) return this.orderFormulaNodes(nodes)
-        else return nodes;
-    },
-
-    // 给公式结点清单换照引用计算顺序排序。
-    orderFormulaNodes: function (nodesArr) {
-        let orderArr = [];
-
-        function recursionNode(nodes) {
-            for (let node of nodes){
-                if (orderArr.includes(node)) continue;    // 已排过序的节点则跳过
-
-                if (node.data.calcBase){
-                    let subNodes = cbTools.getNodesByExp(node.data.calcBase);
-                    recursionNode(subNodes);
-                };
-
-                if (nodesArr.includes(node) && !orderArr.includes(node)) orderArr.push(node);
-            };
-        }
-
-        recursionNode(nodesArr);
-        return orderArr;
-    },
-
     isBill: function(treeNode){
     isBill: function(treeNode){
         return treeNode.sourceType === ModuleNames.bills;
         return treeNode.sourceType === ModuleNames.bills;
     },
     },
@@ -1067,7 +1034,7 @@ class CalcProgram {
     // 计算全部公式项。 (参数意义:将通过本方法后发生改变的节点存入changedNodesArr中)
     // 计算全部公式项。 (参数意义:将通过本方法后发生改变的节点存入changedNodesArr中)
     calcFormulaNodes(changedArr){
     calcFormulaNodes(changedArr){
         let me = this;
         let me = this;
-        let formulaNodes = treeNodeTools.getFormulaNodes();
+        let formulaNodes = cbTools.getFormulaNodes(true);
         if (formulaNodes.length == 0) return;
         if (formulaNodes.length == 0) return;
         for (let formulaNode of formulaNodes){
         for (let formulaNode of formulaNodes){
             formulaNode.data.userCalcBase = formulaNode.data.calcBase;    // 这句不该出现,projectObj.project.calcBase中要改进。
             formulaNode.data.userCalcBase = formulaNode.data.calcBase;    // 这句不该出现,projectObj.project.calcBase中要改进。

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

@@ -496,6 +496,7 @@ var projectObj = {
                     },
                     },
                     callback: function (key, opt) {
                     callback: function (key, opt) {
                         ProjectController.addRootBill(project, controller);
                         ProjectController.addRootBill(project, controller);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                     visible: function(key, opt){
                     visible: function(key, opt){
                         return project.mainTree.selected&&project.mainTree.selected.parent==null;
                         return project.mainTree.selected&&project.mainTree.selected.parent==null;
@@ -520,6 +521,7 @@ var projectObj = {
                     },
                     },
                     callback: function (key, opt) {
                     callback: function (key, opt) {
                         ProjectController.addFB(project, controller);
                         ProjectController.addFB(project, controller);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                     visible: function(key, opt){
                     visible: function(key, opt){
                         return project.Bills.isFBFX(project.mainTree.selected );//不属于分部分项的话隐藏
                         return project.Bills.isFBFX(project.mainTree.selected );//不属于分部分项的话隐藏
@@ -553,6 +555,7 @@ var projectObj = {
                     },
                     },
                     callback: function (key, opt) {
                     callback: function (key, opt) {
                         ProjectController.addFX(project, controller);
                         ProjectController.addFX(project, controller);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                     visible: function(key, opt){
                     visible: function(key, opt){
                         return project.Bills.isFBFX(project.mainTree.selected );//不属于分部分项的话隐藏
                         return project.Bills.isFBFX(project.mainTree.selected );//不属于分部分项的话隐藏
@@ -572,6 +575,7 @@ var projectObj = {
                             }
                             }
                         }
                         }
                         ProjectController.addBills(project, controller);
                         ProjectController.addBills(project, controller);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                      visible: function(key, opt){
                      visible: function(key, opt){
                          return  project.Bills.isFBFX(project.mainTree.selected)==true?false:true;//不属于分部分项的话隐藏
                          return  project.Bills.isFBFX(project.mainTree.selected)==true?false:true;//不属于分部分项的话隐藏
@@ -586,6 +590,7 @@ var projectObj = {
                     },
                     },
                     callback: function (key, opt) {
                     callback: function (key, opt) {
                         ProjectController.addRation(project, controller, rationType.ration);
                         ProjectController.addRation(project, controller, rationType.ration);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                     visible: function(key, opt){
                     visible: function(key, opt){
                         var selected = project.mainTree.selected;
                         var selected = project.mainTree.selected;
@@ -605,6 +610,7 @@ var projectObj = {
                     },
                     },
                     callback: function (key, opt) {
                     callback: function (key, opt) {
                         ProjectController.addRation(project, controller, rationType.volumePrice);
                         ProjectController.addRation(project, controller, rationType.volumePrice);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                     visible: function(key, opt){
                     visible: function(key, opt){
                         var selected = project.mainTree.selected;
                         var selected = project.mainTree.selected;
@@ -633,6 +639,7 @@ var projectObj = {
                             }
                             }
                         }
                         }
                         getGLJData('insert');// ProjectController.addRation(project, controller, rationType.volumePrice);
                         getGLJData('insert');// ProjectController.addRation(project, controller, rationType.volumePrice);
+                        cbTools.refreshFormulaNodes();
                     },
                     },
                     visible: function(key, opt){
                     visible: function(key, opt){
                         var selected = project.mainTree.selected;
                         var selected = project.mainTree.selected;
@@ -662,6 +669,7 @@ var projectObj = {
                                 controller.delete();
                                 controller.delete();
                             };
                             };
                             projectObj.converseCalculateBills(parent);
                             projectObj.converseCalculateBills(parent);
+                            cbTools.refreshFormulaNodes();
                         }
                         }
                     }
                     }
                 },
                 },
@@ -813,7 +821,9 @@ $('#insert').click(function () {
         ProjectController.addBills(project, controller);
         ProjectController.addBills(project, controller);
     } else if (selected.sourceType === project.Ration.getSourceType()) {
     } else if (selected.sourceType === project.Ration.getSourceType()) {
         ProjectController.addRation(project, controller, selected.data.type);
         ProjectController.addRation(project, controller, selected.data.type);
-    }
+    };
+
+    cbTools.refreshFormulaNodes();
 });
 });
 $('#delete').click(function () {
 $('#delete').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
     var controller = projectObj.mainController, project = projectObj.project;
@@ -830,7 +840,9 @@ $('#delete').click(function () {
             project.ration_glj.updataOrdelete(selected.source);
             project.ration_glj.updataOrdelete(selected.source);
         };
         };
         projectObj.converseCalculateBills(parent);
         projectObj.converseCalculateBills(parent);
-    }
+    };
+
+    cbTools.refreshFormulaNodes();
 });
 });
 $('#upLevel').click(function () {
 $('#upLevel').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
     var controller = projectObj.mainController, project = projectObj.project;