Browse Source

从标准清单双击添加清单,格式化编号

MaiXinRong 7 years ago
parent
commit
543da5825f

+ 16 - 22
web/building_saas/main/js/models/bills.js

@@ -164,7 +164,7 @@ var Bills = {
             var newData = null, that = this;
             var newData = null, that = this;
             insertData.forEach(function (data) {
             insertData.forEach(function (data) {
                 if (data.type === idTree.updateType.new) {
                 if (data.type === idTree.updateType.new) {
-                    data.data.code = stdBillsData.code;
+                    data.data.code = that.newFormatCode(stdBillsData.code);
                     data.data.name = stdBillsData.name;
                     data.data.name = stdBillsData.name;
                     data.data.unit = stdBillsData.unit;
                     data.data.unit = stdBillsData.unit;
                     // 工程量计算规则
                     // 工程量计算规则
@@ -285,8 +285,18 @@ var Bills = {
             }
             }
         };
         };
 
 
-        bills.prototype.formatCode = function (stdCode, formatCode) {
-            let reg = /^stdCode/, matchs= [];
+        bills.prototype.sameStdCode = function (stdCode, filterCode) {
+            let reg = new RegExp('^' + stdCode), matchs= [];
+            for (let data of this.datas) {
+                if (data.code && data.code.length === 12 && reg.test(data.code) && data.code !== filterCode) {
+                    matchs.push(data.code);
+                }
+            }
+            return matchs;
+        }
+
+        bills.prototype.newFormatCode = function (stdCode, filterCode) {
+            let matchs = this.sameStdCode(stdCode, filterCode);
             let format = function (Number) {
             let format = function (Number) {
                 let s = Number + '';
                 let s = Number + '';
                 while (s.length < 3) {
                 while (s.length < 3) {
@@ -294,27 +304,11 @@ var Bills = {
                 }
                 }
                 return s;
                 return s;
             }
             }
-            let getNewFormatCode = function () {
-                for (i = 1; i <= matchs.length + 1; i++) {
-                    let formatCode = stdCode + format(i);
-                    if (matchs.indexOf(formatCode) === -1) {
-                        return formatCode
-                    }
-                }
-            }
-            for (let data of this.datas) {
-                if (data.code && data.code.length === 12 && reg.test(data.code)) {
-                    matchs.push(data.code);
-                }
-            }
-            if (formatCode) {
-                if (matchs.indexOf(formatCode) >= 0) {
-                    return getNewFormatCode();
-                } else {
+            for (i = 0; i <= matchs.length; i++) {
+                let formatCode = stdCode + format(i+1);
+                if (matchs.indexOf(formatCode) === -1) {
                     return formatCode;
                     return formatCode;
                 }
                 }
-            } else {
-                return getNewFormatCode();
             }
             }
         };
         };
 
 

+ 14 - 8
web/building_saas/main/js/views/project_view.js

@@ -165,9 +165,13 @@ var projectObj = {
     },
     },
     updateBillsCode: function (node, value) {
     updateBillsCode: function (node, value) {
         let project = projectObj.project;
         let project = projectObj.project;
-        let stdMatchCode, formatCode;
+        let stdMatchCode, formatCode, matchs;
         let searchStdBillsAndUpdate = function (stdCode, formatCode) {
         let searchStdBillsAndUpdate = function (stdCode, formatCode) {
-            if (projectInfoObj.projectInfo.engineeringInfo.bill_lib.length > 0) {
+            let orgCode = node.data.code.substr(0, 9);
+            if (stdCode === orgCode || projectInfoObj.projectInfo.engineeringInfo.bill_lib.length === 0) {
+                project.Bills.updateField(node.source, 'code', formatCode, true);
+                projectObj.mainController.refreshTreeNode([node], false);
+            } else if (projectInfoObj.projectInfo.engineeringInfo.bill_lib.length > 0) {
                 let libId = projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id;
                 let libId = projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id;
                 CommonAjax.post('/stdBillsEditor/getStdBillsByCode', {userId: userID, billsLibId: libId, code: stdCode}, function (data) {
                 CommonAjax.post('/stdBillsEditor/getStdBillsByCode', {userId: userID, billsLibId: libId, code: stdCode}, function (data) {
                     if (data) {
                     if (data) {
@@ -178,19 +182,21 @@ var projectObj = {
                     }
                     }
                     projectObj.mainController.refreshTreeNode([node], false);
                     projectObj.mainController.refreshTreeNode([node], false);
                 });
                 });
-            } else {
-                project.Bills.updateField(node.source, 'code', value, true);
-                projectObj.mainController.refreshTreeNode([node], false);
             }
             }
         }
         }
         if (value.length === 9 && /^[\d]+$/.test(value)) {
         if (value.length === 9 && /^[\d]+$/.test(value)) {
             stdMatchCode = value;
             stdMatchCode = value;
-            formatCode = project.Bills.formatCode(stdMatchCode);
+            formatCode = project.Bills.newFormatCode(stdMatchCode);
             searchStdBillsAndUpdate(stdMatchCode, formatCode);
             searchStdBillsAndUpdate(stdMatchCode, formatCode);
         } else if (value.length === 12 && /^[\d]+$/.test(value)) {
         } else if (value.length === 12 && /^[\d]+$/.test(value)) {
             stdMatchCode = value.substr(0, 9);
             stdMatchCode = value.substr(0, 9);
-            formatCode = project.Bills.formatCode(stdMatchCode, value);
-            searchStdBillsAndUpdate(stdMatchCode, formatCode);
+            matchs = project.Bills.sameStdCode(stdMatchCode, node.data.code);
+            if (matchs.indexOf(value) === -1) {
+                searchStdBillsAndUpdate(stdMatchCode, value);
+            } else if (confirm('已存在该编码的清单,是否继续?')) {
+                formatCode = project.Bills.newFormatCode(stdMatchCode, node.data.code);
+                searchStdBillsAndUpdate(stdMatchCode, formatCode);
+            }
         } else {
         } else {
             project.Bills.updateField(node.source, 'code', value, true);
             project.Bills.updateField(node.source, 'code', value, true);
             this.mainController.refreshTreeNode([node], false);
             this.mainController.refreshTreeNode([node], false);