chenshilong 5 anni fa
parent
commit
3a0b8316ad

+ 22 - 7
public/web/sheet/sheet_common.js

@@ -17,13 +17,18 @@ var sheetCommonObj = {
         spreadBook.options.showDragFillSmartTag = false;
         return spreadBook;
     },
-    initSheet: function (sheet, setting, rowCount) {
+
+    initSheet: function(sheet, setting, rowCount) {
+
         var me = this;
         var spreadNS = GC.Spread.Sheets;
+        if(setting.headRows == 2){
+            return me.buildSpanHeader(sheet, setting, rowCount);//初始化合并表格列头
+        }
         sheet.suspendPaint();
         sheet.suspendEvent();
-        if (setting.frozenCols) sheet.frozenColumnCount(setting.frozenCols);//冻结列
-        sheet.setRowCount(1, spreadNS.SheetArea.colHeader);
+        if(setting.frozenCols)  sheet.frozenColumnCount(setting.frozenCols);//冻结列s
+        sheet.setRowCount(setting.headRows ? setting.headRows : 1, spreadNS.SheetArea.colHeader);
         sheet.setColumnCount(setting.header.length, spreadNS.SheetArea.viewport);
 
         if (setting && setting.view && setting.view.colHeaderHeight) {
@@ -45,10 +50,6 @@ var sheetCommonObj = {
         sheet.showRowOutline(false);
         sheet.options.allowCellOverflow = false;
         me.buildHeader(sheet, setting);
-        if (rowCount > 0)
-            sheet.setRowCount(rowCount);
-        else
-            sheet.setRowCount(1);
         sheet.resumeEvent();
         sheet.resumePaint();
     },
@@ -62,6 +63,20 @@ var sheetCommonObj = {
         return spreadBook;
     },
 
+    buildSpanHeader:function (sheet, setting, rowCount) {
+        let temSetting = {
+            "emptyRows":0,
+            "headRows":2,
+            "headRowHeight":[21],
+            "defaultRowHeight": 21,
+            "treeCol": 0,
+            "cols":[]
+        };
+        let spanSetting =   sheetCommonObj.transferToTreeSetting(setting,temSetting);
+        TREE_SHEET_HELPER.loadSheetHeader(spanSetting,sheet,rowCount);
+
+    },
+
     buildHeader: function (sheet, setting) {
         var me = this, ch = GC.Spread.Sheets.SheetArea.colHeader;
         for (var i = 0; i < setting.header.length; i++) {

+ 26 - 5
web/building_saas/main/js/models/calc_program.js

@@ -2324,11 +2324,32 @@ class CalcProgram {
                 treeNode.data.quantityCoe = {labour: coe, material: coe, machine: coe, main: coe, equipment: coe};
                 treeNode.changed = true;
             }else{
-                for (let pn in qcObj){
-                    if (qcObj[pn] != coe){
-                        qcObj[pn] = coe;
-                        treeNode.changed = true;
-                    }
+                // 这种写法会漏掉属性,导致界面显示不统一。
+                /*                for (let pn in qcObj){
+                                    if (qcObj[pn] != coe){
+                                        qcObj[pn] = coe;
+                                        treeNode.changed = true;
+                                    }
+                                };*/
+                if (qcObj.labour != coe) {
+                    qcObj.labour = coe;
+                    treeNode.changed = true;
+                };
+                if (qcObj.material != coe) {
+                    qcObj.material = coe;
+                    treeNode.changed = true;
+                };
+                if (qcObj.machine != coe) {
+                    qcObj.machine = coe;
+                    treeNode.changed = true;
+                };
+                if (qcObj.main != coe) {
+                    qcObj.main = coe;
+                    treeNode.changed = true;
+                };
+                if (qcObj.equipment != coe) {
+                    qcObj.equipment = coe;
+                    treeNode.changed = true;
                 };
             };
             projectObj.project.calcProgram.calculate(treeNode, false, false, tenderTypes.ttCalc);  // 再正向算

+ 1 - 0
web/building_saas/main/js/views/calc_program_view.js

@@ -60,6 +60,7 @@ let calcProgramObj = {
                 break;
         }
 
+        if (!me.sheet) return;
         me.datas = treeNode.data.calcTemplate ? treeNode.data.calcTemplate.calcItems : [];
         sheetCommonObj.initSheet(me.sheet, me.setting, me.datas.length);
         sheetCommonObj.showData(me.sheet, me.setting, me.datas);