Przeglądaj źródła

行引用取消只能引用顶层节点的限制

zhongzewei 6 lat temu
rodzic
commit
b5951e7d3c

+ 22 - 10
web/building_saas/main/js/models/calc_base.js

@@ -32,7 +32,7 @@ let cbTools = {
         }
         return this.getNodeByID(bills.ID);
     },
-    //通过行获取根节点清单
+    /*//通过行获取根节点清单
     getBillByRow: function (items, row) {
         if(cbTools.isDef(items[row]) &&
             cbTools.isUnDef(items[row]['parent'])&&
@@ -41,6 +41,15 @@ let cbTools = {
             return items[row];
         }
         return null;
+    },*/
+    //通过行获取节点清单
+    getBillByRow: function (items, row) {
+        if(cbTools.isDef(items[row]) &&
+            cbTools.isDef(items[row]['sourceType']) &&
+            items[row]['sourceType'] === calcBase.project.Bills.getSourceType()){
+            return items[row];
+        }
+        return null;
     },
     //通过ID获取节点行
     getRowByID: function (items, ID) {
@@ -896,6 +905,7 @@ let cbAnalyzer = {
         if(fArr.length !== rArr.length){
             return false;
         }
+        rArr = Array.from(new Set(rArr));
         //判断合法性和存在性
         for(let i = 0, len = rArr.length; i < len; i++){
             let idx = rArr[i] - 1;
@@ -918,7 +928,6 @@ let cbAnalyzer = {
             let figure = figureF[i];
             let billsIDs = [];
             if(figure.type === 'base' && cbTools.isDef(baseFigures[figure.value])){
-                //重构后:
                 //多重引用基数
                 let figureMultiRef = baseFigures[figure.value]['multiRef'];
                 let cycleCalcRef = baseFigures[figure.value]['cycleCalcRef'];
@@ -964,12 +973,14 @@ let cbAnalyzer = {
                 let block = cbTools.getStackBlock(billIDs[i]);
                 if(block.length > 0){
                     stack = Array.from(new Set(stack.concat(block)));
-                   /* if(checkStack(stack, sIDs)){
-                        return true;
-                    }*/
-                    return isCycle(block);
+                    let cycleFlag = isCycle(block);
+                    if (cycleFlag === true) {
+                        return cycleFlag;
+                    }
+                    //return isCycle(block);
                 }
             }
+            return false;
         }
     },
     //四则运算合法性,控制不允许重复出现运算符,这里再判断一次,控制行引用只能F
@@ -1016,7 +1027,7 @@ let cbParser = {
     },
     //获取行引用 eg: F10
     getFArr: function (exp) {
-        let fRex = /F\d+/g;
+        let fRex = /F\d+\b/g;
         let fArr = exp.match(fRex);
         return cbTools.isDef(fArr) ? fArr : [];
     },
@@ -1027,8 +1038,9 @@ let cbParser = {
         for(let i = 0, len = arr.length; i < len; i++){
             tempArr = tempArr.concat(arr[i].match(rRex));
         }
-        let rArr = Array.from(new Set(tempArr));
-        return rArr;
+        return tempArr;
+        //let rArr = Array.from(new Set(tempArr));
+        //return rArr;
     },
     //获取uuid
     getUID: function (arr) {
@@ -1164,7 +1176,7 @@ let cbParser = {
         //去{}
         v = v.replace(/[{, },]/g, '');
         //行引用
-        let fidArr = this.getFIDArr(v);
+        let fidArr = _.uniq(this.getFIDArr(v));
         let fExps = [];
         for(let i = 0, len = fidArr.length; i < len; i++){
             let fExp = Object.create(null);

BIN
web/dest/css/img/work.png