Browse Source

简化块结构

chenshilong 6 năm trước cách đây
mục cha
commit
3ccffd38b0

+ 20 - 21
web/building_saas/main/js/views/block_lib.js

@@ -42,7 +42,7 @@ var blockLibObj = {
             {headerName: "项目编码", headerWidth: 90, dataCode: "code", dataType: "String", hAlign: "center"},
             {headerName: "项目名称", headerWidth: 100, dataCode: "name", dataType: "String"},
             {headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center"},
-            {headerName: "综合单价", headerWidth: 70, dataCode: "", dataType: "Number"},
+            {headerName: "综合单价", headerWidth: 70, dataCode: "unitFee", dataType: "Number"},
             {headerName: "项目特征", headerWidth: 160, dataCode: "itemCharacterText", dataType: "String"}
         ],
         view: {
@@ -132,10 +132,9 @@ var blockLibObj = {
     loadDetailDatas: function (node){
         let me = this;
         if (node.data.type == 2){
-            let bill = node.data.datas[0];
+            let bill = node.data;
             let rations = bill.children;
             sheetCommonObj.showData(me.billSheet, me.billSetting, [bill]);
-            me.changeBillText(bill);
             let rCount = (rations.length > 0) ? rations.length : 1;
             me.rationSheet.setRowCount(rCount, GC.Spread.Sheets.SheetArea.viewport);
             sheetCommonObj.showData(me.rationSheet, me.rationSetting, rations);
@@ -367,13 +366,20 @@ var blockLibObj = {
 
         let newNode = tree.insert(pID, nID);
         newNode.data.type = nodeType;
-        newNode.data.name = nodeName;
+        newNode.data.fileName = 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.datas = source.datas;
+
+            newNode.data.code = bill.code;
+            newNode.data.name = bill.name;
+            newNode.data.unit = bill.unit;
+            newNode.data.itemCharacterText = bill.itemCharacterText;
+            newNode.data.children = bill.children;
+            newNode.data.unitFee = (bill.feesIndex && bill.feesIndex.common) ? bill.feesIndex.common.unitFee : 0;
         }
 
         tree.selected = newNode;
@@ -385,14 +391,14 @@ var blockLibObj = {
         let idx = tree.items.indexOf(newNode);
         sheet.addRows(idx, 1);
         sheet.getRange(idx, 0, 1, 1).locked(true);
-        sheet.setValue(idx, 0, newNode.data.name);
+        sheet.setValue(idx, 0, newNode.data.fileName);
         sheet.setSelection(idx, 0, 1, 1);
 
         sheet.resumeEvent();
         sheet.resumePaint();
     },
     reName: function (node, newName){
-        node.data.name = newName;
+        node.data.fileName = newName;
         let idx = blockLibObj.mainTree.items.indexOf(node);
         blockLibObj.mainSheet.setValue(idx, 0, newName);
     },
@@ -432,15 +438,6 @@ var blockLibObj = {
         sheet.resumeEvent();
         sheet.resumePaint();
     },
-    changeBillText: function (billData){
-        let sheet = this.billSheet;
-        sheet.suspendPaint();
-        sheet.suspendEvent();
-        if (billData.feesIndex && billData.feesIndex.common)
-            sheet.setValue(0, 3, billData.feesIndex.common.unitFee);
-        sheet.resumeEvent();
-        sheet.resumePaint();
-    },
     loadTreeContextMenu: function (){
         let me = this;
         $.contextMenu({
@@ -530,14 +527,16 @@ var blockLibObj = {
         let projectNode = projectObj.project.mainTree.selected;
         if (!calcTools.isLeafBill(projectNode)) return;
 
+        // 这里再次封装成伟城的块文件格式,可直接使用伟城的“粘贴块”接口。
+        // 这里结构作出调整:忽略叶子清单层,直接从定额开始(跟粘贴块有区别),始终强制在叶子清单下插入定额。
+        // 该操作前提:当前块文件的全部数据已从后台取到前台。
         let block = me.mainTree.selected.data;
-        // 这里再次封装成伟城的块文件格式,可直接使用伟城的“粘贴块”接口。前提:当前块文件的全部数据已从后台取到前台。
         let vBlock_WC = {
             compilationID: block.compilationID,
             copyTime: block.copyTime,
-            firstNodeType: 1,   // 强制改成1。这里跟粘贴块有区别,忽略叶子清单层,直接从定额开始,即始终强制在叶子清单下插入定额
+            firstNodeType: 1,           // 强制改成1 (因为是从清单下的定额开始。清单自身的还是保留,暂不使用使用)
             isFBFX: block.isFBFX,
-            datas: block.datas[0].children    // rations
+            datas: block.children       // rations
         };
         BlockController.confirmPaste(vBlock_WC, projectNode, 'sub');
     }
@@ -562,12 +561,12 @@ $(document).ready(function(){
 
     $('#btn_block_reName').on('click', function (){
         let select = blockLibObj.mainTree.selected;
-        $('#input_block_reName').val(select.data.name);
+        $('#input_block_reName').val(select.data.fileName);
     });
 
     $('#btn_block_reName_OK').on('click', function (){
         let select = blockLibObj.mainTree.selected;
-        let oldName = select.data.name;
+        let oldName = select.data.fileName;
         let newName = $('#input_block_reName').val();
         if (oldName != newName) blockLibObj.reName(select, newName);
     });

+ 5 - 4
web/building_saas/main/js/views/project_view.js

@@ -2898,9 +2898,7 @@ $(function () {
         function createBlocks(aNode, categoryID){
             function createBlock(node) {
                 if (node.data.name == undefined || node.data.name == '') return;  // 清单名称为空,不生成块模板文件
-                let name = node.data.code + ' ' + node.data.name + ' ' + node.data.unit;
-                name = name.replace(/^\s+|\s+$/g, "");    // 只去两头空格
-
+                if (node.children.length == 0) return;
                 // 封装成伟城的块文件格式,直接调用伟城接口(定额这里的业务太多太庞杂,不要再重做一遍,尽量共用,维护代价小)
                 // 块文件要构建自己的树结构,所以也有自己的一部分数据。两种结构揉合在一起,显得有点杂乱,但利大于弊。
                 let block_WC = {
@@ -2912,7 +2910,10 @@ $(function () {
                 };
                 let ration_glj_Map = _.groupBy(projectObj.project.ration_glj.datas, 'rationID');
                 block_WC.datas.push(BlockController.getNodeDatas(node, ration_glj_Map));
-                blockLibObj.newNode(2, name, categoryID, block_WC);
+
+                let fileName = node.data.code + ' ' + node.data.name + ' ' + node.data.unit;
+                fileName = fileName.replace(/^\s+|\s+$/g, "");    // 只去两头空格
+                blockLibObj.newNode(2, fileName, categoryID, block_WC);
             };
 
             function createRecursion(node){