|
|
@@ -1106,6 +1106,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;
|
|
|
@@ -1167,9 +1168,27 @@ let cbAnalyzer = {
|
|
|
}
|
|
|
function isCycle(billIDs){
|
|
|
stack = Array.from(new Set(stack.concat(billIDs)));
|
|
|
- /*if (checkStack(stack, sIDs)) {
|
|
|
+ if (checkStack(stack, sIDs)) {
|
|
|
return true;
|
|
|
- }*/
|
|
|
+ }
|
|
|
+ for(let i = 0, len = billIDs.length; i < len; i++){
|
|
|
+ let block = cbTools.getStackBlock(billIDs[i]);
|
|
|
+ if(block.length > 0){
|
|
|
+ stack = Array.from(new Set(stack.concat(block)));
|
|
|
+ let cycleFlag = isCycle(block);
|
|
|
+ if (cycleFlag === true) {
|
|
|
+ return cycleFlag;
|
|
|
+ }
|
|
|
+ //return isCycle(block);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ /*function isCycle(billIDs){
|
|
|
+ stack = Array.from(new Set(stack.concat(billIDs)));
|
|
|
+ /!*if (checkStack(stack, sIDs)) {
|
|
|
+ return true;
|
|
|
+ }*!/
|
|
|
for(let i = 0, len = billIDs.length; i < len; i++){
|
|
|
let block = cbTools.getStackBlock(billIDs[i]);
|
|
|
if(block.length > 0){
|
|
|
@@ -1180,7 +1199,7 @@ let cbAnalyzer = {
|
|
|
return isCycle(block);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
},
|
|
|
//四则运算合法性,控制不允许重复出现运算符,这里再判断一次,控制行引用只能F
|
|
|
arithmeticLegal: function (exp) {
|
|
|
@@ -1226,7 +1245,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 : [];
|
|
|
},
|
|
|
@@ -1237,8 +1256,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) {
|
|
|
@@ -1438,7 +1458,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);
|