Explorar el Código

公式排序。

chenshilong hace 7 años
padre
commit
f32994aa3a
Se han modificado 1 ficheros con 49 adiciones y 2 borrados
  1. 49 2
      web/building_saas/main/js/models/calc_program.js

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

@@ -426,9 +426,56 @@ 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 (node.sourceType == ModuleNames.bills && node.data.calcBase && node.data.calcBase != '')
+                  nodes.push(node);
         };
-        return nodes;
+
+        if (nodes.length >= 2) return this.orderFormulaNodes(nodes)
+        else return nodes;
+    },
+
+    // 给公式结点清单换照引用计算顺序排序。
+    orderFormulaNodes: function (nodesArr) {
+        let orderArr = [];
+
+        function getNodesByExp(expression){
+            // for test --------------
+            function getNode(name) {
+                for (let node of projectObj.project.mainTree.items){
+                    if (node.data.name == name)
+                        return node;
+                };
+            };
+
+            if (expression.hasSubStr("{措施项目费}")){
+                let node = getNode('措施项目');
+                return [node];
+            }
+
+            else if (expression.hasSubStr("{技术措施项目费}")){
+                let node = getNode('1.技术措施项目');
+                return [node];
+            }
+            // -------------------------------
+
+            return [];
+        };
+
+        function recursionNode(nodes) {
+            for (let node of nodes){
+                if (orderArr.includes(node)) continue;    // 已排过序的节点则跳过
+
+                if (node.data.calcBase){
+                    let subNodes = getNodesByExp(node.data.calcBase);
+                    recursionNode(subNodes);
+                };
+
+                if (nodesArr.includes(node) && !orderArr.includes(node)) orderArr.push(node);
+            };
+        }
+
+        recursionNode(nodesArr);
+        return orderArr;
     },
 
     isBill: function(treeNode){