|
@@ -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){
|