Przeglądaj źródła

项目管理窗口,工程列表列,名称自动换行显示

vian 5 lat temu
rodzic
commit
c29b03b96c

+ 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');
     }
 }

+ 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();