Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

Conflicts:
	web/building_saas/main/js/views/project_view.js
zhangweicheng 7 years ago
parent
commit
2188cfe999

+ 1 - 0
public/web/tree_sheet/tree_sheet_controller.js

@@ -16,6 +16,7 @@ var TREE_SHEET_CONTROLLER = {
         };
 
         controller.prototype.showTreeData = function () {
+            //
             var that = this;
             TREE_SHEET_HELPER.showTreeData(this.setting, this.sheet, this.tree);
             this.sheet.unbind(GC.Spread.Sheets.Events.SelectionChanged);

+ 2 - 1
public/web/tree_sheet/tree_sheet_helper.js

@@ -105,7 +105,7 @@ var TREE_SHEET_HELPER = {
         nodes.forEach(function (node) {
             let iRow = node.serialNo();
             if(typeof projectObj !== 'undefined'){
-                let nodeStyle = projectObj.getNodeColorStyle(node);
+                let nodeStyle = projectObj.getNodeColorStyle(sheet, node);
                 if(nodeStyle){
                     sheet.setStyle(iRow, -1, nodeStyle);
                 }
@@ -118,6 +118,7 @@ var TREE_SHEET_HELPER = {
                         sheet.setStyle(iRow, iCol, boldFontStyle);
                     }
                 }
+
                 // var getFieldText = function () {
                 //     var fields = colSetting.data.field.split('.');
                 //     var validField = fields.reduce(function (field1, field2) {

+ 1 - 1
web/building_saas/main/js/controllers/project_controller.js

@@ -30,7 +30,7 @@ ProjectController = {
             });
             for(let newNode of newNodes){
                 sc.sheet.addRows(newNode.serialNo(), 1);
-                TREE_SHEET_HELPER.refreshTreeNodeData(sc.setting, sc.sheet, [newNode], false);
+               // TREE_SHEET_HELPER.refreshTreeNodeData(sc.setting, sc.sheet, [newNode], false);
                 sc.setTreeSelected(newNode);
                 sc.sheet.setSelection(newNode.serialNo(), sels[0].col, 1, 1);
                 sc.sheet.showRow(newNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center);

+ 102 - 42
web/building_saas/main/js/views/project_view.js

@@ -21,6 +21,20 @@ var projectObj = {
     },
     treeSelectedChanged: function (node) {
         let project = projectObj.project;
+        //设置选中行底色和恢复前选中行底色
+        let refreshNodes = [node];
+        if(!project.mainTree.preSelected){
+            refreshNodes.push(project.mainTree.items[0]);
+        }
+        else {
+            refreshNodes.push(project.mainTree.preSelected);
+        }
+        project.mainTree.preSelected = node;
+        projectObj.setNodesStyle(projectObj.mainController.sheet, refreshNodes);
+   /*     TREE_SHEET_HELPER.massOperationSheet(projectObj.mainController.sheet, function () {
+            TREE_SHEET_HELPER.refreshTreeNodeData(projectObj.mainController.setting, projectObj.mainController.sheet, refreshNodes, false);
+        });*/
+
         subViewObj.loadComments(node);
         gljOprObj.showDataIfRationSelect(node);
         if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
@@ -36,7 +50,6 @@ var projectObj = {
                 pageCCOprObj.clearData();
             }
         }
-
         // for test interface.  CSLAAAAA
         // projectObj.testDisplay('前四项累计值排除当前选中项' + projectObj.project.calcProgram.getBeforeTaxTotalFee([node]));
 
@@ -442,6 +455,35 @@ var projectObj = {
             projectObj.mainController.refreshTreeNode([node], false);
         }
     },
+    mainSpreadSlectionChanging: function (sender, info) {
+        console.log('bbbb');
+        let oldSel = info.oldSelections[0], newSel = info.newSelections[0];
+        let project = projectObj.project;
+        //设置选中行底色和恢复前选中行底色
+        let refreshNodes = [];
+        if(oldSel){
+            oldSel.row === -1 ? 0 : oldSel.row;
+            for(let i = 0; i < oldSel.rowCount; i++){
+                if(project.mainTree.items[i + oldSel.row]){
+                    refreshNodes.push(project.mainTree.items[i + oldSel.row]);
+                }
+            }
+        }
+        if(newSel){
+            newSel.row === -1 ? 0 : newSel.row;
+            for(let i = 0; i < newSel.rowCount; i++){
+                if(project.mainTree.items[i + newSel.row]){
+                    refreshNodes.push(project.mainTree.items[i + newSel.row]);
+                }
+            }
+        }
+        if(refreshNodes.length > 0){
+            projectObj.setNodesStyle(projectObj.mainController.sheet, refreshNodes, newSel);
+            /* TREE_SHEET_HELPER.massOperationSheet(projectObj.mainController.sheet, function () {
+             TREE_SHEET_HELPER.refreshTreeNodeData(projectObj.mainController.setting, projectObj.mainController.sheet, refreshNodes, false, true);
+             });*/
+        }
+    },
     mainSpreadLeaveCell: function (sender, info) {
         let colSetting = projectObj.mainController.setting.cols[info.col];
         projectObj.lastCol = colSetting;
@@ -917,7 +959,10 @@ var projectObj = {
         if(row == null || col == null){
             row = 0;
             col = 0;
-        }
+
+
+
+       }
         row = parseInt(row);
         col = parseInt(col);
         const sheet = this.mainSpread.getActiveSheet();
@@ -1010,9 +1055,9 @@ var projectObj = {
     },
 
     //根据节点获取行style(颜色、字体加粗)
-    getNodeColorStyle: function (node, colSetting) {
+    getNodeColorStyle: function (sheet, node, colSetting) {
         let colorSetting = optionsOprObj.getOption(optionsOprObj.optionsTypes.COLOROPTS);
-        let mapping = {DEFAULT: 'DEFAULT', DXFY: 'DXFY', FB: 'FB', UNLEAFBILL: 'UNLEAFBILL',
+        let mapping = {DEFAULT: 'DEFAULT', SELECTED: 'SELECTED', DXFY: 'DXFY', FB: 'FB', UNLEAFBILL: 'UNLEAFBILL',
             FX: 'FX', BX: 'BX', UNCBBILL: 'UNCBBILL', CBBILL: 'CBBILL', ZCSB: 'ZCSB'};
         let styleMap = null;
         //中文字段名,由于同一节点中,中文字体大小和数字字体大小不同
@@ -1034,47 +1079,53 @@ var projectObj = {
         if(!isDef(node)){
             return null;
         }
-        //清单大类
-        if(node.sourceType === this.project.Bills.getSourceType()){
-            //大项费用
-            //大项费用
-            if(node.data.type === billType.DXFY){
-                styleMap = mapping.DXFY;
-            }
-            //分部
-            if(node.data.type === billType.FB){
-                styleMap = mapping.FB;
-            }
-            //分项
-            else if(node.data.type === billType.FX){
-                styleMap = mapping.FX;
-            }
-            //补项
-            else if(node.data.type === billType.BX){
-                styleMap = mapping.BX;
-            }
-            //清单
-            else if(node.data.type === billType.BILL){
-                //非叶子节点的清单
-                if(node.source.children.length > 0){
-                    styleMap = mapping.UNLEAFBILL;
+        //选中行
+        if(node === this.project.mainTree.selected){
+            styleMap = mapping.SELECTED;
+        }
+        //非选中行
+        else {
+            //清单大类
+            if(node.sourceType === this.project.Bills.getSourceType()){
+                //大项费用
+                if(node.data.type === billType.DXFY){
+                    styleMap = mapping.DXFY;
                 }
-                //未使用基数计算的叶子节点的清单
-                else if(node.source.children.length === 0 && (!isDef(node.data.calcBase) || node.data.calcBase === '')){
-                    styleMap = mapping.UNCBBILL;
+                //分部
+                if(node.data.type === billType.FB){
+                    styleMap = mapping.FB;
                 }
-                //使用基数计算的叶子节点的清单
-                else if(node.source.children.length === 0 && isDef(node.data.calcBase && node.data.calcBaseValue !== '')){
-                    styleMap = mapping.CBBILL;
+                //分项
+                else if(node.data.type === billType.FX){
+                    styleMap = mapping.FX;
+                }
+                //补项
+                else if(node.data.type === billType.BX){
+                    styleMap = mapping.BX;
+                }
+                //清单
+                else if(node.data.type === billType.BILL){
+                    //非叶子节点的清单
+                    if(node.source.children.length > 0){
+                        styleMap = mapping.UNLEAFBILL;
+                    }
+                    //未使用基数计算的叶子节点的清单
+                    else if(node.source.children.length === 0 && (!isDef(node.data.calcBase) || node.data.calcBase === '')){
+                        styleMap = mapping.UNCBBILL;
+                    }
+                    //使用基数计算的叶子节点的清单
+                    else if(node.source.children.length === 0 && isDef(node.data.calcBase && node.data.calcBaseValue !== '')){
+                        styleMap = mapping.CBBILL;
+                    }
                 }
             }
-        }
-        //定额下的主材、设备
-        else if(node.sourceType === this.project.ration_glj.getSourceType()){
-            styleMap = mapping.ZCSB;
-        }
-        else {
-            styleMap = mapping.DEFAULT;
+            //定额下的主材、设备
+            else if(node.sourceType === this.project.ration_glj.getSourceType()){
+                styleMap = mapping.ZCSB;
+            }
+            else {
+                styleMap = mapping.DEFAULT;
+            }
         }
         let styleSetting = colorSetting[styleMap];
         let defaultSetting = colorSetting[mapping.DEFAULT];
@@ -1131,6 +1182,16 @@ var projectObj = {
         }
         return style;
     },
+   //设置节点style
+    setNodesStyle: function (sheet, nodes) {
+        let me = this;
+        TREE_SHEET_HELPER.massOperationSheet(sheet, function () {
+            for(let node of nodes){
+                sheet.setStyle(node.serialNo(), -1, me.getNodeColorStyle(sheet, node));
+            }
+        });
+     
+},
     loadLockBillsButton:function () {
         if(projectInfoObj.projectInfo.property.lockBills == true){
             $("a[name='lockBills']").prop("title","解锁清单");
@@ -1141,7 +1202,6 @@ var projectObj = {
         }
     }
 
-
 };
 // 点击合计框中的复制
 $("body").on("click", "#total-tips a", function() {