Pārlūkot izejas kodu

造价书,右键-插入定额,光标应定位编号列,不应定位在工程量,分摊编号调整

zhangweicheng 5 gadi atpakaļ
vecāks
revīzija
5621310bae

+ 24 - 5
web/building_saas/main/js/views/divide_view.js

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

+ 1 - 0
web/building_saas/main/js/views/project_view.js

@@ -1188,6 +1188,7 @@ var projectObj = {
                 const newNodes = await ProjectController.addBillsByData(postData, true);
                 projectObj.mainController.setTreeSelected(newNodes[0]);
                 projectObj.selectColAndFocus(project.mainTree.selected);
+                projectObj.refreshBaseActn(project.mainTree);
             } catch (err) {
                 console.log(err);
                 if (!$('hintBox_form').is(':visible')) {