Sfoglia il codice sorgente

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

chenshilong 5 anni fa
parent
commit
05f4822545

+ 15 - 10
modules/ration_glj/facade/glj_calculate_facade.js

@@ -68,6 +68,7 @@ async function calculateQuantity(query,noNeedCal,refreshRationName = false,areaI
             areaSetting = project.property.areaSetting;
         }
          if(impactRation._doc.hasOwnProperty("rationAssList")&&impactRation.rationAssList.length>0){
+             prepareAss(impactRation.rationAssList);
              let temTimes = [];
              let thirdRationCodes=[];
              for(let i=0;i<impactRation.rationAssList.length;i++){
@@ -376,19 +377,23 @@ function getContent(coes) {
 }
 
 function prepareAss(assList) {//处理辅助定额,支持多个辅助定额的情况
-    for(let a of assList){
-        if(a.groupList && a.groupList.length > 1){//组里有多个定额的情况
-            let newList = _.sortByAll(a.groupList,['param']);//先按参数排序
-            for(let n of newList){
-                if(a.actualValue > n.stdValue && a.actualValue <= parseFloat(n.param)){//落在中间,则用组里的这条定额
-                    a._doc.param = n.param;
-                    a._doc.paramName = n.paramName;
-                    a._doc.assistCode = n.assistCode;
-                    break;
-                }
+  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){

+ 0 - 2
public/web/sheet/sheet_common.js

@@ -1498,11 +1498,9 @@ var sheetCommonObj = {
         }
     },
     setRowsAutoFit(sheet, rows, col, wordWrap) {
-        console.time('rowFit');
         rows.forEach(row => {
             sheet.getCell(row, col).wordWrap(wordWrap);
             sheet.autoFitRow(row);
         });
-        console.timeEnd('rowFit');
     }
 }

+ 0 - 2
web/building_saas/main/js/views/glj_view.js

@@ -137,10 +137,8 @@ var gljOprObj = {
     onRationGLJSelectionChange:function(sender,args){
         let me = gljOprObj;
         let selected = args.newSelections[0] ? args.newSelections[0] : {row: 0, col: 0};
-        console.log("selected changed-------");
         //这主要记录是否点击了sheet以外的地方,如果点击了sheet里的单元格,则将cancelUpdate设置为true不触发提交更新操作
         me.cancelUpdate = true;//取消延时任务由这里进行判断处理
-        console.log("change to true");
         me.sheetInitSelection(selected);
         if(me.rationGljEditObj){
             if(ifNeedUpdate(selected)){

+ 40 - 11
web/building_saas/pm/js/pm_newMain.js

@@ -937,9 +937,23 @@ const projTreeObj = {
         let shareImg = document.getElementById('share_pic'),
             shareImgWidth = 13,
             shareImgHeight = 13;
+        let defaultHeight; // 单元格默认高度
         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();
@@ -1142,7 +1156,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 : '';
             }
@@ -1194,7 +1212,7 @@ const projTreeObj = {
                     sheet.setRowVisible(nodes[i].serialNo(), nodes[i].visible);
                 }
             }
-            //sheetCommonObj.setRowsAutoFit(sheet, rows, 0, true);
+            sheetCommonObj.setRowsAutoFit(sheet, rows, 0, true);
         };
         me.renderSheetFuc(sheet, fuc);
     },
@@ -2647,7 +2665,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);
         });
     });
 
@@ -2970,6 +2988,17 @@ function initProjects(callback) {
             projTreeObj.tree = pmTree.createNew(projTreeObj.setting, datas);
             projTreeObj.tree.selected = projTreeObj.tree.items[0];
             projTreeObj.workBook = projTreeObj.buildSheet(projTreeObj.workBook,'projSpread',projTreeObj.setting);
+            // 调整列后自适应行高
+            /* projTreeObj.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ColumnWidthChanged, function (e, info) {
+                info.sheet.suspendPaint();
+                info.sheet.suspendEvent();
+                const rowCount = info.sheet.getRowCount();
+                for (let i = 0; i < rowCount; i++) {
+                    info.sheet.autoFitRow(i);
+                }
+                info.sheet.resumePaint();
+                info.sheet.resumeEvent();
+            }); */
             const sheet = projTreeObj.workBook.getSheet(0);
             sheet.options.frozenlineColor = '#ababab';
             sheet.frozenColumnCount(2);
@@ -3240,8 +3269,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
                 let pojNode = projTreeObj.insert(projData, parent, next);
                 let engNode = projTreeObj.insert(engData, pojNode, null);
                 let tenderNode = projTreeObj.insert(tenderData, engNode, null);
-                /* const rows = [pojNode.serialNo(), engNode.serialNo(), tenderNode.serialNo()];
-                sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true) */
+                const rows = [pojNode.serialNo(), engNode.serialNo(), tenderNode.serialNo()];
+                sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true)
                 callback();
             }, errCB);
         }, errCB);
@@ -3281,8 +3310,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
                 });
                 let engNode = projTreeObj.insert(engData, tempProj, next);
                 let tenderNode = projTreeObj.insert(tenderData, engNode, null);
-                /* const rows = [engNode.serialNo(), tenderNode.serialNo()];
-                sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true); */
+                const rows = [engNode.serialNo(), tenderNode.serialNo()];
+                sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true);
                 callback();
             }, errCB);
         }, errCB);
@@ -3304,8 +3333,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
                         setInitSummaryData(data.updateData);
                         data.updateData.feeStandardName = data.updateData.property.feeStandardName || '';
                         let tenderNode = projTreeObj.insert(data.updateData, tempEng, null);
-                        /* const rows = [tenderNode.serialNo()];
-                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true); */
+                        const rows = [tenderNode.serialNo()];
+                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), rows, 0, true);
                     }
                 });
                 callback();
@@ -3346,7 +3375,7 @@ function AddChildrenItem(selected, name, property, type, existCallback, sucCallb
                         data.updateData.shareInfo = [];
                         setInitSummaryData(data.updateData);
                         let node = projTreeObj.insert(data.updateData, parent, null);
-                        //sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), [node.serialNo()], 0, true);
+                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), [node.serialNo()], 0, true);
                     }
                 });
                 sucCallback();
@@ -3386,7 +3415,7 @@ function AddSiblingsItem(selected, name, property, type, existCallback, sucCallb
                         data.updateData.shareInfo = [];
                         setInitSummaryData(data.updateData);
                         const node = projTreeObj.insert(data.updateData, parent, next);
-                        //sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), [node.serialNo()], 0, true)
+                        sheetCommonObj.setRowsAutoFit(projTreeObj.workBook.getSheet(0), [node.serialNo()], 0, true)
                     }
                 });
                 sucCallback();