Ver código fonte

调整全部台账显示相关

maixinrong 5 anos atrás
pai
commit
9dbf50cd8b

+ 10 - 10
app/public/css/spreadjs/sheets/gc.spread.sheets.excelsmartcost.css

@@ -59,9 +59,9 @@
     background-image: none;
     background-color:#e9ecef;
     border-style:solid;
-    border-left-color: #dee2e6 !important;
-    border-right-color: #dee2e6 !important;
-    border-bottom-color: #dee2e6 !important;
+    border-left-color: #cccccc !important;
+    border-right-color: #cccccc !important;
+    border-bottom-color: #cccccc !important;
 }
 .gc-columnHeader-hover {
     color: #444444;
@@ -95,9 +95,9 @@
     background-color: #e9ecef;
     background-image: none;
     border-style:solid;
-    border-top-color: #efefef !important;
-    border-bottom-color: #d5ded5 !important;
-    border-right-color: #dee2e6 !important;
+    border-top-color: #cccccc !important;
+    border-bottom-color: #cccccc !important;
+    border-right-color: #cccccc !important;
 }
 .gc-rowHeader-hover {
     color: #73a2e3;
@@ -113,9 +113,9 @@
     background-color: #dddfe1;
     background-image: none;
     border-style:solid;
-    border-top-color: #dee2e6 !important;
-    border-bottom-color: #dee2e6 !important;
-    border-right-color: #dee2e6 !important;
+    border-top-color: #cccccc !important;
+    border-bottom-color: #cccccc !important;
+    border-right-color: #cccccc !important;
 }
 .gc-rowHeader-highlight {
     color: #73a2e3;
@@ -145,7 +145,7 @@
     border-color: #217346;
 }
 .gc-gridlineColor {
-    border-color: #dee2e6;
+    border-color: #cccccc;
 }
 .gc-group {
     background-color: white;

+ 3 - 2
app/public/js/compare_tz.js

@@ -32,7 +32,7 @@ $(document).ready(function () {
         headerFont: '12px 微软雅黑',
         font: '12px 微软雅黑',
         readOnly: true,
-        getColor: function (sheet, data, col, defaultColor) {
+        getColor: function (sheet, data, row, col, defaultColor) {
             function checkDiffer(data) {
                 return !checkZero(data.qty_differ) && !checkZero(data.tp_differ);
             }
@@ -53,7 +53,7 @@ $(document).ready(function () {
         headerFont: '12px 微软雅黑',
         font: '12px 微软雅黑',
         readOnly: true,
-        getColor: function (sheet, data, col, defaultColor) {
+        getColor: function (sheet, data, row, col, defaultColor) {
             function checkDiffer(data) {
                 const fieldSufs = sheet.zh_setting.fieldSufs;
                 if (fieldSufs.length <= 1) return false;
@@ -69,6 +69,7 @@ $(document).ready(function () {
     // 初始化台账
     const billsSpread = SpreadJsObj.createNewSpread($('#bills-spread')[0]);
     const billsSheet = billsSpread.getActiveSheet();
+    SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
     SpreadJsObj.initSheet(billsSheet, ledgerSpreadSetting);
     // 初始化部位
     const posSpread = SpreadJsObj.createNewSpread($('#pos-spread')[0]);

+ 7 - 1
app/public/js/ledger.js

@@ -739,6 +739,11 @@ $(document).ready(function() {
             }, null, true);
         },
         selectionChanged: function (e, info) {
+            const rows = [];
+            if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+            if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+            if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+
             if (!info.oldSelections[0] || info.newSelections[0].row !== info.oldSelections[0].row) {
                 posOperationObj.loadCurPosData();
                 SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
@@ -855,6 +860,7 @@ $(document).ready(function() {
             }
         }
     };
+    sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
     ledgerTreeCol.initSpreadSetting(ledgerSpreadSetting);
     SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
     // 绑定事件
@@ -1553,7 +1559,7 @@ $(document).ready(function() {
                         const curCol = info.cellRange.col + iCol;
                         const colSetting = info.sheet.zh_setting.cols[curCol];
                         if (!colSetting) continue;
-                        
+
                         posData[colSetting.field] = trimInvalidChar(info.sheet.getText(curRow, curCol));
 
                         if (colSetting.type === 'Number') {

+ 6 - 0
app/public/js/ledger_audit.js

@@ -35,6 +35,7 @@ $(document).ready(() => {
         treeSetting.calcFields = ['deal_tp', 'sgfh_tp', 'sjcl_tp', 'qtcl_tp', 'total_price'];
     }
     const ledgerTree = createNewPathTree('fx', treeSetting);
+    sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
     SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
 
     // 初始化 部位明细
@@ -98,6 +99,11 @@ $(document).ready(() => {
     }, null, true);
 
     ledgerSpread.bind(spreadNS.Events.SelectionChanged, function (e, info) {
+        const rows = [];
+        if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+        if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+        if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+        
         loadCurPosData();
         SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
         posSearch.search($('#pos-keyword').val());

+ 1 - 1
app/public/js/ledger_gather.js

@@ -31,7 +31,7 @@ $(document).ready(() => {
         headerFont: '12px 微软雅黑',
         font: '12px 微软雅黑',
         readOnly: true,
-        getColor: function (sheet, data, col, defaultColor) {
+        getColor: function (sheet, data, row, col, defaultColor) {
             return data 
                 ? $('#compare-tag')[0].checked && data.compare_differ 
                     ? '#f8d7da' 

+ 6 - 0
app/public/js/measure_compare.js

@@ -94,6 +94,7 @@ $(document).ready(() => {
     initSpreadSettingWithRoles([]);
     const billsSpread = SpreadJsObj.createNewSpread($('#bills-spread')[0]);
     const billsSheet = billsSpread.getActiveSheet();
+    sjsSettingObj.setFxTreeStyle(billsSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
     SpreadJsObj.initSheet(billsSheet, billsSpreadSetting);
     const posSpread = SpreadJsObj.createNewSpread($('#pos-spread')[0]);
     const posSheet = posSpread.getActiveSheet();
@@ -162,6 +163,11 @@ $(document).ready(() => {
         SpreadJsObj.resetTopAndSelect(posSheet);
     }
     billsSheet.bind(spreadNS.Events.SelectionChanged, function (e, info) {
+        const rows = [];
+        if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+        if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+        if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+
         if (info.newSelections) {
             const iNewRow = info.newSelections[0].row;
             if (info.oldSelections) {

+ 13 - 5
app/public/js/revise.js

@@ -26,6 +26,7 @@ $(document).ready(() => {
     // 初始化spread
     const billsSpread = SpreadJsObj.createNewSpread($('#bills-spread')[0]);
     const billsSheet = billsSpread.getActiveSheet();
+    sjsSettingObj.setFxTreeStyle(billsSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
     SpreadJsObj.initSheet(billsSheet, billsSpreadSetting);
     const posSpread = SpreadJsObj.createNewSpread($('#pos-spread')[0]);
     const posSheet = posSpread.getActiveSheet();
@@ -223,11 +224,18 @@ $(document).ready(() => {
             });
         },
         selectionChanged: function (e, info) {
-            if (info.newSelections[0].row !== info.oldSelections[0].row) {
-                billsTreeSpreadObj.refreshOperationValid(info.sheet);
-                posSpreadObj.loadCurPosData();
-                SpreadJsObj.saveTopAndSelect(billsSheet, ckBillsSpread);
-                posSearch.search($('#pos-keyword').val());
+            const rows = [];
+            if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+            if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+            if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+
+            if (info.newSelections) {
+                if (!info.oldSelections || info.newSelections[0].row !== info.oldSelections[0].row) {
+                    billsTreeSpreadObj.refreshOperationValid(info.sheet);
+                    posSpreadObj.loadCurPosData();
+                    SpreadJsObj.saveTopAndSelect(billsSheet, ckBillsSpread);
+                    posSearch.search($('#pos-keyword').val());
+                }
             }
             billsTreeSpreadObj.loadExprToInput(info.sheet);
         },

+ 13 - 5
app/public/js/revise_history.js

@@ -14,6 +14,7 @@ $(document).ready(() => {
     // 初始化spread
     const billsSpread = SpreadJsObj.createNewSpread($('#bills-spread')[0]);
     const billsSheet = billsSpread.getActiveSheet();
+    sjsSettingObj.setFxTreeStyle(billsSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
     SpreadJsObj.initSheet(billsSheet, billsSpreadSetting);
     const posSpread = SpreadJsObj.createNewSpread($('#pos-spread')[0]);
     const posSheet = posSpread.getActiveSheet();
@@ -116,11 +117,18 @@ $(document).ready(() => {
             });
         },
         selectionChanged: function (e, info) {
-            if (info.newSelections[0].row !== info.oldSelections[0].row) {
-                SpreadJsObj.saveTopAndSelect(billsSheet, ckBillsSpread);
-                if (isTz) {
-                    posSpreadObj.loadCurPosData();
-                    posSearch.search($('#pos-keyword').val());
+            const rows = [];
+            if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+            if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+            if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+
+            if (info.newSelections) {
+                if (!info.oldSelections || info.newSelections[0].row !== info.oldSelections[0].row) {
+                    SpreadJsObj.saveTopAndSelect(billsSheet, ckBillsSpread);
+                    if (isTz) {
+                        posSpreadObj.loadCurPosData();
+                        posSearch.search($('#pos-keyword').val());
+                    }
                 }
             }
         },

+ 41 - 0
app/public/js/shares/sjs_setting.js

@@ -0,0 +1,41 @@
+const sjsSettingObj = (function () {
+    const FxTreeStyle = {
+        jz: 'jianzhu',
+    }
+    const setJzFxTreeStyle = function (setting) {
+        setting.tree = {
+            getFont: function (sheet, data, row, col, defaultFont) {
+                if (sheet.zh_tree && data.level === 1) {
+                    return 'bold ' + defaultFont;
+                } else {
+                    return defaultFont;
+                }
+            },
+            getColor: function (sheet, data, row, col, defaultColor) {
+                const sel = sheet.getSelections();
+                const curRow = sel && sel[0] ? sel[0].row : -1;
+                if (sheet.zh_tree) {
+                    if (curRow === row) {
+                        return '#fffacd';
+                    } else if (data.level === 2) {
+                        return '#C4CAFB';
+                    } else if ((!data.b_code || data.b_code === '') && data.level > 2) {
+                        return '#DFE8F9';
+                    } else {
+                        return defaultColor;
+                    }
+                } else {
+                    return defaultColor;
+                }
+            }
+        }
+    };
+    const setFxTreeStyle = function (setting, tag) {
+        switch (tag) {
+            case FxTreeStyle.jz:
+                setJzFxTreeStyle(setting);
+                break;
+        }
+    }
+    return {setFxTreeStyle, FxTreeStyle};
+})();

+ 77 - 17
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -340,6 +340,7 @@ const SpreadJsObj = {
     initSheet: function (sheet, setting) {
         this.beginMassOperation(sheet);
         setting.pos = sheet.getParent().pos;
+        if (!setting.tree) setting.tree = {};
         sheet.zh_setting = setting;
         if (sheet.zh_setting.headColWidth) {
             for (const [i, w] of sheet.zh_setting.headColWidth.entries()) {
@@ -350,7 +351,8 @@ const SpreadJsObj = {
         this._initSheetHeader(sheet);
         sheet.setRowCount(sheet.zh_setting.emptyRows);
         sheet.extendCellType = {};
-        sheet.getRange(0, 0, sheet.getRowCount(), sheet.getColumnCount()).locked(setting.readOnly);
+        sheet.borderLine = new spreadNS.LineBorder('#cccccc', spreadNS.LineStyle.thin);
+        sheet.getRange(0, 0, sheet.getRowCount(), sheet.getColumnCount()).locked(setting.readOnly).setBorder(sheet.borderLine, {all: true});
         this.endMassOperation(sheet);
     },
     reLoadSheetHeader: function (sheet) {
@@ -370,9 +372,17 @@ const SpreadJsObj = {
             } else if (col.field !== '' && data[col.field]) {
                 cell.value(data[col.field]);
             }
+
+            let font = sheet.getDefaultStyle().font;
+            console.log(font);
             if (col.font) {
-                cell.font(col.font);
+                font = col.font;
+            }
+            if (sheet.zh_setting.tree.getFont && Object.prototype.toString.apply(sheet.zh_setting.tree.getFont) === "[object Function]") {
+                font = sheet.zh_setting.tree.getFont(sheet, data, row, col, font);
             }
+            cell.font(font);
+
             if (col.foreColor) {
                 if (Object.prototype.toString.apply(col.foreColor) === "[object Function]") {
                     cell.foreColor(col.foreColor(data, sheet.getDefaultStyle().foreColor));
@@ -380,19 +390,29 @@ const SpreadJsObj = {
                     cell.foreColor(col.foreColor);
                 }
             }
+
             if (col.readOnly && Object.prototype.toString.apply(col.readOnly) === "[object Function]") {
                 cell.locked(col.readOnly(data) || sheet.zh_setting.readOnly || false).vAlign(1).hAlign(col.hAlign);
             } else {
                 cell.locked(col.readOnly || sheet.zh_setting.readOnly || false).vAlign(1).hAlign(col.hAlign);
             }
+
             if (col.formatter) {
                 cell.formatter(col.formatter);
             } else if (col.type === 'Number') {
                 cell.formatter(SpreadJsObj.Formatter.getNumberFormatter('0.######'));
             }
+
+            let backColor = sheet.getDefaultStyle().backColor;
+            if (sheet.zh_setting.tree.getColor && Object.prototype.toString.apply(sheet.zh_setting.tree.getColor) === "[object Function]") {
+                backColor = sheet.zh_setting.tree.getColor(sheet, data, row, col, backColor);
+            }
             if (sheet.zh_setting.getColor && Object.prototype.toString.apply(sheet.zh_setting.getColor) === "[object Function]") {
-                cell.backColor(sheet.zh_setting.getColor(sheet, data, col, sheet.getDefaultStyle().backColor));
+                backColor = sheet.zh_setting.getColor(sheet, data, row, col, backColor);
             }
+            cell.backColor(backColor);
+
+            cell.setBorder(sheet.borderLine, {all: true});
         });
 
     },
@@ -591,6 +611,30 @@ const SpreadJsObj = {
             this.endMassOperation(sheet);
         }
     },
+    reloadRowsBackColor: function (sheet, rows) {
+        const sortData = sheet.zh_dataType === 'tree' ? sheet.zh_tree.nodes : sheet.zh_data;
+
+        this.beginMassOperation(sheet);
+        try {
+            for (const row of rows) {
+                if (row < 0) { continue; }
+                const data = sortData[row];
+                for (const [iCol, col] of sheet.zh_setting.cols.entries()) {
+                    let backColor = sheet.getDefaultStyle().backColor;
+                    if (sheet.zh_setting.tree.getColor && Object.prototype.toString.apply(sheet.zh_setting.tree.getColor) === "[object Function]") {
+                        backColor = sheet.zh_setting.tree.getColor(sheet, data, row, col, backColor);
+                    }
+                    if (sheet.zh_setting.getColor && Object.prototype.toString.apply(sheet.zh_setting.getColor) === "[object Function]") {
+                        backColor = sheet.zh_setting.getColor(sheet, data, row, col, backColor);
+                    }
+                    sheet.getCell(row, iCol).backColor(backColor);
+                }
+            };
+            this.endMassOperation(sheet);
+        } catch (err) {
+            this.endMassOperation(sheet);
+        }
+    },
     /**
      * 重新加载部分列数据
      * @param {GC.Spread.Sheets.Worksheet} sheet
@@ -747,6 +791,7 @@ const SpreadJsObj = {
             if (ts === undefined || ts === null) return;
             if (ts.sel) {
                 sheet.setSelection(ts.sel.row, ts.sel.col, ts.sel.rowCount, ts.sel.colCount);
+                SpreadJsObj.reloadRowsBackColor(sheet, [0, ts.sel.row]);
             }
             if (ts.top) {
                 sheet.showRow(ts.top, spreadNS.VerticalPosition.top);
@@ -861,6 +906,9 @@ const SpreadJsObj = {
             const levelIndent = -5;
             const halfBoxLength = 5;
             const halfExpandLength = 3;
+            const lineColor = '#515151';//'#b8b8b8';
+            const expandBoxColor = '#434343';//'#808080';
+            const dotLine = true;
 
             /**
              * 画一条点线段
@@ -920,7 +968,7 @@ const SpreadJsObj = {
                 canvas.lineTo(rect.right, rect.top);
                 canvas.lineTo(rect.left, rect.top);
                 canvas.stroke();
-                canvas.fillStyle = fillColor;
+                canvas.fillStyle = fillColor ? fillColor : 'white';
                 canvas.fill();
                 canvas.restore();
             };
@@ -935,7 +983,7 @@ const SpreadJsObj = {
              * @param {Number} centerY - 按钮中央坐标
              * @param {Boolean} expanded - 当前节点展开收起状态
              */
-            const drawExpandBox = function (canvas, x, y, w, h, centerX, centerY, expanded) {
+            const drawExpandBox = function (canvas, x, y, w, h, centerX, centerY, expanded, style) {
                 let rect = {
                     top: centerY - halfBoxLength,
                     bottom: centerY + halfBoxLength,
@@ -947,18 +995,18 @@ const SpreadJsObj = {
                 if (rect.left < x + w) {
                     // 方框超出单元格宽度时,超出部分不画。
                     rect.right = Math.min(rect.right, x + w);
-                    drawBox(canvas, rect, '#808080', 'white');
+                    drawBox(canvas, rect, expandBoxColor, style.backColor);
 
                     // 画中心十字
                     // 画十字横线
                     h1 = centerX - halfExpandLength;
                     h2 = Math.min(centerX + halfExpandLength, x + w);
                     if (h2 > h1) {
-                        drawLine(canvas, h1, centerY, h2, centerY, '#808080');
+                        drawLine(canvas, h1, centerY, h2, centerY, expandBoxColor);
                     }
                     // 画十字竖线
                     if (!expanded && (centerX < x + w)) {
-                        drawLine(canvas, centerX, centerY - halfExpandLength, centerX, centerY + halfExpandLength, '#808080');
+                        drawLine(canvas, centerX, centerY - halfExpandLength, centerX, centerY + halfExpandLength, expandBoxColor);
                     }
                 }
             };
@@ -1002,8 +1050,11 @@ const SpreadJsObj = {
                             // Draw Horizontal Line
                             if (centerX < x + w) {
                                 const x1 = centerX + indent / 2;
-                                //drawLine(canvas, centerX, centerY, Math.min(x1, x + w), centerY, 'gray');
-                                drawDotLine(canvas, centerX, centerY, Math.min(x1, x + w), centerY, '#b8b8b8');
+                                if (dotLine) {
+                                    drawDotLine(canvas, centerX, centerY, Math.min(x1, x + w), centerY, lineColor);
+                                } else {
+                                    drawLine(canvas, centerX, centerY, Math.min(x1, x + w), centerY, lineColor);
+                                }
                             }
                             // Draw Vertical Line
                             if (centerX < x + w) {
@@ -1011,17 +1062,23 @@ const SpreadJsObj = {
                                 const parent = tree.getParent(node);
                                 const y2 = y1 - centerY;
                                 if (node.order === 1 && !parent) {
-                                    //drawLine(canvas, centerX, centerY, centerX, y1, 'gray');
-                                    drawDotLine(canvas, centerX, centerY, centerX, y1, '#b8b8b8');
+                                    if (dotLine) {
+                                        drawDotLine(canvas, centerX, centerY, centerX, y1, lineColor);
+                                    } else {
+                                        drawLine(canvas, centerX, centerY, centerX, y1, lineColor);
+                                    }
                                 } else {
-                                    //drawLine(canvas, centerX, y, centerX, y1, 'gray');
-                                    drawDotLine(canvas, centerX, y, centerX, y1, '#b8b8b8');
+                                    if (dotLine) {
+                                        drawDotLine(canvas, centerX, y, centerX, y1, lineColor);
+                                    } else {
+                                        drawLine(canvas, centerX, y, centerX, y1, lineColor);
+                                    }
                                 }
                             }
                         }
                         // Draw Expand Box
                         if (!node.is_leaf) {
-                            drawExpandBox(canvas, x, y, w, h, centerX, centerY, node.expanded);
+                            drawExpandBox(canvas, x, y, w, h, centerX, centerY, node.expanded, style);
                         }
                         // Draw Parent Line
                         if (showTreeLine) {
@@ -1029,8 +1086,11 @@ const SpreadJsObj = {
                             while (parent) {
                                 if (!tree.isLastSibling(parent)) {
                                     if (parentCenterX < x + w) {
-                                        //drawLine(canvas, parentCenterX, y, parentCenterX, y + h, 'gray');
-                                        drawDotLine(canvas, parentCenterX, y, parentCenterX, y + h, '#b8b8b8');
+                                        if (dotLine) {
+                                            drawDotLine(canvas, parentCenterX, y, parentCenterX, y + h, lineColor);
+                                        } else {
+                                            drawLine(canvas, parentCenterX, y, parentCenterX, y + h, lineColor);
+                                        }
                                     }
                                 }
                                 parent = tree.getParent(parent);

+ 19 - 5
app/public/js/stage.js

@@ -199,7 +199,7 @@ $(document).ready(() => {
                 headRowHeight: [32],
                 headerFont: '12px 微软雅黑',
                 font: '12px 微软雅黑',
-                getColor: function (sheet, data, col, defaultColor) {
+                getColor: function (sheet, data, row, col, defaultColor) {
                     if (col.field === 'uamount') {
                         if (!data.vamount) {
                             return (data.uamount && math.abs(data.uamount) > 0) ? '#ff6f5c' : defaultColor;
@@ -464,7 +464,7 @@ $(document).ready(() => {
         changesObj.loadChanges({bills: data});
     };
     ledgerSpreadSetting.dgnUpFields = ['deal_dgn_qty1', 'deal_dgn_qty2', 'c_dgn_qty1', 'c_dgn_qty2'];
-    ledgerSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+    ledgerSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         if (data) {
             if (data.is_tp) {
                 return data.end_contract_tp > data.total_price ? '#f8d7da' : defaultColor;
@@ -475,6 +475,7 @@ $(document).ready(() => {
             return defaultColor;
         }
     };
+    sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
     SpreadJsObj.initSheet(slSpread.getActiveSheet(), ledgerSpreadSetting);
     slSpread.getActiveSheet().frozenColumnCount(5);
     slSpread.getActiveSheet().options.frozenlineColor = '#93b5e4';
@@ -496,7 +497,7 @@ $(document).ready(() => {
         const node = SpreadJsObj.getSelectObject(slSpread.getActiveSheet());
         changesObj.loadChanges({bills: node, pos: data});
     };
-    posSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+    posSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         return data && data.end_contract_qty > data.quantity ? '#f8d7da' : defaultColor;
     };
     SpreadJsObj.initSheet(spSpread.getActiveSheet(), posSpreadSetting);
@@ -614,6 +615,11 @@ $(document).ready(() => {
             }
         },
         selectionChanged: function (e, info) {
+            const rows = [];
+            if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+            if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+            if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+            
             if (!info.oldSelections || !info.oldSelections[0] || info.newSelections[0].row !== info.oldSelections[0].row) {
                 stagePosSpreadObj.loadCurPosData();
                 SpreadJsObj.resetTopAndSelect(spSpread.getActiveSheet());
@@ -2097,7 +2103,7 @@ $(document).ready(() => {
             $('#choose2').on('shown.bs.modal', function () {
                 if (!self.gsSpread) {
                     self.gsSpread = SpreadJsObj.createNewSpread($('#im-gather-spread')[0]);
-                    SpreadJsObj.initSheet(self.gsSpread.getActiveSheet(), {
+                    const setting = {
                         cols: [
                             {title: '计量\n汇总', colSpan: '1', rowSpan: '1', field: 'check', hAlign: 1, width: 50, formatter: '@', readOnly: true, cellType: 'checkbox'},
                             {title: '项目节编号', colSpan: '1', rowSpan: '1', field: 'code', hAlign: 0, width: 150, formatter: '@', readOnly: true, cellType: 'tree'},
@@ -2111,7 +2117,9 @@ $(document).ready(() => {
                         defaultRowHeight: 21,
                         headerFont: '12px 微软雅黑',
                         font: '12px 微软雅黑',
-                    });
+                    }
+                    sjsSettingObj.setFxTreeStyle(setting, sjsSettingObj.FxTreeStyle.jz);
+                    SpreadJsObj.initSheet(self.gsSpread.getActiveSheet(), setting);
                     self.gsSpread.bind(spreadNS.Events.ButtonClicked, function (e, info) {
                         function checkParent(node) {
                             const parent = self.gsTree.getParent(node);
@@ -2194,6 +2202,12 @@ $(document).ready(() => {
                             }
                         }
                     });
+                    self.gsSpread.bind(spreadNS.Events.SelectionChanged, function (e, info) {
+                        const rows = [];
+                        if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+                        if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+                        if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+                    });
                     const gatherNodes = stage.im_gather_node ? _.map(stage.im_gather_node.split(',')) : [];
                     for (const node of self.gsTree.datas) {
                         node.check = gatherNodes.indexOf(node.id + '') !== -1;

+ 7 - 2
app/public/js/stage_compare.js

@@ -57,7 +57,7 @@ $(document).ready(function () {
     autoFlashHeight();
     // 根据设置整理Spread设置
     initSpreadSettingWithRoles(scRoles);
-    ledgerSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+    ledgerSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         function checkDiffer(data) {
             const fieldSufs = sheet.zh_setting.fieldSufs;
             if (fieldSufs.length <= 1) return false;
@@ -70,7 +70,7 @@ $(document).ready(function () {
         }
         return data.children.length === 0 && checkDiffer(data) ? '#F2DEDE' : defaultColor;
     };
-    posSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+    posSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         function checkDiffer(data) {
             const fieldSufs = sheet.zh_setting.fieldSufs;
             if (fieldSufs.length <= 1) return false;
@@ -173,6 +173,11 @@ $(document).ready(function () {
     }
     // 切换清单行,读取所属项目节数据
     ledgerSpread.getActiveSheet().bind(spreadNS.Events.SelectionChanged, function (e, info) {
+        const rows = [];
+        if (info.oldSelections && info.oldSelections[0]) rows.push(info.oldSelections[0].row);
+        if (info.newSelections && info.newSelections[0]) rows.push(info.newSelections[0].row);
+        if (rows.length > 0) SpreadJsObj.reloadRowsBackColor(info.sheet, rows);
+        
         if (info.newSelections) {
             const iNewRow = info.newSelections[0].row;
             if (info.oldSelections) {

+ 1 - 1
app/public/js/stage_gather.js

@@ -53,7 +53,7 @@ $(document).ready(function () {
     autoFlashHeight();
     // 初始化工程量清单
     const gclSpread = SpreadJsObj.createNewSpread($('#gcl-spread')[0]);
-    gclSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+    gclSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         return data 
             ? (data.overRange ? '#f8d7da' : data.differ ? '#FFE699' : defaultColor)
             : defaultColor;

+ 1 - 1
app/public/js/stage_pay.js

@@ -154,7 +154,7 @@ $(document).ready(() => {
         makeAttTable(data);
         $('#file').modal('show');
     };
-    paySpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+    paySpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
         if (data) {
             if (data.pause) {
                 return '#f2f2f2';

+ 8 - 0
config/web.js

@@ -133,6 +133,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/ledger_search.js",
                     "/public/js/shares/merge_peg.js",
                     "/public/js/zh_calc.js",
@@ -152,6 +153,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/ledger_search.js",
                     "/public/js/zh_calc.js",
                     "/public/js/path_tree.js",
@@ -206,6 +208,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/ledger_search.js",
                     "/public/js/shares/merge_peg.js",
                     "/public/js/zh_calc.js",
@@ -224,6 +227,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/ledger_search.js",
                     "/public/js/zh_calc.js",
                     "/public/js/path_tree.js",
@@ -245,6 +249,7 @@ const JsFiles = {
                     "/public/js/div_resizer.js",
                     "/public/js/msg_box.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/shares/merge_peg.js",
                     "/public/js/zh_calc.js",
                     "/public/js/path_tree.js",
@@ -343,6 +348,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/zh_calc.js",
                     "/public/js/path_tree.js",
                     "/public/js/stage_compare.js",
@@ -406,6 +412,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/zh_calc.js",
                     "/public/js/path_tree.js",
                     "/public/js/measure_compare.js"
@@ -460,6 +467,7 @@ const JsFiles = {
                     "/public/js/sub_menu.js",
                     "/public/js/div_resizer.js",
                     "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/shares/sjs_setting.js",
                     "/public/js/zh_calc.js",
                     "/public/js/path_tree.js",
                     "/public/js/compare_tz.js",