zhongzewei 7 years atrás
parent
commit
e5e1816c03

+ 40 - 18
public/web/sheet/sheet_common.js

@@ -545,26 +545,48 @@ var sheetCommonObj = {
         workBook.commandManager().setShortcutKey('myEnter', GC.Spread.Commands.Key.enter, false, false, false, false);
     },
     //解决esc后触发了编辑结束的保存事件,显示与实际数据不同问题
-    bindEscKey: function (workBook, editStarting = null, editEnded = null) {
-        let sheet = workBook.getActiveSheet();
+    bindEscKey: function (workBook, sheets) {
+        function isDef(v){
+            return typeof v !== 'undefined' && v !== null;
+        }
         workBook.commandManager().register('myEsc', function () {
-            sheet.unbind(GC.Spread.Sheets.Events.EditStarting);
-            sheet.unbind(GC.Spread.Sheets.Events.EditEnded);
-            let row = sheet.getActiveRowIndex();
-            let col = sheet.getActiveColumnIndex();
-            let orgV = sheet.getValue(row, col);
-            if(!isDef(orgV)){
-                orgV = '';
-            }
-            if(sheet.isEditing()){
-                sheet.endEdit();
-                sheet.setValue(row, col, orgV);
-            }
-            if(editStarting){
-                sheet.bind(GC.Spread.Sheets.Events.EditStarting, editStarting);
+            let activeSheet = workBook.getActiveSheet();
+            let hasTheSheet = false;
+            for(let sheetObj of sheets){
+                let sheet = sheetObj.sheet;
+                if(sheet === activeSheet){
+                    hasTheSheet = true;
+                    let editStarting = sheetObj.editStarting;
+                    let editEnded = sheetObj.editEnded;
+                    if(editStarting){
+                        sheet.unbind(GC.Spread.Sheets.Events.EditStarting);
+                    }
+                    if(editEnded){
+                        sheet.unbind(GC.Spread.Sheets.Events.EditEnded);
+                    }
+                    let row = sheet.getActiveRowIndex();
+                    let col = sheet.getActiveColumnIndex();
+                    let orgV = sheet.getValue(row, col);
+                    if(!isDef(orgV)){
+                        orgV = '';
+                    }
+                    if(sheet.isEditing()){
+                        sheet.endEdit();
+                        sheet.setValue(row, col, orgV);
+                    }
+                    if(editStarting){
+                        sheet.bind(GC.Spread.Sheets.Events.EditStarting, editStarting);
+                    }
+                    if(editEnded){
+                        sheet.bind(GC.Spread.Sheets.Events.EditEnded, editEnded);
+                    }
+                }
             }
-            if(editEnded){
-                sheet.bind(GC.Spread.Sheets.Events.EditEnded, editEnded);
+            //容错处理,以防没把所有工作簿的表格信息传入参数
+            if(!hasTheSheet){
+                if(activeSheet.isEditing()){
+                    activeSheet.endEdit();
+                }
             }
         });
         workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.esc, false, false, false, false);

+ 8 - 1
web/building_saas/complementary_ration_lib/html/dinge.html

@@ -553,9 +553,16 @@
 
         rationCoeOprObj.buildSheet(rdSpread.getSheet(2));
 
+        rationInstObj.buildSheet(rdSpread.getSheet(3));
         rationInstObj.getInstallation(parseInt(getQueryString("repository")), function () {
-            rationInstObj.buildSheet(rdSpread.getSheet(3));
+            //rationInstObj.buildSheet(rdSpread.getSheet(3));
         });
+        let rdSpreadEscSheets = [];
+        rdSpreadEscSheets.push({sheet: rdSpread.getSheet(0), editStarting: rationGLJOprObj.onEditStarting, editEnded: rationGLJOprObj.onCellEditEnd});
+        rdSpreadEscSheets.push({sheet: rdSpread.getSheet(1), editStarting: rationAssistOprObj.onEditStarting, editEnded: rationAssistOprObj.onEditEnded});
+        rdSpreadEscSheets.push({sheet: rdSpread.getSheet(2), editStarting: rationCoeOprObj.onEditStarting, editEnded: rationCoeOprObj.onEditEnded});
+        rdSpreadEscSheets.push({sheet: rdSpread.getSheet(3), editStarting: rationInstObj.onEditStarting, editEnded: rationInstObj.onEditEnded});
+        sheetCommonObj.bindEscKey(rdSpread, rdSpreadEscSheets);
         pageOprObj.initPage();
 
         $("#linkGLJ").click(function(){

+ 1 - 0
web/building_saas/complementary_ration_lib/js/ration.js

@@ -41,6 +41,7 @@ let rationOprObj = {
         let rationRepId = getQueryString("repository");
         let me = rationOprObj;
         me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
+        sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: me.onCellEditStart, editEnded: me.onCellEditEnd}]);
         me.getRationsCodes(rationRepId);
         me.onContextmenuOpr();
         me.rationDelOpr();

+ 1 - 0
web/building_saas/complementary_ration_lib/js/section_tree.js

@@ -143,6 +143,7 @@ let sectionTreeObj = {
     buildSheet: function () {
         if(!this.isDef(this.workBook)){
             this.workBook = new GC.Spread.Sheets.Workbook($('#sectionSpread')[0], {sheetCount: 1});
+            sheetCommonObj.bindEscKey(this.workBook, [{sheet: this.workBook.getSheet(0), editStarting: this.onEditStarting, editEnded: this.onEditEnded}]);
             this.sheet = this.workBook.getSheet(0);
             this.bindEvents(this.sheet);
             this.setOptions(this.workBook, this.setting.options);

+ 6 - 5
web/building_saas/main/js/views/installation_fee_view.js

@@ -589,16 +589,17 @@ let installationFeeObj={
         me.modifyFeeRuleSheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onModifyFeeRuleEditStarting);
         this.modifyFeeRuleSheet.name('modifyFeeRuleSheet');
     },
+    rationInstSheeteditChecking: function (sender, args) {
+        if(args.row>=installationFeeObj.rationInstallData.length){
+            args.cancel = true;
+        }
+    },
     initRationInstallSheet:function (sheet) {
         let me = this;
         this.rationInstallSheet = sheet;
         this.initSheet( this.rationInstallSheet,this.rationInstallSetting);
         sheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onRationSheetSelectionChange);
-        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-           if(args.row>=me.rationInstallData.length){
-               args.cancel = true;
-           }
-        });
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, this.rationInstSheeteditChecking);
         this.rationInstallSheet.name("rationInstallSheet");
     },
     onRationSheetSelectionChange: function (sender, args) {

+ 5 - 1
web/building_saas/main/js/views/project_view.js

@@ -44,6 +44,10 @@ var projectObj = {
             pageCCOprObj.mainActiveCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];//mainSpread焦点单元格
             pageCCOprObj.setCacheAndShow(node);
         }
+
+        let acSheet = subSpread.getActiveSheet();
+
+        console.log(acSheet.name());
         // for test interface.  CSLAAAAA
         // projectObj.testDisplay('前四项累计值排除当前选中项' + projectObj.project.calcProgram.getBeforeTaxTotalFee([node]));
 
@@ -704,7 +708,7 @@ var projectObj = {
                 if(!projectReadOnly){
                     sheetCommonObj.bindEnterKey(that.mainSpread, that.mainSpreadEnterKey);
                 }
-                sheetCommonObj.bindEscKey(that.mainSpread, that.mainSpreadEditStarting, that.mainSpreadEditEnded);
+                sheetCommonObj.bindEscKey(that.mainSpread, [{sheet: that.mainSpread.getSheet(0), editStarting: that.mainSpreadEditStarting, editEnded: that.mainSpreadEditEnded}]);
                 setTimeout(function () {
                     that.mainSpread.getActiveSheet().startEdit();//这两句需要挺多时间,而又需要在editend 事件前触发,而这些又不影响计算,所以这里用异步的方法
                     that.mainSpread.getActiveSheet().endEdit();

+ 9 - 0
web/building_saas/main/js/views/sub_view.js

@@ -11,7 +11,9 @@ let subSpread = null;
 let subObj = {
     initSubSpread:function () {
         contentOprObj.buildSheet($("#jobSpread")[0]);
+        sheetCommonObj.bindEscKey(contentOprObj.workBook, [{sheet: contentOprObj.workBook.getSheet(0), editStarting: contentOprObj.onEditStart, editEnded: contentOprObj.onEditEnded}]);
         characterOprObj.buildSheet($("#itemSpread")[0]);
+        sheetCommonObj.bindEscKey(characterOprObj.workBook, [{sheet: characterOprObj.workBook.getSheet(0), editStarting: characterOprObj.onEditStart, editEnded: characterOprObj.onEditEnded}]);
         $("#tzjnrCon").hide();
         $("#subSpread").show();
         subSpread = sheetCommonObj.createSpread($("#subSpread")[0], 4);
@@ -40,6 +42,13 @@ let subObj = {
         installationFeeObj.initRationInstallSheet(subSpread.getSheet(3));
         SheetDataHelper.protectdSheet(subSpread.getSheet(3));
 
+        //绑定esc
+        let subEscSheets = [];
+        subEscSheets.push({sheet: subSpread.getSheet(0), editStarting: gljOprObj.editChecking, editEnded: gljOprObj.onEditEnded});//定额工料机
+        subEscSheets.push({sheet: subSpread.getSheet(1), editStarting: gljOprObj.editChecking, editEnded: gljOprObj.onEditEnded});//工程量明细
+        subEscSheets.push({sheet: subSpread.getSheet(3), editStarting: installationFeeObj.rationInstSheeteditChecking, editEnded: null});//定额安装增加费
+        sheetCommonObj.bindEscKey(subSpread, subEscSheets);
+
         if(projectReadOnly){
             disableSpread(subSpread);
             disableSpread(contentOprObj.workBook);