Browse Source

Merge branch 'master' of http://192.168.1.12:3000/SmartCost/ConstructionCost

TonyKang 7 năm trước cách đây
mục cha
commit
fe98bdd6f7

+ 4 - 1
public/web/sheet/sheet_common.js

@@ -40,7 +40,10 @@ var sheetCommonObj = {
 
         sheet.showRowOutline(false);
         me.buildHeader(sheet, setting);
-        if (rowCount > 0) sheet.setRowCount(rowCount);
+        if (rowCount > 0)
+            sheet.setRowCount(rowCount)
+        else
+            sheet.setRowCount(1);
         sheet.resumeEvent();
         sheet.resumePaint();
     },

+ 39 - 0
web/building_saas/main/js/models/calc_base.js

@@ -62,6 +62,45 @@ let cbTools = {
         }
         return rst;
     },
+    //根据公式获取相关的节点
+    getNodesByExp: function (exp) {
+        let rst = [], ids = [];
+        if(this.isUnDef(exp) || exp === ''){
+            return rst;
+        }
+        //获取表达式中的基数和行引用
+        let figureF = cbParser.getFigureF(cbParser.getFigure(exp), cbParser.getRArr(cbParser.getFArr(exp)));
+        for(let i = 0, len = figureF.length; i < len; i++){
+            let figure = figureF[i];
+            if(figure.type === 'base' && cbTools.isDef(calcBase.baseFigures[figure.value])){
+                let bill = calcBase.baseFigures[figure.value]['fixedBill']['bill'];
+                if(this.isDef(bill) && ids.indexOf(bill.ID) === -1){
+                    let node = getNodeByID(bill.ID);
+                    if(this.isDef(node)){
+                        ids.push(node.data.ID);
+                        rst.push(node);
+                    }
+                }
+            }
+            else if(figure.type === 'row'){
+                let node = this.getBillByRow(calcBase.project.mainTree.items, figure.value - 1);
+                if(this.isDef(node) && ids.indexOf(node.data.ID) === -1){
+                    ids.push(node.data.ID);
+                    rst.push(node);
+                }
+            }
+        }
+        return rst;
+        function getNodeByID(ID){
+            let items = calcBase.project.mainTree.items;
+            for(let i = 0, len = items.length; i < len; i++){
+                if(items[i]['data']['ID'] === ID){
+                    return items[i];
+                }
+            }
+            return null;
+        }
+    },
     //需要用到计算基数的时候,先找出所有的固定清单,避免每个基数都要去遍历寻找清单
     setFixedBills: function (project, billsObj, fixedFlag) {
         let bills = project.Bills.datas;

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

@@ -438,35 +438,12 @@ let treeNodeTools = {
     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);
+                    let subNodes = cbTools.getNodesByExp(node.data.calcBase);
                     recursionNode(subNodes);
                 };