|
|
@@ -252,30 +252,49 @@ let divideObj = {
|
|
|
this.execBillsSheet.setRowCount(this.execBillsDatas.length);
|
|
|
},
|
|
|
|
|
|
- getExeBillCode:function(ID){
|
|
|
+ getExeBillCode:function(ID){//从后面往前匹配好像简单一点,可能想得复杂了
|
|
|
let bNode = projectObj.project.mainTree.findNode(ID);
|
|
|
if(!bNode) return "";
|
|
|
let nodes= [];
|
|
|
getNodes(bNode);
|
|
|
let newCode = "";
|
|
|
+ let index = 0;
|
|
|
for(let n of nodes){
|
|
|
if(n.data.code && n.data.code !=""){
|
|
|
if(newCode == ""){
|
|
|
newCode = n.data.code;
|
|
|
}else{
|
|
|
let exp = new RegExp("^"+newCode);
|
|
|
- if(exp.test(n.data.code)){
|
|
|
+ if(exp.test(n.data.code)){//如果后一个直接包含前面所有,则直接使用全字段
|
|
|
newCode = n.data.code
|
|
|
}else{
|
|
|
- let mid = "-"
|
|
|
- if(newCode.substr(-1,1) == "-" ||n.data.code.substr(0,1)=="-")mid="";
|
|
|
- newCode = newCode+mid+n.data.code
|
|
|
+ let mid = "-";
|
|
|
+ let tcode = n.data.code;
|
|
|
+ if(nodes[index-1]){//拿前一结点单独来匹配一下
|
|
|
+ let preCode = removeSymble(nodes[index-1].data.code);
|
|
|
+ let code = removeSymble(n.data.code);
|
|
|
+ let preExp = new RegExp("^"+preCode);
|
|
|
+ if(preExp.test(code)){//如果后一个只包含前面一个节点,则忽略前一节点字段
|
|
|
+ tcode = code.replace(preCode,"");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(newCode.substr(-1,1) == "-" ||tcode.substr(0,1)=="-")mid="";
|
|
|
+ newCode = newCode+mid+tcode
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ index ++;
|
|
|
}
|
|
|
return newCode;
|
|
|
|
|
|
+ //去除前后的-
|
|
|
+ function removeSymble(str){
|
|
|
+ let pr = str.match(/^-(.+)/);
|
|
|
+ if(pr)str = pr[1];
|
|
|
+ let fr = str.match(/(.+)-$/);
|
|
|
+ if(fr)str = fr[1];
|
|
|
+ return str;
|
|
|
+ }
|
|
|
|
|
|
function getNodes (node){
|
|
|
nodes.unshift(node);
|