瀏覽代碼

可视化批量处理格子属性

TonyKang 3 年之前
父節點
當前提交
60f030176b
共有 1 個文件被更改,包括 123 次插入27 次删除
  1. 123 27
      web/maintain/report/js/rpt_tpl_vis_jumbo.js

+ 123 - 27
web/maintain/report/js/rpt_tpl_vis_jumbo.js

@@ -87,7 +87,7 @@ let visualJumbo = {
             for (let iCol = 0; iCol < sheet.getColumnCount(); iCol++) {
                 let cell = sheet.getCell(iRow, iCol);
                 if (cell.backColor() === 'LightGray' || cell.backColor() === 'LightCyan') {
-                    visualCommonOprObj.setupBorder(sheet.getCell(iRow, iCol), border);
+                    // visualCommonOprObj.setupBorder(sheet.getCell(iRow, iCol), border); //在优化后就不需要在这里硬设边框,原先是不合理的
                 } else if (cell.backColor() === 'White') {
                     sheet.addSpan(iRow, 0, 1, sheet.getColumnCount());
                     break;
@@ -499,7 +499,6 @@ let visualJumbo = {
             sheet = me.tplWorkBook.getActiveSheet();
         let selectedRanges = sheet.getSelections();
         if (selectedRanges.length > 0) {
-            let cell = sheet.getCell(selectedRanges[0].row, selectedRanges[0].col);
             if (fontAttr === "自定义") {
                 fontAttr = {};
                 fontAttr[JV.FONT_PROPS[JV.FONT_PROP_IDX_NAME]] = "宋体";
@@ -511,13 +510,37 @@ let visualJumbo = {
                 fontAttr[JV.FONT_PROPS[JV.FONT_PROP_IDX_STRIKEOUT]] = "F"; //strikeout
                 fontAttr[JV.FONT_PROPS[JV.FONT_PROP_IDX_ANGLE]] = 0;   //angle
             }
-            me.bandMappingObj.fontAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_font"] = fontAttr;
+            /*
+             me.bandMappingObj.fontAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_font"] = fontAttr;
+             me._setupFont(fontAttr);
+             if (typeof fontAttr === 'string') {
+             let idx = rpt_tpl_cfg_helper.reportCfg.fontArr.indexOf(fontAttr);
+             fontAttr = rpt_tpl_cfg_helper.reportCfg.fonts[idx];
+             }
+             let cell = sheet.getCell(selectedRanges[0].row, selectedRanges[0].col);
+             me.private_setup_cell_font(cell, fontAttr);
+             /*/
             me._setupFont(fontAttr);
             if (typeof fontAttr === 'string') {
                 let idx = rpt_tpl_cfg_helper.reportCfg.fontArr.indexOf(fontAttr);
                 fontAttr = rpt_tpl_cfg_helper.reportCfg.fonts[idx];
             }
-            me.private_setup_cell_font(cell, fontAttr);
+            for (let selIdx = 0; selIdx < selectedRanges.length; selIdx++) {
+                let startRow = selectedRanges[selIdx].row;
+                for (let rowIdx = 0; rowIdx < selectedRanges[selIdx].rowCount; rowIdx++) {
+                    let startCol = selectedRanges[selIdx].col;
+                    for (let colIdx = 0; colIdx < selectedRanges[selIdx].colCount; colIdx++) {
+                        if (dom.value === '自定义') {
+                            me.bandMappingObj.fontAttr[(startRow + rowIdx) + "_" + (startCol + colIdx) + "_font"] = fontAttr;
+                        } else {
+                            me.bandMappingObj.fontAttr[(startRow + rowIdx) + "_" + (startCol + colIdx) + "_font"] = dom.value;
+                        }
+                        let cell = sheet.getCell(startRow + rowIdx, startCol + colIdx);
+                        me.private_setup_cell_font(cell, fontAttr);
+                    }
+                }
+            }
+            //*/
         }
     },
     setupCellFont: function () {
@@ -668,9 +691,38 @@ let visualJumbo = {
             borderLine.style = GC.Spread.Sheets.LineStyle.thin;
             borderThick.style = GC.Spread.Sheets.LineStyle.thick;
 
-            let cellRange = new GC.Spread.Sheets.CellRange(sheet, selectedRanges[0].row, selectedRanges[0].col, selectedRanges[0].rowCount, selectedRanges[0].colCount);
+            /*
+             let cellRange = new GC.Spread.Sheets.CellRange(sheet, selectedRanges[0].row, selectedRanges[0].col, selectedRanges[0].rowCount, selectedRanges[0].colCount);
 
-            const _setCB = function (lineThick, borderObj) {
+             const _setCB = function (lineThick, borderObj) {
+             if (lineThick === 0) {
+             cellRange.setBorder(borderEmpty, borderObj);
+             } else if (lineThick === 1) {
+             cellRange.setBorder(borderLine, borderObj);
+             } else {
+             cellRange.setBorder(borderThick, borderObj);
+             }
+             };
+             for (let borderLine of borderObj[JV.PROP_BORDER_STYLE]) {
+             switch (borderLine[JV.PROP_POSITION]) {
+             case JV.PROP_LEFT:
+             _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {left: true});
+             break;
+             case JV.PROP_RIGHT:
+             _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {right: true});
+             break;
+             case JV.PROP_TOP:
+             _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {top: true});
+             break;
+             case JV.PROP_BOTTOM:
+             _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {bottom: true});
+             break;
+             default:
+             break;
+             }
+             }
+             /*/
+            const _setCB = function (lineThick, borderObj, cellRange) {
                 if (lineThick === 0) {
                     cellRange.setBorder(borderEmpty, borderObj);
                 } else if (lineThick === 1) {
@@ -679,24 +731,32 @@ let visualJumbo = {
                     cellRange.setBorder(borderThick, borderObj);
                 }
             };
-            for (let borderLine of borderObj[JV.PROP_BORDER_STYLE]) {
-                switch (borderLine[JV.PROP_POSITION]) {
-                    case JV.PROP_LEFT:
-                        _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {left: true});
-                        break;
-                    case JV.PROP_RIGHT:
-                        _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {right: true});
-                        break;
-                    case JV.PROP_TOP:
-                        _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {top: true});
-                        break;
-                    case JV.PROP_BOTTOM:
-                        _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {bottom: true});
-                        break;
-                    default:
-                        break;
+            let startRow = selectedRanges[0].row;
+            for (let rowIdx = 0; rowIdx < selectedRanges[0].rowCount; rowIdx++) {
+                let startCol = selectedRanges[0].col;
+                for (let colIdx = 0; colIdx < selectedRanges[0].colCount; colIdx++) {
+                    let cellRange = new GC.Spread.Sheets.CellRange(sheet, startRow + rowIdx, startCol + colIdx, 1, 1);
+                    for (let borderLine of borderObj[JV.PROP_BORDER_STYLE]) {
+                        switch (borderLine[JV.PROP_POSITION]) {
+                            case JV.PROP_LEFT:
+                                _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {left: true}, cellRange);
+                                break;
+                            case JV.PROP_RIGHT:
+                                _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {right: true}, cellRange);
+                                break;
+                            case JV.PROP_TOP:
+                                _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {top: true}, cellRange);
+                                break;
+                            case JV.PROP_BOTTOM:
+                                _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {bottom: true}, cellRange);
+                                break;
+                            default:
+                                break;
+                        }
+                    }
                 }
             }
+            //*/
             sheet.resumePaint();
         }
     },
@@ -832,15 +892,33 @@ let visualJumbo = {
             sheet = me.tplWorkBook.getActiveSheet();
         let selectedRanges = sheet.getSelections();
         if (selectedRanges.length > 0) {
-            // let cell = sheet.getCell(selectedRanges[0].row, selectedRanges[0].col);
-            me.bandMappingObj.borderAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_border"] = borderAttr;
+            /*
+             // let cell = sheet.getCell(selectedRanges[0].row, selectedRanges[0].col);
+             me.bandMappingObj.borderAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_border"] = borderAttr;
+             me._setupBorder(borderAttr);
+             // 然后要设置相关Cell的边框
+             if (typeof borderAttr === 'string') {
+             let idx = rpt_tpl_cfg_helper.reportCfg.borderArr.indexOf(borderAttr);
+             borderAttr = rpt_tpl_cfg_helper.reportCfg.styles[idx];
+             }
+             me._setupCellBorderEx(borderAttr);
+             /*/
             me._setupBorder(borderAttr);
-            // 然后要设置相关Cell的边框
             if (typeof borderAttr === 'string') {
                 let idx = rpt_tpl_cfg_helper.reportCfg.borderArr.indexOf(borderAttr);
                 borderAttr = rpt_tpl_cfg_helper.reportCfg.styles[idx];
             }
+            for (let selIdx = 0; selIdx < selectedRanges.length; selIdx++) {
+                let startRow = selectedRanges[selIdx].row;
+                for (let rowIdx = 0; rowIdx < selectedRanges[selIdx].rowCount; rowIdx++) {
+                    let startCol = selectedRanges[selIdx].col;
+                    for (let colIdx = 0; colIdx < selectedRanges[selIdx].colCount; colIdx++) {
+                        me.bandMappingObj.borderAttr[(startRow + rowIdx) + "_" + (startCol + colIdx) + "_border"] = dom.value;
+                    }
+                }
+            }
             me._setupCellBorderEx(borderAttr);
+            //*/
         }
     },
     changeControlEx: function (dom) {
@@ -848,14 +926,32 @@ let visualJumbo = {
             sheet = me.tplWorkBook.getActiveSheet();
         let selectedRanges = sheet.getSelections();
         if (selectedRanges.length > 0) {
-            me.bandMappingObj.ctrlAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_ctrl"] = ctrlAttr;
+            /*
+             me.bandMappingObj.ctrlAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_ctrl"] = ctrlAttr;
+             me._setupCtrl(ctrlAttr);
+             // 然后要设置相关Cell的上下左右控制(就是原setupCellAlignment)
+             if (typeof ctrlAttr === 'string') {
+             let idx = rpt_tpl_cfg_helper.reportCfg.controlArr.indexOf(ctrlAttr);
+             ctrlAttr = rpt_tpl_cfg_helper.reportCfg.ctrls[idx];
+             }
+             me._setupCellCtrlEx(ctrlAttr);
+             /*/
             me._setupCtrl(ctrlAttr);
-            // 然后要设置相关Cell的上下左右控制(就是原setupCellAlignment)
             if (typeof ctrlAttr === 'string') {
                 let idx = rpt_tpl_cfg_helper.reportCfg.controlArr.indexOf(ctrlAttr);
                 ctrlAttr = rpt_tpl_cfg_helper.reportCfg.ctrls[idx];
             }
+            for (let selIdx = 0; selIdx < selectedRanges.length; selIdx++) {
+                let startRow = selectedRanges[selIdx].row;
+                for (let rowIdx = 0; rowIdx < selectedRanges[selIdx].rowCount; rowIdx++) {
+                    let startCol = selectedRanges[selIdx].col;
+                    for (let colIdx = 0; colIdx < selectedRanges[selIdx].colCount; colIdx++) {
+                        me.bandMappingObj.ctrlAttr[(startRow + rowIdx) + "_" + (startCol + colIdx) + "_ctrl"] = dom.value;
+                    }
+                }
+            }
             me._setupCellCtrlEx(ctrlAttr);
+            //*/
         }
     },
     changeHAlign: function (dom) {