|  | @@ -4,6 +4,7 @@
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var billsLibObj = {
 | 
	
		
			
				|  |  | +    stdBillsTree: null,
 | 
	
		
			
				|  |  |      stdBillsSpread: null,
 | 
	
		
			
				|  |  |      stdBillsJobSpread: null,
 | 
	
		
			
				|  |  |      stdBillsFeatureSpread: null,
 | 
	
	
		
			
				|  | @@ -13,6 +14,7 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |      checkBillsSpread: function () {
 | 
	
		
			
				|  |  |          if (!this.stdBillsSpread) {
 | 
	
		
			
				|  |  |              this.stdBillsSpread = SheetDataHelper.createNewSpread($('#stdBillsSpread')[0]);
 | 
	
		
			
				|  |  | +            this.stdBillsSpread.getSheet(0).name('stdBillsLib_bills');
 | 
	
		
			
				|  |  |              // 刷新setting中记录的spread的位置
 | 
	
		
			
				|  |  |              this.refreshSettingForHint();
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -64,8 +66,12 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |          select.empty();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          let bills_lib = projectInfoObj.projectInfo.engineeringInfo.bill_lib;
 | 
	
		
			
				|  |  | +        let selectedBillsLib = sessionStorage.getItem('stdBillsLib');
 | 
	
		
			
				|  |  |          bills_lib.forEach(function (data) {
 | 
	
		
			
				|  |  |              var option = $('<option>').val(data.id).text(data.name);
 | 
	
		
			
				|  |  | +            if(selectedBillsLib && data.id == selectedBillsLib){
 | 
	
		
			
				|  |  | +                option.attr('selected', 'selected');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              select.append(option);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          if (select.children.length !== 0) {
 | 
	
	
		
			
				|  | @@ -75,8 +81,11 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |      loadStdBills: function (stdBillsLibID) {
 | 
	
		
			
				|  |  |          var that = this;
 | 
	
		
			
				|  |  |          var stdBillsJobData, stdBillsFeatureData, stdBills;
 | 
	
		
			
				|  |  | -        var stdBillsTree  = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
 | 
	
		
			
				|  |  | -        var stdBillsTreeController = TREE_SHEET_CONTROLLER.createNew(stdBillsTree, billsLibObj.stdBillsSpread.getActiveSheet(), billsLibObj.stdBillsTreeSetting);
 | 
	
		
			
				|  |  | +        if(that.stdBillsTree){
 | 
	
		
			
				|  |  | +            that.stdBillsTree = null;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        that.stdBillsTree  = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
 | 
	
		
			
				|  |  | +        var stdBillsTreeController = TREE_SHEET_CONTROLLER.createNew(that.stdBillsTree, billsLibObj.stdBillsSpread.getActiveSheet(), billsLibObj.stdBillsTreeSetting);
 | 
	
		
			
				|  |  |          var findData = function (value, field, Array) {
 | 
	
		
			
				|  |  |              var i = 0;
 | 
	
		
			
				|  |  |              for (i = 0; i < Array.length; i++) {
 | 
	
	
		
			
				|  | @@ -164,25 +173,31 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          CommonAjax.post('/stdBillsEditor/getBills', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
 | 
	
		
			
				|  |  |              stdBills = datas;
 | 
	
		
			
				|  |  | -            stdBillsTree.loadDatas(stdBills);
 | 
	
		
			
				|  |  | +            that.stdBillsTree.loadDatas(stdBills);
 | 
	
		
			
				|  |  | +            //读取展开收起状态
 | 
	
		
			
				|  |  | +            let currentExpState = sessionStorage.getItem('stdBillsLibExpState');
 | 
	
		
			
				|  |  | +            if(currentExpState){
 | 
	
		
			
				|  |  | +                that.stdBillsTree.setExpandedByState(that.stdBillsTree.items, currentExpState);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              //非叶子节点默认收起
 | 
	
		
			
				|  |  | -            stdBillsTree.setRootExpanded(stdBillsTree.roots, false);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            else{
 | 
	
		
			
				|  |  | +                that.stdBillsTree.setRootExpanded(that.stdBillsTree.roots, false);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              stdBillsTreeController.showTreeData();
 | 
	
		
			
				|  |  |              billsLibObj.setTagForHint(datas);
 | 
	
		
			
				|  |  | -            showBillsRela(stdBillsTree.firstNode());
 | 
	
		
			
				|  |  | +            showBillsRela(that.stdBillsTree.firstNode());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              stdBillsTreeController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, showBillsRela);
 | 
	
		
			
				|  |  |              that.stdBillsSpread.unbind(GC.Spread.Sheets.Events.CellDoubleClick);
 | 
	
		
			
				|  |  |              that.stdBillsSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (sender, args) {
 | 
	
		
			
				|  |  | -                let selectNode = stdBillsTree.items[args.row];
 | 
	
		
			
				|  |  | +                let selectNode = that.stdBillsTree.items[args.row];
 | 
	
		
			
				|  |  |                  let name = selectNode.data.name;
 | 
	
		
			
				|  |  | -                if (stdBillsTree.items[args.row].children.length === 0) {
 | 
	
		
			
				|  |  | +                if (that.stdBillsTree.items[args.row].children.length === 0) {
 | 
	
		
			
				|  |  |                      if(projectInfoObj.projectInfo.property.lockBills == true){
 | 
	
		
			
				|  |  |                          return;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      //特征及内容转化
 | 
	
		
			
				|  |  | -                    pageCCOprObj.setItemContentNode(stdBillsTree.items[args.row], getBillsJobs(stdBillsTree.items[args.row]), getBillsFeatures(stdBillsTree.items[args.row]), name);
 | 
	
		
			
				|  |  | +                    pageCCOprObj.setItemContentNode(that.stdBillsTree.items[args.row], getBillsJobs(that.stdBillsTree.items[args.row]), getBillsFeatures(that.stdBillsTree.items[args.row]), name);
 | 
	
		
			
				|  |  |                      if (/\//.test(selectNode.data.unit)) {
 | 
	
		
			
				|  |  |                          let existB = projectObj.project.Bills.sameStdCodeBillsData(selectNode.data.code);
 | 
	
		
			
				|  |  |                          if (existB) {
 | 
	
	
		
			
				|  | @@ -200,14 +215,16 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  else{
 | 
	
		
			
				|  |  |                      let me = billsLibObj;
 | 
	
		
			
				|  |  | -                    let node = stdBillsTree.items[args.row];
 | 
	
		
			
				|  |  | +                    let node = that.stdBillsTree.items[args.row];
 | 
	
		
			
				|  |  |                      if (!node || node.children.length === 0)
 | 
	
		
			
				|  |  |                          return;
 | 
	
		
			
				|  |  |                      node.setExpanded(!node.expanded);
 | 
	
		
			
				|  |  | +                    //设置展开收起状态
 | 
	
		
			
				|  |  | +                    sessionStorage.setItem('stdBillsLibExpState', that.stdBillsTree.getExpState(that.stdBillsTree.items));
 | 
	
		
			
				|  |  |                      TREE_SHEET_HELPER.massOperationSheet(args.sheet, function () {
 | 
	
		
			
				|  |  |                          let iCount = node.posterityCount(), i, child;
 | 
	
		
			
				|  |  |                          for (i = 0; i < iCount; i++) {
 | 
	
		
			
				|  |  | -                            child = stdBillsTree.items[args.row + i + 1];
 | 
	
		
			
				|  |  | +                            child = that.stdBillsTree.items[args.row + i + 1];
 | 
	
		
			
				|  |  |                              args.sheet.setRowVisible(args.row + i + 1, child.visible, args.sheetArea);
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                          args.sheet.invalidateLayout();
 | 
	
	
		
			
				|  | @@ -224,7 +241,7 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (!keyword || keyword === '') {return}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            var result = stdBillsTree.items.filter(function (item) {
 | 
	
		
			
				|  |  | +            var result = that.stdBillsTree.items.filter(function (item) {
 | 
	
		
			
				|  |  |                  var codeIs = item.data.code ? item.data.code.indexOf(keyword) !== -1 : false;
 | 
	
		
			
				|  |  |                  var nameIs = item.data.name ? item.data.name.indexOf(keyword) !== -1 : false;
 | 
	
		
			
				|  |  |                  return codeIs || nameIs;
 | 
	
	
		
			
				|  | @@ -243,7 +260,7 @@ var billsLibObj = {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  $('#nextStdBills').show();
 | 
	
		
			
				|  |  |                  $('#nextStdBills').click(function () {
 | 
	
		
			
				|  |  | -                    var cur = stdBillsTree.selected, resultIndex = result.indexOf(cur), sel = billsLibObj.stdBillsSpread.getActiveSheet().getSelections();
 | 
	
		
			
				|  |  | +                    var cur = that.stdBillsTree.selected, resultIndex = result.indexOf(cur), sel = billsLibObj.stdBillsSpread.getActiveSheet().getSelections();
 | 
	
		
			
				|  |  |                      if (resultIndex === result.length - 1) {
 | 
	
		
			
				|  |  |                          stdBillsTreeController.setTreeSelected(result[0]);
 | 
	
		
			
				|  |  |                          billsLibObj.stdBillsSpread.getActiveSheet().setSelection(result[0].serialNo(), sel[0].col, 1, 1);
 | 
	
	
		
			
				|  | @@ -423,7 +440,12 @@ $('#stdBillsLibSelect').change(function () {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      var select = $(this);
 | 
	
		
			
				|  |  |      if (this.children.length !== 0) {
 | 
	
		
			
				|  |  | -        billsLibObj.loadStdBills(select.val());
 | 
	
		
			
				|  |  | +        //设置sessionStorage
 | 
	
		
			
				|  |  | +        let billsLibId  = select.val();
 | 
	
		
			
				|  |  | +        sessionStorage.setItem('stdBillsLib', billsLibId);
 | 
	
		
			
				|  |  | +        //清除展开收起状态sessionStorage
 | 
	
		
			
				|  |  | +        sessionStorage.removeItem('stdBillsLibExpState');
 | 
	
		
			
				|  |  | +        billsLibObj.loadStdBills(billsLibId);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  
 |