|  | @@ -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() {
 |