|  | @@ -558,9 +558,9 @@ var projectObj = {
 | 
	
		
			
				|  |  |          projectObj.mainSpread.repaint();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      mainSpreadEditEnded: function (sender, info) {
 | 
	
		
			
				|  |  | +        console.log('enterEDEnd');
 | 
	
		
			
				|  |  |          let project = projectObj.project;
 | 
	
		
			
				|  |  |          let node = project.mainTree.items[info.row];
 | 
	
		
			
				|  |  | -        console.log( project.withinBillsLocked(node));
 | 
	
		
			
				|  |  |          project.withinBillsLocked(node);
 | 
	
		
			
				|  |  |          let colSetting = projectObj.mainController.setting.cols[info.col];
 | 
	
		
			
				|  |  |          let fieldName = projectObj.mainController.setting.cols[info.col].data.field;
 | 
	
	
		
			
				|  | @@ -702,8 +702,9 @@ var projectObj = {
 | 
	
		
			
				|  |  |                  that.mainController.bind(TREE_SHEET_CONTROLLER.eventName.beforeTreeSelectedChange, that.beforeMainTreeSelectedChange);
 | 
	
		
			
				|  |  |                  that.mainController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, that.treeSelectedChanged);
 | 
	
		
			
				|  |  |                  if(!projectReadOnly){
 | 
	
		
			
				|  |  | -                    that.bindEnterKey(that.mainSpread, 'mainEnterKey', that.mainSpreadEnterKey);
 | 
	
		
			
				|  |  | +                    sheetCommonObj.bindEnterKey(that.mainSpread, that.mainSpreadEnterKey);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                sheetCommonObj.bindEscKey(that.mainSpread, that.mainSpreadEditStarting, that.mainSpreadEditEnded);
 | 
	
		
			
				|  |  |                  setTimeout(function () {
 | 
	
		
			
				|  |  |                      that.mainSpread.getActiveSheet().startEdit();//这两句需要挺多时间,而又需要在editend 事件前触发,而这些又不影响计算,所以这里用异步的方法
 | 
	
		
			
				|  |  |                      that.mainSpread.getActiveSheet().endEdit();
 | 
	
	
		
			
				|  | @@ -857,14 +858,6 @@ var projectObj = {
 | 
	
		
			
				|  |  |          me.mainSpreadEnterCell({type: 'EnterCell'}, {sheet: sheet, sheetName: sheet.name(), cancel: false, row: newRow, col: newCol});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    //注册自定义回车键事件
 | 
	
		
			
				|  |  | -    bindEnterKey: function (workBook, registerName, operation) {
 | 
	
		
			
				|  |  | -        let me = this;
 | 
	
		
			
				|  |  | -        let sheet = workBook.getActiveSheet();
 | 
	
		
			
				|  |  | -        workBook.commandManager().register(registerName, operation);
 | 
	
		
			
				|  |  | -        workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.enter, false, false, false, false);
 | 
	
		
			
				|  |  | -        workBook.commandManager().setShortcutKey(registerName, GC.Spread.Commands.Key.enter, false, false, false, false);
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  |      loadMainSpreadContextMenu: function () {
 | 
	
		
			
				|  |  |          var project = this.project, spread = this.mainSpread, controller = this.mainController;
 | 
	
		
			
				|  |  |          $.contextMenu({
 | 
	
	
		
			
				|  | @@ -2226,12 +2219,10 @@ $('#customFile').change(function () {
 | 
	
		
			
				|  |  |      if(file.files.length > 0){
 | 
	
		
			
				|  |  |          $('.custom-file-label').text(`${file.files[0].name}`);
 | 
	
		
			
				|  |  |          $('#uploadAlert').hide();
 | 
	
		
			
				|  |  | -        console.log(file.files);
 | 
	
		
			
				|  |  |          //读取各个表及表名
 | 
	
		
			
				|  |  |          $.bootstrapLoading.start();
 | 
	
		
			
				|  |  |          let fileReader = new FileReader();
 | 
	
		
			
				|  |  |          fileReader.onload = function(ev) {
 | 
	
		
			
				|  |  | -            console.log('enter');
 | 
	
		
			
				|  |  |              try {
 | 
	
		
			
				|  |  |                  let data = ev.target.result;
 | 
	
		
			
				|  |  |                  // 以二进制流方式读取得到整份excel表格对象
 | 
	
	
		
			
				|  | @@ -2284,6 +2275,7 @@ $('#uploadConfirm').click(function () {
 | 
	
		
			
				|  |  |          //要去匹配的清单库(第一个)
 | 
	
		
			
				|  |  |          let matchBillLibId = projectInfoObj.projectInfo.engineeringInfo.bill_lib.length > 0 ? projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id : null;
 | 
	
		
			
				|  |  |          formData.append('billsLibId', matchBillLibId);
 | 
	
		
			
				|  |  | +        let uploadS = +new Date();
 | 
	
		
			
				|  |  |          $.ajax({
 | 
	
		
			
				|  |  |              url: '/bills/upload',
 | 
	
		
			
				|  |  |              type: 'POST',
 | 
	
	
		
			
				|  | @@ -2300,6 +2292,8 @@ $('#uploadConfirm').click(function () {
 | 
	
		
			
				|  |  |                      if (message !== '') {
 | 
	
		
			
				|  |  |                          alert(message);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | +                    let uploadE = +new Date();
 | 
	
		
			
				|  |  | +                    console.log(`导入时间:${uploadE-uploadS}`);
 | 
	
		
			
				|  |  |                      // 成功则关闭窗体
 | 
	
		
			
				|  |  |                      $('#import').modal("hide");
 | 
	
		
			
				|  |  |                      //更新前端
 |