chenshilong 6 years ago
parent
commit
a96b277185

+ 1 - 1
web/building_saas/main/html/main.html

@@ -1777,7 +1777,7 @@
                     <div class="form-group">
                         <div class="form-check form-check-inline">
                             <input class="form-check-input" type="checkbox" name="inlineRadioOptions" id="ckb_block_exist_cover" value="option1">
-                            <label class="form-check-label" for="ckb_block_exist_cover">当存在同名模板时,提示是否覆盖</label>
+                            <label class="form-check-label" for="ckb_block_exist_cover">当存在同名模板时覆盖</label>
                         </div>
                     </div>
                 </div>

+ 46 - 35
web/building_saas/main/js/views/block_lib.js

@@ -364,49 +364,48 @@ var blockLibObj = {
             nID = -1;
         }
 
-        let newNode = tree.insert(pID, nID);
-        newNode.data.type = nodeType;
-        newNode.data.nodeName = nodeName;
-        if (nodeType == 2){
-            let bill = source.datas[0];
-            newNode.data.compilationID = source.compilationID;
-            newNode.data.copyTime = source.copyTime;
-            newNode.data.firstNodeType = source.firstNodeType;
-            newNode.data.isFBFX = source.isFBFX;
-
-            newNode.data.code = bill.code;
-            newNode.data.name = bill.name;
-            newNode.data.unit = bill.unit;
-            newNode.data.itemCharacterText = bill.itemCharacterText;
-            newNode.data.unitFee = (bill.feesIndex && bill.feesIndex.common) ? bill.feesIndex.common.unitFee : 0;
-            newNode.data.children = bill.children;
-
-            for (let r of bill.children){
-                r.unitFee =  (r.feesIndex && r.feesIndex.common) ? r.feesIndex.common.unitFee : 0;
-                if (r.programID)
-                    r.programName = projectObj.project.calcProgram.compiledTemplateMaps[r.programID];
-                // delete r.ID;         // 这个不能删!
-                delete r.billsItemID;
-                delete r.fees;
-                delete r.feesIndex;
-            };
-        }
-
-        tree.selected = newNode;
+        let newN = tree.insert(pID, nID);
+        newN.data.type = nodeType;
+        newN.data.nodeName = nodeName;
+        if (nodeType == 2)
+            blockLibObj.assignData(newN, source);
 
+        tree.selected = newN;
         let sheet = blockLibObj.mainSheet;
         sheet.suspendPaint();
         sheet.suspendEvent();
-
-        let idx = tree.items.indexOf(newNode);
+        let idx = tree.items.indexOf(newN);
         sheet.addRows(idx, 1);
         sheet.getRange(idx, 0, 1, 1).locked(true);
-        sheet.setValue(idx, 0, newNode.data.nodeName);
+        sheet.setValue(idx, 0, newN.data.nodeName);
         sheet.setSelection(idx, 0, 1, 1);
-
         sheet.resumeEvent();
         sheet.resumePaint();
     },
+    assignData: function (block, source){
+        block.data.compilationID = source.compilationID;
+        block.data.copyTime = source.copyTime;
+        block.data.firstNodeType = source.firstNodeType;
+        block.data.isFBFX = source.isFBFX;
+
+        let bill = source.datas[0];
+        block.data.code = bill.code;
+        block.data.name = bill.name;
+        block.data.unit = bill.unit;
+        block.data.itemCharacterText = bill.itemCharacterText;
+        block.data.unitFee = (bill.feesIndex && bill.feesIndex.common) ? bill.feesIndex.common.unitFee : 0;
+        block.data.children = bill.children;
+
+        for (let r of bill.children){
+            r.unitFee =  (r.feesIndex && r.feesIndex.common) ? r.feesIndex.common.unitFee : 0;
+            if (r.programID)
+                r.programName = projectObj.project.calcProgram.compiledTemplateMaps[r.programID];
+            // delete r.ID;         // 这个不能删!
+            delete r.billsItemID;
+            delete r.fees;
+            delete r.feesIndex;
+        };
+    },
     reName: function (node, newName){
         if (newName == '') return;
         node.data.nodeName = newName;
@@ -434,6 +433,18 @@ var blockLibObj = {
     curIsCategory: function () {
         return this.mainTree.selected.data.type == 1;
     },
+    getSameNameNode: function(name){
+        let rst = null;
+        let nodes = blockLibObj.mainTree.items;
+        for (let i = 0; i < nodes.length; i++) {
+            let node = nodes[i];
+            if (node.data.nodeName == name){
+                rst = node;
+                break;
+            }
+        }
+        return rst;
+    },
     refreshSpread: function (){
         if (this.mainSpread)
             this.mainSpread.refresh();
@@ -548,8 +559,8 @@ var blockLibObj = {
             canClone = canClone && (projectNode.data.unit == block.data.unit);
         if (!canClone) return;
 
-        /*  这里再次封装成伟城的块文件格式,可直接使用伟城的“粘贴块”接口。
-            这里结构作出调整:忽略叶子清单层,直接从定额开始(跟粘贴块有区别),始终强制在叶子清单下插入定额。
+        /*  这里封装成伟城的块文件格式,可直接使用伟城的“粘贴块”接口。
+            这里结构作出调整:忽略叶子清单层,直接从定额开始(跟粘贴块有区别),始终强制在叶子清单下插入定额。
             该操作前提:当前块文件的全部数据已从后台取到前台。  */
         let vBlock_WC = {
             compilationID: block.data.compilationID,

+ 9 - 2
web/building_saas/main/js/views/project_view.js

@@ -2948,6 +2948,7 @@ $(function () {
         let sHtml = getBlockCategoriesHtml(blockLibObj.getCategories());
         $("#select_block_category").html(sHtml);
         $("#select_block_category")[0].selectedIndex = 0;
+        $('#ckb_block_exist_cover').prop("checked", false);
     });
 
     $("#div_cloneOptions").on('show.bs.modal', function(){
@@ -2962,7 +2963,7 @@ $(function () {
         if ($("#select_block_category")[0].options.length < 1) return;
         let cID = $("#select_block_category").val();
         let selected = projectObj.project.mainTree.selected;
-
+        let cover = $('#ckb_block_exist_cover').prop("checked");
         function createBlocks(aNode, categoryID){
             function createBlock(node) {
                 if (node.data.name == undefined || node.data.name == '') return;  // 清单名称为空,不生成块模板文件
@@ -2981,7 +2982,13 @@ $(function () {
 
                 let fileName = node.data.code + ' ' + node.data.name + ' ' + node.data.unit;
                 fileName = fileName.replace(/^\s+|\s+$/g, "");    // 只去两头空格
-                blockLibObj.newNode(2, fileName, categoryID, block_WC);
+
+                let extN = blockLibObj.getSameNameNode(fileName);
+                if (extN){
+                    if (cover) blockLibObj.assignData(extN, block_WC);
+                }
+                else
+                    blockLibObj.newNode(2, fileName, categoryID, block_WC);
             };
 
             function createRecursion(node){