|  | @@ -60,6 +60,9 @@ var projectObj = {
 | 
	
		
			
				|  |  |              if(!node){
 | 
	
		
			
				|  |  |                  return false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            if(projectObj.project.isBillsLocked()== true){
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              if(node.depth()<=1){//焦点行是树结构的第一/二层节点,灰显。
 | 
	
		
			
				|  |  |                  return false;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -89,6 +92,9 @@ var projectObj = {
 | 
	
		
			
				|  |  |              if(!node){
 | 
	
		
			
				|  |  |                  return false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            if(projectObj.project.isBillsLocked()== true){
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              if(node.depth()==0){//焦点行是树结构的第一层节点,灰显。
 | 
	
		
			
				|  |  |                  return false;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -116,8 +122,13 @@ var projectObj = {
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          let canUpMove = function (node) {
 | 
	
		
			
				|  |  |              if(node&&node.preSibling){//有前兄弟
 | 
	
		
			
				|  |  | -                if(node.sourceType==that.project.Bills.getSourceType()&&node.data.type == billType.DXFY&&node.data.isAdd!==1){
 | 
	
		
			
				|  |  | -                    return false;
 | 
	
		
			
				|  |  | +                if(node.sourceType==that.project.Bills.getSourceType()){
 | 
	
		
			
				|  |  | +                    if(projectObj.project.isBillsLocked()== true){
 | 
	
		
			
				|  |  | +                        return false;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if(node.data.type == billType.DXFY&&node.data.isAdd!==1){
 | 
	
		
			
				|  |  | +                        return false;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  return true
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -125,8 +136,13 @@ var projectObj = {
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          let canDownMove = function (node) {
 | 
	
		
			
				|  |  |              if(node&&node.nextSibling){
 | 
	
		
			
				|  |  | -                if(node.sourceType==that.project.Bills.getSourceType()&&node.data.type == billType.DXFY&&node.data.isAdd!==1){
 | 
	
		
			
				|  |  | -                    return false;
 | 
	
		
			
				|  |  | +                if(node.sourceType==that.project.Bills.getSourceType()){
 | 
	
		
			
				|  |  | +                    if(projectObj.project.isBillsLocked()== true){
 | 
	
		
			
				|  |  | +                        return false;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if(node.data.type == billType.DXFY&&node.data.isAdd!==1){
 | 
	
		
			
				|  |  | +                        return false;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  return true;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -540,6 +556,7 @@ var projectObj = {
 | 
	
		
			
				|  |  |                  that.project.projSetting.mainGridSetting = JSON.parse(str);
 | 
	
		
			
				|  |  |                  that.project.projSetting.mainGridSetting.frozenCols = 4;
 | 
	
		
			
				|  |  |                  TREE_SHEET_HELPER.initSetting($('#billsSpread')[0], that.project.projSetting.mainGridSetting);
 | 
	
		
			
				|  |  | +                that.project.projSetting.mainGridSetting.setAutoFitRow = MainTreeCol.getEvent("setAutoFitRow");
 | 
	
		
			
				|  |  |                  that.project.projSetting.mainGridSetting.cols.forEach(function (col) {
 | 
	
		
			
				|  |  |                      col.data.splitFields = col.data.field.split('.');
 | 
	
		
			
				|  |  |                      if (col.data.getText && Object.prototype.toString.apply(col.data.getText) === "[object String]") {
 | 
	
	
		
			
				|  | @@ -582,6 +599,7 @@ var projectObj = {
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |                  let startShowTime = +new Date();
 | 
	
		
			
				|  |  |                  that.mainController = TREE_SHEET_CONTROLLER.createNew(that.project.mainTree, that.mainSpread.getActiveSheet(), that.project.projSetting.mainGridSetting);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  that.mainController.showTreeData();
 | 
	
		
			
				|  |  |                  let endShowTime = +new Date();
 | 
	
		
			
				|  |  |                  console.log(`show data时间——${endShowTime - startShowTime}`);
 | 
	
	
		
			
				|  | @@ -591,7 +609,6 @@ var projectObj = {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  that.mainSpread.getActiveSheet().startEdit();
 | 
	
		
			
				|  |  |                  that.mainSpread.getActiveSheet().endEdit();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  that.mainSpread.bind(GC.Spread.Sheets.Events.LeaveCell, that.mainSpreadLeaveCell);
 | 
	
		
			
				|  |  |                  that.mainSpread.bind(GC.Spread.Sheets.Events.EnterCell, that.mainSpreadEnterCell);
 | 
	
		
			
				|  |  |                  that.mainSpread.bind(GC.Spread.Sheets.Events.EditStarting, that.mainSpreadEditStarting);
 | 
	
	
		
			
				|  | @@ -603,7 +620,6 @@ var projectObj = {
 | 
	
		
			
				|  |  |                  //let loadOtherStartTime = +new Date();
 | 
	
		
			
				|  |  |                  that.loadMainSpreadContextMenu();
 | 
	
		
			
				|  |  |                  that.loadFocusLocation();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  socketObject.connect();//连接socket服务器
 | 
	
		
			
				|  |  |                  let endTime = +new Date();
 | 
	
		
			
				|  |  |                  console.log(`其它时间——${endTime - endShowTime}`);
 | 
	
	
		
			
				|  | @@ -635,6 +651,7 @@ var projectObj = {
 | 
	
		
			
				|  |  |                      name: "插入大项费用",
 | 
	
		
			
				|  |  |                      icon: 'fa-sign-in',
 | 
	
		
			
				|  |  |                      disabled: function () {
 | 
	
		
			
				|  |  | +                        return projectObj.project.isBillsLocked();
 | 
	
		
			
				|  |  |                          //return project.mainTree.selected ? project.mainTree.selected.sourceType !== project.Bills.getSourceType() : false;
 | 
	
		
			
				|  |  |                      },
 | 
	
		
			
				|  |  |                      callback: function (key, opt) {
 | 
	
	
		
			
				|  | @@ -649,7 +666,7 @@ var projectObj = {
 | 
	
		
			
				|  |  |                      icon: 'fa-sign-in',
 | 
	
		
			
				|  |  |                      disabled: function () {
 | 
	
		
			
				|  |  |                          let selected = project.mainTree.selected;
 | 
	
		
			
				|  |  | -                        if(selected&&selected.sourceType==project.Bills.getSourceType()){
 | 
	
		
			
				|  |  | +                        if(projectObj.project.isBillsLocked()== false&&selected&&selected.sourceType==project.Bills.getSourceType()){
 | 
	
		
			
				|  |  |                              if(selected.data.type==billType.FB){
 | 
	
		
			
				|  |  |                                  return false;
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -679,7 +696,7 @@ var projectObj = {
 | 
	
		
			
				|  |  |                      icon: 'fa-sign-in',
 | 
	
		
			
				|  |  |                      disabled: function () {
 | 
	
		
			
				|  |  |                          let selected = project.mainTree.selected;
 | 
	
		
			
				|  |  | -                        if(selected&&selected.sourceType==project.Bills.getSourceType()){
 | 
	
		
			
				|  |  | +                        if(projectObj.project.isBillsLocked()== false&& selected&&selected.sourceType==project.Bills.getSourceType()){
 | 
	
		
			
				|  |  |                              if(selected.data.type==billType.FX){//焦点行是分项,有效显示
 | 
	
		
			
				|  |  |                                  return false
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -715,7 +732,11 @@ var projectObj = {
 | 
	
		
			
				|  |  |                      name: "插入清单",
 | 
	
		
			
				|  |  |                      icon: 'fa-sign-in',
 | 
	
		
			
				|  |  |                      disabled: function () {
 | 
	
		
			
				|  |  | -                        return project.mainTree.selected ? project.mainTree.selected.sourceType !== project.Bills.getSourceType() : false;
 | 
	
		
			
				|  |  | +                        let selected = project.mainTree.selected;
 | 
	
		
			
				|  |  | +                        if(projectObj.project.isBillsLocked()== false && selected && selected.sourceType === project.Bills.getSourceType()){
 | 
	
		
			
				|  |  | +                            return false
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  |                      },
 | 
	
		
			
				|  |  |                      callback: function (key, opt) {
 | 
	
		
			
				|  |  |                          if(project.mainTree.selected.data.type == billType.DXFY){
 | 
	
	
		
			
				|  | @@ -815,7 +836,7 @@ var projectObj = {
 | 
	
		
			
				|  |  |                      name: "整理分部",
 | 
	
		
			
				|  |  |                      icon: 'fa-sign-in',
 | 
	
		
			
				|  |  |                      disabled: function () {
 | 
	
		
			
				|  |  | -                       return false;
 | 
	
		
			
				|  |  | +                       return projectObj.project.isBillsLocked();
 | 
	
		
			
				|  |  |                      },
 | 
	
		
			
				|  |  |                      callback: function (key, opt) {
 | 
	
		
			
				|  |  |                          zlfb_object.getSectionInfo();
 | 
	
	
		
			
				|  | @@ -893,13 +914,15 @@ var projectObj = {
 | 
	
		
			
				|  |  |          const projectId = scUrlUtil.GetQueryString('project');
 | 
	
		
			
				|  |  |          let row = getLocalCache('lastRow:' + projectId);
 | 
	
		
			
				|  |  |          let col = getLocalCache('lastCol:' + projectId);
 | 
	
		
			
				|  |  | -        if (row !== null && col !== null) {
 | 
	
		
			
				|  |  | -            row = parseInt(row);
 | 
	
		
			
				|  |  | -            col = parseInt(col);
 | 
	
		
			
				|  |  | -            const sheet = this.mainSpread.getActiveSheet();
 | 
	
		
			
				|  |  | -            sheet.setSelection(row, col, 1, 1);
 | 
	
		
			
				|  |  | -            this.mainController.setTreeSelected(this.mainController.tree.items[row]);//触发树节点选中事件
 | 
	
		
			
				|  |  | +        if(row == null || col == null){
 | 
	
		
			
				|  |  | +            row = 0;
 | 
	
		
			
				|  |  | +            col = 0;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        row = parseInt(row);
 | 
	
		
			
				|  |  | +        col = parseInt(col);
 | 
	
		
			
				|  |  | +        const sheet = this.mainSpread.getActiveSheet();
 | 
	
		
			
				|  |  | +        sheet.setSelection(row, col, 1, 1);
 | 
	
		
			
				|  |  | +        this.mainController.setTreeSelected(this.mainController.tree.items[row]);//触发树节点选中事件
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      // 选中区域合计数字
 | 
	
		
			
				|  |  |      amountAreaNumber: function(e, info) {
 | 
	
	
		
			
				|  | @@ -1107,8 +1130,18 @@ var projectObj = {
 | 
	
		
			
				|  |  |              style.font = 'bold 13px Arial';
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return style;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    loadLockBillsButton:function () {
 | 
	
		
			
				|  |  | +        if(projectInfoObj.projectInfo.property.lockBills == true){
 | 
	
		
			
				|  |  | +            $("a[name='lockBills']").prop("title","解锁清单");
 | 
	
		
			
				|  |  | +            $("a[name='lockBills']").html('<i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单');
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            $("a[name='lockBills']").prop("title","锁定清单");
 | 
	
		
			
				|  |  | +            $("a[name='lockBills']").html('<i class="fa fa-lock" aria-hidden="true"></i> 锁定清单');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  // 点击合计框中的复制
 | 
	
		
			
				|  |  |  $("body").on("click", "#total-tips a", function() {
 | 
	
	
		
			
				|  | @@ -1194,6 +1227,18 @@ $('#downMove').click(function () {
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  | +$("a[name='lockBills']").click(function () {
 | 
	
		
			
				|  |  | +    let lockBills = projectInfoObj.projectInfo.property.lockBills;
 | 
	
		
			
				|  |  | +    lockBills = !lockBills;
 | 
	
		
			
				|  |  | +    projectObj.project.updateLockBills(lockBills,function () {
 | 
	
		
			
				|  |  | +        var controller = projectObj.mainController, project = projectObj.project;
 | 
	
		
			
				|  |  | +        var selected = controller.tree.selected;
 | 
	
		
			
				|  |  | +        let nodes = _.filter(project.mainTree.items,{'sourceType':ModuleNames.bills});
 | 
	
		
			
				|  |  | +        controller.refreshTreeNode(nodes);
 | 
	
		
			
				|  |  | +        projectObj.mainController.setTreeSelected(selected);//触发树节点选中事件
 | 
	
		
			
				|  |  | +        projectObj.loadLockBillsButton();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  |  //显示至..
 | 
	
		
			
				|  |  |  let displayLevel = function(nodes, depth, type){
 | 
	
		
			
				|  |  |      let refreshNodes = [];
 | 
	
	
		
			
				|  | @@ -1512,6 +1557,9 @@ function ifCanDelete() {
 | 
	
		
			
				|  |  |                  if(node.data.type == billType.DXFY&&node.data.isAdd!=1){
 | 
	
		
			
				|  |  |                      return false;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                if(projectObj.project.isBillsLocked()== true){
 | 
	
		
			
				|  |  | +                    return false;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              if(m_selection!=true&&node.sourceType === projectObj.project.ration_glj.getSourceType()){//多选的时候不做这一项判断
 | 
	
		
			
				|  |  |                  return false;
 |