浏览代码

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuCost

TonyKang 5 年之前
父节点
当前提交
2a7d8ed832

+ 19 - 19
modules/ration_glj/facade/glj_calculate_facade.js

@@ -145,13 +145,13 @@ function generateRationName(ration,gljList) {
             adjustMatch!=""?replaceList.push(adjustMatch):replaceList.push(notAdjust);
         }
         for(let r of replaceList){
-            caption =  caption.replace('%s',r);
+            caption =  caption.replace(/%s/i,r);
         }
     }
     // 更新定额名称中显示的稳定土配合比
     const proportionStr = gljList.filter(glj => glj.rationProportion).map(glj => glj.adjustProportion || 0).join(':');
     if (proportionStr) {
-        caption = caption.replace('%p', proportionStr);
+        caption = caption.replace(/%p/i, proportionStr);
     }
     let reNameList = [];
     for(let g of gljList){
@@ -401,23 +401,23 @@ function getContent(coes) {
 }
 
 function prepareAss(assList) {//处理辅助定额,支持多个辅助定额的情况
-    for(let a of assList){
-        if(a.groupList && a.groupList.length > 1){//组里有多个定额的情况
-            let newList = _.sortByAll(a.groupList,[function(item){
-               return parseFloat(item.param)
-            }]);//先按参数排序
-            let pre = 0;
-            for(let n of newList){
-                if(a.actualValue > pre && a.actualValue <= parseFloat(n.param)){//落在中间,则用组里的这条定额
-                    a._doc.param = n.param;
-                    a._doc.paramName = n.paramName;
-                    a._doc.assistCode = n.assistCode;
-                    break;
-                }
-                pre = parseFloat(n.param);
-            }
-        }
-    }
+  for(let a of assList){
+      if(a.groupList && a.groupList.length > 1){//组里有多个定额的情况
+          let newList = _.sortByAll(a.groupList,[function(item){
+              return parseFloat(item.param)
+          }]);//先按参数排序
+          let pre = 0;
+          for(let n of newList){
+              if(a.actualValue > pre && a.actualValue <= parseFloat(n.param)){//落在中间,则用组里的这条定额
+                  a._doc.param = n.param;
+                  a._doc.paramName = n.paramName;
+                  a._doc.assistCode = n.assistCode;
+                  break;
+              }
+              pre = parseFloat(n.param);
+          }
+      }
+  }
 }
 
 function calculateTimes(ass){

文件差异内容过多而无法显示
+ 369 - 363
public/web/sheet/sheet_common.js


+ 4 - 4
web/building_saas/main/js/models/calc_base.js

@@ -724,13 +724,13 @@ let baseFigureTemplate = {
             let fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
             return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
         },
-        // {定额建安费(不含定额设备购置费)} 汇总各大项费用清单的“定额建安费”
+        // {定额建安费(不含定额设备购置费)} 汇总非设备类型的定额的定额建安费
         'DEJAFBHDESBGZF': function (tender) {
             const feeField = 'rationCommon';
             const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
-            const roots = projectObj.project.mainTree.roots;
-            const summaryFee = roots.reduce((total, node) => {
-                const fee = cbTools.getFee(node.data, feeField, subFeeField);
+            const rations = projectObj.project.Ration.datas.filter(ration => !(ration.type === rationType.gljRation && ration.subType === gljType.EQUIPMENT));
+            const summaryFee = rations.reduce((total, ration) => {
+                const fee = cbTools.getFee(ration, feeField, subFeeField);
                 return total += fee;
             }, 0);
             return summaryFee.toDecimal(decimalObj.bills.totalPrice);

+ 2 - 2
web/building_saas/main/js/models/project_glj.js

@@ -648,8 +648,8 @@ ProjectGLJ.prototype.updateMaterialCalcTasks =async function(pgljID,dataMap,acti
         if(actionType == "update") {//更新情况
             if (sumMap[model] && sumMap[model][actionType]) {//这一步,合并需要提交后台修改的数据
                 let tt = sumMap[model][actionType];
-                for (let d of datas) {
-                    tt[d.ID] = d.doc;
+                for(let key in dataMap) {
+                  tt[key] = dataMap[key];
                 }
             } else {
                 sumMap[model] = actionMap;

+ 4 - 3
web/building_saas/main/js/models/ration_glj.js

@@ -555,7 +555,7 @@ let ration_glj = {
                 cb(data);
             })
         };
-        ration_glj.prototype.insertGLJAsRation = function (GLJSelection, selected, callback) {
+        ration_glj.prototype.insertGLJAsRation = function (GLJSelection, selected,insertType, callback) {
             let gljList = [];
             let allGLJ = gljOprObj.AllRecode;
             let billsItemID = null, serialNo = 0,selectedSerialNo = null,nextNodeID = null, parentNodeID = null, billNode = null;
@@ -611,10 +611,11 @@ let ration_glj = {
                         repositoryId: glj.repositoryId
                     };
                     if(pEngineer) new_glj.programID = pEngineer;
-                    let belongFlag = cbTools.getBelongFlag(selected);
+                    if(insertType=="insertEquipment")  new_glj.programID = projectObj.project.calcProgram.compiledTemplateMaps['设备购置'];
+                    /* let belongFlag = cbTools.getBelongFlag(selected); 原来是在设备购置清单下插入设备才要取设备勾置费的,现在改成插入设备直接取
                     if (belongFlag && belongFlag === fixedFlag.EQUIPMENT_ACQUISITION_FEE) {
                         new_glj.programID = projectObj.project.calcProgram.compiledTemplateMaps['设备购置'];
-                    }
+                    } */
                     if (glj.hasOwnProperty("compilationId")) {
                         new_glj.from = "cpt";
                         if (glj.code.indexOf('-') != -1) {//这条工料机是用户通过修改名称、规格、型号等保存到补充工料机库的

+ 3 - 3
web/building_saas/main/js/views/glj_view.js

@@ -1119,7 +1119,7 @@ var gljOprObj = {
         });
         return distTypeTree;
     },
-    doInsertGLJ: function () {
+    doInsertGLJ: function (insertType) {
         var me = this;
         var selected = projectObj.project.mainTree.selected;
         var project = projectObj.project;
@@ -1127,7 +1127,7 @@ var gljOprObj = {
             return;
         }
         $.bootstrapLoading.start();
-        project.ration_glj.insertGLJAsRation(me.GLJSelection, selected, function (parentNodeID,nextNodeID,data) {
+        project.ration_glj.insertGLJAsRation(me.GLJSelection, selected,insertType ,function (parentNodeID,nextNodeID,data) {
             let newNode=null;
             for (let r_glj of data) {
                 r_glj.quantity = r_glj.quantity + "";
@@ -1660,7 +1660,7 @@ $(function () {
             return;
         }
         if (['insert', 'insertEquipment'].includes($('#actionType').val())) {  //造价书页面中插入定额类型的工料机
-            gljOprObj.doInsertGLJ();
+            gljOprObj.doInsertGLJ($('#actionType').val());
         } else if ($('#actionType').val() == 'add') { //添加工料机
             gljOprObj.doAddGLJ();
         } else if ($('#actionType').val() == 'replace') {//替换工料机

+ 1 - 1
web/building_saas/pm/html/project-management.html

@@ -258,7 +258,7 @@
     <div class="modal-dialog" role="document">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title">新建 <i class="fa fa-sticky-note-o"></i> 分段</h5>
+                <h5 class="modal-title"> <i class="fa fa-sticky-note-o"></i> 新建分段</h5>
                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                     <span aria-hidden="true">&times;</span>
                 </button>

+ 38 - 7
web/building_saas/pm/js/pm_newMain.js

@@ -848,9 +848,23 @@ const projTreeObj = {
         let shareImg = document.getElementById('share_pic'),
             shareImgWidth = 13,
             shareImgHeight = 13;
+        let defaultHeight = 18; // 单元格默认高度
         let TreeNodeCellType = function () {
         };
         TreeNodeCellType.prototype = new GC.Spread.Sheets.CellTypes.Text();
+        // 自动行高处理 此函数在每次调用autoFitRow后调用,返回的值作为新的单元格高度
+        // 在单元格设置为自动行高后,单元格的内容有空格时,spreadjs会将空格认为是换行,会导致高度计算不正确,因此在setCellValue中处理空格
+        TreeNodeCellType.prototype.getAutoFitHeight = function(value, text, cellStyle, zoomFactor, context){
+            if (!defaultHeight) {
+                defaultHeight = context.sheet.getCell(context.row, -1).height();
+            }
+            const node = me.tree.items[context.row];
+            const nodeIndent = node ? (node.depth() + 1) * indent +  node.depth() * levelIndent + imgWidth + 5 : 0;
+            const cellWidth = context.sheet.getCell(-1, context.col).width();
+            const textLength = this.getAutoFitWidth(...arguments);
+            const lineNum = Math.ceil(textLength / (cellWidth - nodeIndent));
+            return lineNum * defaultHeight;
+        };
         TreeNodeCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
             if (style.backColor) {
                 ctx.save();
@@ -1093,7 +1107,11 @@ const projTreeObj = {
         const {row, col} = cell;
         let dataCode = setting.header[col]['dataCode'];
         let value = '';
-        if(dataCode === 'unitPriceFile'){
+        if (dataCode === 'name') {
+            // 在单元格设置为自动行高后,单元格的内容有空格时,spreadjs会将空格认为是换行,因此需要处理空格
+            value = node.data.name && node.data.name.replace(new RegExp(' ', 'g'), '\t') || '';
+        }
+        else if(dataCode === 'unitPriceFile'){
             if(node.data.projType === projectType.tender){
                 value = node.data.property && node.data.property.unitPriceFile && node.data.property.unitPriceFile.name ? node.data.property.unitPriceFile.name : '';
             }
@@ -1120,7 +1138,9 @@ const projTreeObj = {
             sheet.setRowCount(nodes.length);
             let treeNodeCell = me.getTreeNodeCell(tree);
             sheet.getRange(-1, 0, -1, 1).cellType(treeNodeCell);
+            const rows = [];
             for(let i = 0; i < nodes.length; i++){
+                rows.push(i);
                 for(let j = 0; j < headers.length; j++){
                     sheet.getRange(-1, j, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign[headers[j]['hAlign']]);
                     sheet.getRange(-1, j, -1, 1).vAlign(GC.Spread.Sheets.VerticalAlign[headers[j]['vAlign']]);
@@ -1136,6 +1156,7 @@ const projTreeObj = {
                     sheet.setRowVisible(nodes[i].serialNo(), nodes[i].visible);
                 }
             }
+            sheetCommonObj.setRowsAutoFit(sheet, rows, 0, true);
         };
         me.renderSheetFuc(sheet, fuc);
     },
@@ -1239,8 +1260,13 @@ const projTreeObj = {
     getFileListWithPath:function (list) {
         for(let n of list){
             let node = projTreeObj.tree.findNode(n.ID);
-            if(node) n.name = getPathName(node);
+            if(node) {
+                n.name = getPathName(node);
+            }
+            n.serialNo = node && node.serialNo() || 1;
         }
+        // 按照正确的树结构排序
+        list.sort((a, b) => a.serialNo - b.serialNo);
 
         function getPathName(node) {
             if(node.parent && node.parent.data){
@@ -2042,7 +2068,7 @@ $(document).ready(function() {
             dialog.modal('hide');
             select.data.name = newName;
             let sheet = projTreeObj.workBook.getActiveSheet();
-            sheet.setValue(sheet.getActiveRowIndex(), 0, newName);
+            projTreeObj.setCellValue({ row: sheet.getActiveRowIndex(), col: 0 }, select, sheet, projTreeObj.setting);
         });
     });
 
@@ -2538,6 +2564,8 @@ function AddTenderItems(selected, projName, tenderName, property, callback, errC
                 });
                 let pojNode = projTreeObj.insert(projData, parent, next);
                 let tenderNode = projTreeObj.insert(tenderData, pojNode, null);
+                const rows = [pojNode.serialNo(), tenderNode.serialNo()];
+                sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true)
                 callback();
             }, errCB);
         }, errCB);
@@ -2554,14 +2582,15 @@ function AddTenderItems(selected, projName, tenderName, property, callback, errC
                 updateDatas.push({updateType: 'update', updateData: {ID: pre.id(), NextSiblingID: tenderID}});
             }
             UpdateProjectData(updateDatas, function (datas) {
-                let tenderNode = null;
                 datas.forEach(function (data) {
                     if(data.updateType === 'new') {
                         data.updateData.shareInfo = [];
                         setInitSummaryData(data.updateData);
                         data.updateData.feeStandardName = data.updateData.property.feeStandardName || '';
                         data.updateData.valuationType = data.updateData.property.valuationType === 'bill' ? '预算' : '工程量清单';
-                        tenderNode = projTreeObj.insert(data.updateData, tempProj, null);
+                        const tenderNode = projTreeObj.insert(data.updateData, tempProj, null);
+                        const rows = [tenderNode.serialNo()];
+                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true);
                     }
                 });
                 callback();
@@ -2601,7 +2630,8 @@ function AddChildrenItem(selected, name, property, type, existCallback, sucCallb
                     if (data.updateType === 'new') {
                         data.updateData.shareInfo = [];
                         setInitSummaryData(data.updateData);
-                        projTreeObj.insert(data.updateData, parent, null);
+                        const node = projTreeObj.insert(data.updateData, parent, null);
+                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), [node.serialNo()], 0, true);
                     }
                 });
                 sucCallback();
@@ -2641,7 +2671,8 @@ function AddSiblingsItem(selected, name, property, type, existCallback, sucCallb
                     if (data.updateType === 'new') {
                         data.updateData.shareInfo = [];
                         setInitSummaryData(data.updateData);
-                        projTreeObj.insert(data.updateData, parent, next);
+                        const node = projTreeObj.insert(data.updateData, parent, next);
+                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), [node.serialNo()], 0, true);
                     }
                 });
                 sucCallback();