zhongzewei преди 7 години
родител
ревизия
04da5bcd05

+ 54 - 0
public/web/sheet/sheet_common.js

@@ -312,5 +312,59 @@ var sheetCommonObj = {
             sheet.getCell(beginRow + i, col).cellType(combo);
         }
         sheet.resumePaint();
+    },
+    //注册自定义回车键事件
+    bindEnterKey: function (workBook, operation) {
+        workBook.commandManager().register('myEnter', operation);
+        workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.enter, false, false, false, false);
+        workBook.commandManager().setShortcutKey('myEnter', GC.Spread.Commands.Key.enter, false, false, false, false);
+    },
+    //解决esc后触发了编辑结束的保存事件,显示与实际数据不同问题
+    bindEscKey: function (workBook, sheets) {
+        function isDef(v){
+            return typeof v !== 'undefined' && v !== null;
+        }
+        workBook.commandManager().register('myEsc', function () {
+            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(!hasTheSheet){
+                if(activeSheet.isEditing()){
+                    activeSheet.endEdit();
+                }
+            }
+        });
+        workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.esc, false, false, false, false);
+        workBook.commandManager().setShortcutKey('myEsc', GC.Spread.Commands.Key.esc, false, false, false, false);
     }
 }

+ 1 - 0
web/maintain/bill_template_lib/html/edit.html

@@ -37,6 +37,7 @@
     let updateUrl = '/billsTemplate/updateBillsTemplateItem/<%= libID%>';
 </script>
 <script type="text/javascript" src="/public/web/id_tree.js"></script>
+<script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
 <script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_helper.js"></script>
 <script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_controller.js"></script>
 <script type="text/javascript" src="/public/web/common_ajax.js"></script>

+ 4 - 3
web/maintain/bill_template_lib/js/bills_template_edit.js

@@ -304,6 +304,7 @@ $(document).ready(function () {
 
     let tree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
     let billsSpread = TREE_SHEET_HELPER.createNewSpread($('#billsSpread')[0]);
+    sheetCommonObj.bindEscKey(billsSpread, [{sheet: billsSpread.getSheet(0), editStarting: null, editEnded: billsOnEditEnded}]);
     let controller = TREE_SHEET_CONTROLLER.createNew(tree, billsSpread.getActiveSheet(), TEMPLATE_BILLS_SETTING);
     let fixedFlagMap = getNameToValueMap(billsFixedFlagList);
     let typeMap = getNameToValueMap(billsTypeFlagList);
@@ -313,7 +314,7 @@ $(document).ready(function () {
     //billsSpread.getSheet(0).setFormatter(-1, 1, '@');
     controller.bind('refreshBaseActn', RefreshBaseActn);
 
-    billsSpread.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, info) {
+    function billsOnEditEnded(sender, info) {
         var node = controller.tree.items[info.row];
         var fieldName = controller.setting.cols[info.col].data.field;
         var valueType = controller.setting.cols[info.col].data.type;
@@ -338,8 +339,8 @@ $(document).ready(function () {
         }else {
             info.sheet.getCell(info.row,info.col).value("");
         }
-
-    });
+    }
+    billsSpread.bind(GC.Spread.Sheets.Events.EditEnded, billsOnEditEnded);
     billsSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (e, info) {
         console.log("ClipboardPasted");
         var node, iRow, iCol, curRow, curCol, datas = [], data, fieldName,valueType,value, updateData;

Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
web/maintain/billsGuidance_lib/html/zhiyin.html


+ 4 - 1
web/maintain/billsGuidance_lib/js/billsGuidance.js

@@ -229,11 +229,14 @@ const billsGuidance = (function () {
                 module.workBook.focus();
                 sheet.options.isProtected = true;
             }
-            if(module === ration){
+            else if(module === ration){
                 sheet.options.isProtected = true;
                 sheet.getRange(-1, 0, -1, 1).locked(false);
                 sheet.getRange(-1, 1, -1, -1).locked(true);
             }
+            else if(module === guideItem){
+                sheetCommonObj.bindEscKey(module.workBook, [{sheet: sheet, editStarting: null, editEnded: module.events.EditEnded}]);
+            }
             setOptions(module.workBook, options);
             buildHeader(module.workBook.getActiveSheet(), module.headers);
             bindEvent(module.workBook, module.events);

+ 4 - 1
web/maintain/bills_lib/html/neirong.html

@@ -213,6 +213,7 @@
     <script src="/lib/tether/tether.min.js"></script>
     <script src="/lib/bootstrap/bootstrap.min.js"></script>
     <script src="/web/maintain/bills_lib/scripts/global.js"></script>
+    <script src="/public/web/sheet/sheet_common.js"></script>
     <script src="/web/maintain/bills_lib/scripts/set_sheets.js"></script>
     <script src="/web/maintain/bills_lib/scripts/bills_lib_ajax.js"></script>
     <script src="/web/maintain/bills_lib/scripts/tools.js"></script>
@@ -224,6 +225,7 @@
         tools.redirect(billsLibId, 'stdBillsmain');
         let userAccount = '<%= userAccount%>'
         let spreadAllJobs = new GC.Spread.Sheets.Workbook($('#spreadAllJobs')[0], {sheetCount: 1});
+        sheetCommonObj.bindEscKey(spreadAllJobs, [{sheet: spreadAllJobs.getSheet(0), editStarting: totalJobsController.onEditStart, editEnded: totalJobsController.onEditEnded}]);
         let orgJobData;
         let maxJobNumer;
         let maxJobsNumber;
@@ -261,6 +263,7 @@
                 spreadAllJobs.getActiveSheet().resumePaint();
                 let totalJobs = createObj.newJobs();
                 totalJobs.loadJobs(null, datas);
+                totalJobsController.totalJobs = totalJobs;
                 tools.getBillsIds(function(ids){
                     myKey.delKey(spreadAllJobs, ids, totalJobs, setting, 'totalJobs');
                     bindSheet(totalJobs, spreadAllJobs.getActiveSheet(), setting);
@@ -278,7 +281,7 @@
                     maxJobsNumber = result[0].code;
                 }
                 orgJobData = sheet.getCell(0, 0).value();
-                totalJobsController.eiditData(totalJobs, sheet, setting);
+                totalJobsController.editData(sheet);
             });
         }
 

+ 9 - 2
web/maintain/bills_lib/html/qingdan.html

@@ -264,6 +264,7 @@
     <script src="/lib/tether/tether.min.js"></script>
     <script src="/lib/bootstrap/bootstrap.min.js"></script>
     <script src="/web/maintain/bills_lib/scripts/global.js"></script>
+    <script src="/public/web/sheet/sheet_common.js"></script>
     <script src="/web/maintain/bills_lib/scripts/set_sheets.js"></script>
     <script src="/web/maintain/bills_lib/scripts/bills_lib_ajax.js"></script>
     <!--idTree-->
@@ -289,7 +290,9 @@
     let sheetBillsDatas;
     tools.redirect(billsLibId, 'stdBillsmain');
     let jobsSpread = new GC.Spread.Sheets.Workbook($("#spreadJobs")[0], {sheetCount: 1});
+    sheetCommonObj.bindEscKey(jobsSpread, [{sheet: jobsSpread.getSheet(0), editStarting: jobsController.onEditStart, editEnded: jobsController.onEditEnded}]);
     let itemsSpread = new GC.Spread.Sheets.Workbook($("#spreadItems")[0], {sheetCount: 1});
+    sheetCommonObj.bindEscKey(itemsSpread, [{sheet: itemsSpread.getSheet(0), editStarting: itemsController.onEditStart, editEnded: itemsController.onEditEnded}]);
     $(document).ready(function(){
         $("#aStdJobs").attr('href', function(){
             return 'stdJobs?billsLibId=' + billsLibId;
@@ -372,12 +375,14 @@
 
     function showBillsSheet(datas, jobsSheet, itemsSheet, setting) {
         let billsSpread = new GC.Spread.Sheets.Workbook($('#spreadBills')[0], {sheetCount: 1});
+        sheetCommonObj.bindEscKey(billsSpread, [{sheet: billsSpread.getSheet(0), editStarting: dbController.onEditStart, editEnded: dbController.onEditEnded}]);
         billsSpread.focus(true);
         setSheet.initSheet(billsSpread, setting, true);
         myKey.delKey(billsSpread);
         billsTree.loadDatas(datas);
         let controller = TREE_SHEET_CONTROLLER.createNew(billsTree.tree, billsSpread.getActiveSheet(), setting);
         controller.showTreeData();
+        dbController.controller = controller;
         sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
         setSheet.formatter(billsSpread.getActiveSheet());
         //setTagId
@@ -561,10 +566,11 @@
             jobsAjax.getJobContent(billsLibId, function(datas){
                 let totalJobs = createObj.newJobs();
                 totalJobs.loadJobs(controller.tree.items, datas);
+                jobsController.totalJobs = totalJobs;
                 initData(controller, jobsSheet, jobsSetting, 'jobs');
                 myKey.delKey(jobsSpread, controller, totalJobs, jobsSetting, 'jobs');
                 bindSheet(controller, jobsSheet, 'jobs', jobsSetting);
-                jobsController.editData(controller, jobsSheet, totalJobs, jobsSetting);
+                jobsController.editData(jobsSheet);
                 if (callback){
                     callback(totalJobs);
                 }
@@ -583,10 +589,11 @@
             itemsAjax.getItemCharacter(billsLibId, function(datas){
                 let totalItems = createObj.newItems();
                 totalItems.loadItems(controller.tree.items, datas);
+                itemsController.totalItems = totalItems;
                 initData(controller, itemsSheet, itemsSetting, 'items');
                 myKey.delKey(itemsSpread, controller, totalItems, itemsSetting, 'items');
                 bindSheet(controller, itemsSheet, 'items', itemsSetting);
-                itemsController.editData(controller, itemsSheet, totalItems, itemsSetting);
+                itemsController.editData(itemsSheet);
                 if(callback){
                     callback(totalItems)
                 }

+ 6 - 2
web/maintain/bills_lib/html/tezheng.html

@@ -215,6 +215,7 @@
     <script src="/lib/bootstrap/bootstrap.min.js"></script>
     <script src="/web/maintain/bills_lib/scripts/global.js"></script>
     <!--<script src="lib/global.js"></script>-->
+    <script src="/public/web/sheet/sheet_common.js"></script>
     <script src="/web/maintain/bills_lib/scripts/set_sheets.js"></script>
     <script src="/web/maintain/bills_lib/scripts/bills_lib_ajax.js"></script>
     <script src="/web/maintain/bills_lib/scripts/tools.js"></script>
@@ -223,7 +224,9 @@
     <script src="/web/maintain/bills_lib/scripts/db_controller.js"></script>
     <SCRIPT type="text/javascript">
         let spread = new GC.Spread.Sheets.Workbook($('#spreadAllItems')[0], {sheetCount: 1});
+        sheetCommonObj.bindEscKey(spread, [{sheet: spread.getSheet(0), editStarting: totalItemsController.onEditStart, editEnded: totalItemsController.onEditEnded}]);
         let spreadVal = new GC.Spread.Sheets.Workbook($('#spreadEigenvalue')[0], {sheetCount: 1});
+        sheetCommonObj.bindEscKey(spreadVal, [{sheet: spreadVal.getSheet(0), editStarting: valueController.onEditStart, editEnded: valueController.onEditEnded}])
         let billsLibId = getQueryString('billsLibId');
         tools.redirect(billsLibId, 'stdBillsmain');
         let userAccount = '<%= userAccount%>'
@@ -273,6 +276,7 @@
                 //
                 var totalItems = createObj.newItems();
                 totalItems.loadItems(null, datas);
+                totalItemsController.totalItems = totalItems;
                 initValue(spreadVal.getActiveSheet(), totalItems, eigenValueSetting);
                 tools.getBillsIds(function(ids){
                     myKey.delKey(spread, ids, totalItems, totalItemsSetting, 'totalItems');
@@ -303,9 +307,9 @@
                     maxItemsNumber = result[0].code;
                 }
                 orgItemData = itemSheet.getCell(0, 0).value();
-                totalItemsController.eiditData(totalItems, itemSheet, setting);
+                totalItemsController.editData(itemSheet);
             });
-            valueController.editData(totalItems, valueSheet, eigenValueSetting);
+            valueController.editData(valueSheet);
             itemSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function(sender, args){
                 let itemId = itemSheet.getTag(args.newSelections[0].row, args.newSelections[0].col, GC.Spread.Sheets.SheetArea.viewport);
                 if(itemId && args.oldSelections[0].row !== args.newSelections[0].row|| itemId && args.oldSelections[0].row === 0){

+ 207 - 163
web/maintain/bills_lib/scripts/db_controller.js

@@ -2,6 +2,7 @@
  * Created by vian on 2017/4/12.
  */
 var dbController = {
+    controller: null,
     currentEditData: null,
     insert: function(controller, btn){
         tools.btnClose(btn);
@@ -349,31 +350,33 @@ var dbController = {
             }
         }
     },
-
-    editData: function(controller){
-        controller.sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-            dbController.currentEditData = args.sheet.getValue(args.row, args.col);
-        });
-        controller.sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args){
-            var node = controller.tree.selected, updateId, field;
-            if(node){
-                updateId = node.getID();
-                field = billsLibSetting.cols[args.col].data.field;
-                if(field === 'engineering'){
-                    if(isNaN(args.editingText) || args.editingText % 1 !== 0){
-                        args.sheet.setValue(args.row, args.col, dbController.currentEditData ? dbController.currentEditData : '');
-                        alert('工程专业只能输入整数!');
-                        return;
-                    }
+    onEditStart: function (sender, args) {
+        dbController.currentEditData = args.sheet.getValue(args.row, args.col);
+    },
+    onEditEnded: function (sender, args) {
+        let controller = dbController.controller;
+        var node = controller.tree.selected, updateId, field;
+        if(node){
+            updateId = node.getID();
+            field = billsLibSetting.cols[args.col].data.field;
+            if(field === 'engineering'){
+                if(isNaN(args.editingText) || args.editingText % 1 !== 0){
+                    args.sheet.setValue(args.row, args.col, dbController.currentEditData ? dbController.currentEditData : '');
+                    alert('工程专业只能输入整数!');
+                    return;
                 }
-                node.data[field] = args.editingText;
-                sheetBillsDatas.datasIdx['rowIdx'+ args.row][field] = args.editingText;
-                billsAjax.updateBills(userAccount, billsLibId, updateId, field, args.editingText);
             }
-            else {
-                args.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
-            }
-        });
+            node.data[field] = args.editingText;
+            sheetBillsDatas.datasIdx['rowIdx'+ args.row][field] = args.editingText;
+            billsAjax.updateBills(userAccount, billsLibId, updateId, field, args.editingText);
+        }
+        else {
+            args.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
+        }
+    },
+    editData: function(controller){
+        controller.sheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onEditStart);
+        controller.sheet.bind(GC.Spread.Sheets.Events.EditEnded, this.onEditEnded);
     }
 };
 
@@ -1805,43 +1808,52 @@ let pasteController = {
 
 var jobsController = {
     currentEditData: null,
-    editData: function(controller, sheet, totalJobs, setting){
+    totalJobs: null,
+    onEditStart: function (sender, args) {
+        let me = jobsController;
+        me.currentEditData = args.sheet.getValue(args.row, args.col);
+    },
+    onEditEnded: function (sender, args) {
         let me = jobsController;
-        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-           me.currentEditData = sheet.getValue(args.row, args.col);
+        let sheet = args.sheet;
+        let controller = dbController.controller;
+        let totalJobs = me.totalJobs;
+        let setting = jobsSetting;
+        var field, newData = args.editingText, id = sheet.getTag(args.row, args.col);
+        setting.cols.forEach(function (col, idx) {
+            if (args.col === idx) {
+                field = col.data.field;
+            }
         });
-        sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args) {
-            var field, newData = args.editingText, id = sheet.getTag(args.row, args.col);
-            setting.cols.forEach(function (col, idx) {
-                if (args.col === idx) {
-                    field = col.data.field;
-                }
-            });
-            if (controller.tree.selected && newData != me.currentEditData) {
-                var isExist = tools.isExist(totalJobs.jobsArr, field, newData);
-                var isRepeat = tools.isRepeat(controller.tree.selected.jobs, field ,newData, 'reference', 'job');
-                //create
-                if(!id && newData && !isRepeat){
-                        if(isExist){
-                            jobsController.createExist(sheet, controller, totalJobs, field, newData, args, setting);
-                        }
-                        else {
-                            jobsController.createNew(sheet, controller, totalJobs, field, newData, args, setting);
-                        }
+        if (controller.tree.selected && newData != me.currentEditData) {
+            var isExist = tools.isExist(totalJobs.jobsArr, field, newData);
+            var isRepeat = tools.isRepeat(controller.tree.selected.jobs, field ,newData, 'reference', 'job');
+            //create
+            if(!id && newData && !isRepeat){
+                if(isExist){
+                    jobsController.createExist(sheet, controller, totalJobs, field, newData, args, setting);
                 }
-                //update
-                else if(id && !isRepeat){
-                    jobsController.update(sheet, controller, totalJobs, field, newData, id, isExist, args, setting);
-                }
-                //处理重复
-                if(isRepeat){
-                       tools.alertOpr(args, sheet, '该工作内容已存在!', controller.tree.selected.jobs, 'job');
+                else {
+                    jobsController.createNew(sheet, controller, totalJobs, field, newData, args, setting);
                 }
             }
-            else {
-                sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+            //update
+            else if(id && !isRepeat){
+                jobsController.update(sheet, controller, totalJobs, field, newData, id, isExist, args, setting);
             }
-        });
+            //处理重复
+            if(isRepeat){
+                tools.alertOpr(args, sheet, '该工作内容已存在!', controller.tree.selected.jobs, 'job');
+            }
+        }
+        else {
+            sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+        }
+    },
+    editData: function(sheet){
+        let me = jobsController;
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
+        sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
     },
 
 
@@ -2020,43 +2032,52 @@ var jobsController = {
 
 var itemsController = {
     currentEditData: null,
-    editData: function(controller, sheet, totalItems, setting){
+    totalItems: null,
+    onEditStart: function (sender, args) {
         let me = itemsController;
-        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-            me.currentEditData = sheet.getValue(args.row, args.col);
-        })
-        sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args) {
-            var field, newData = args.editingText, id = sheet.getTag(args.row, args.col);
-            setting.cols.forEach(function (col, idx) {
-                if (args.col === idx) {
-                    field = col.data.field;
-                }
-            });
-            if (controller.tree.selected && newData != me.currentEditData) {
-                var isExist = tools.isExist(totalItems.itemsArr, field, newData);
-                var isRepeat = tools.isRepeat(controller.tree.selected.items, field ,newData, 'reference', 'item');
-                //create
-                if(!id && newData && !isRepeat){
-                    if(isExist){
-                        itemsController.createExist(sheet, controller, totalItems, field, newData, args, setting);
-                    }
-                    else {
-                        itemsController.createNew(sheet, controller, totalItems, field, newData, args, setting);
-                    }
-                }
-                //update
-                else if(id && !isRepeat){
-                    itemsController.update(sheet, controller, totalItems, field, newData, id, isExist, args, setting);
+        me.currentEditData = args.sheet.getValue(args.row, args.col);
+    },
+    onEditEnded: function (sender, args) {
+        let me = itemsController;
+        let controller = dbController.controller;
+        let totalItems = me.totalItems;
+        let setting = itemsSetting;
+        let sheet = args.sheet;
+        var field, newData = args.editingText, id = sheet.getTag(args.row, args.col);
+        setting.cols.forEach(function (col, idx) {
+            if (args.col === idx) {
+                field = col.data.field;
+            }
+        });
+        if (controller.tree.selected && newData != me.currentEditData) {
+            var isExist = tools.isExist(totalItems.itemsArr, field, newData);
+            var isRepeat = tools.isRepeat(controller.tree.selected.items, field ,newData, 'reference', 'item');
+            //create
+            if(!id && newData && !isRepeat){
+                if(isExist){
+                    itemsController.createExist(sheet, controller, totalItems, field, newData, args, setting);
                 }
-                //处理重复
-                if(isRepeat){
-                    tools.alertOpr(args, sheet, '该项目特征已存在!', controller.tree.selected.items, 'item');
+                else {
+                    itemsController.createNew(sheet, controller, totalItems, field, newData, args, setting);
                 }
             }
-            else {
-                sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+            //update
+            else if(id && !isRepeat){
+                itemsController.update(sheet, controller, totalItems, field, newData, id, isExist, args, setting);
             }
-        });
+            //处理重复
+            if(isRepeat){
+                tools.alertOpr(args, sheet, '该项目特征已存在!', controller.tree.selected.items, 'item');
+            }
+        }
+        else {
+            sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+        }
+    },
+    editData: function(sheet){
+        let me = itemsController;
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
+        sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
     },
 
     createNew: function(sheet, controller, totalItems, field, newData, args, setting){
@@ -2211,39 +2232,46 @@ var itemsController = {
 
 var valueController = {
     currentEditData: null,
-    editData: function(totalItems, sheet, setting){
+    onEditStart: function (sender, args) {
         let me = valueController;
-        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-            me.currentEditData = sheet.getValue(args.row, args.col);
+        me.currentEditData = args.sheet.getValue(args.row, args.col);
+    },
+    onEditEnded: function (sender, args) {
+        let me = valueController;
+        let totalItems = totalItemsController.totalItems;
+        let sheet = args.sheet;
+        let setting = eigenValueSetting;
+        var newValue = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
+        setting.cols.forEach(function(col, colIdx){
+            if(args.col === colIdx){
+                field = col.data.field;
+            }
         });
-        sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args){
-            var newValue = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
-            setting.cols.forEach(function(col, colIdx){
-                if(args.col === colIdx){
-                    field = col.data.field;
-                }
-            });
-            if(selectedId && newValue!== me.currentEditData){
-                isRepeat = tools.isRepeat(valueController.getValues(totalItems, selectedId), field, newValue, 'document');
-                if(!tagId && !isRepeat && newValue){//create
-                        valueController.createValue(sheet, totalItems, selectedId, field, newValue, args);
-                }
-                else if(tagId && !isRepeat){//update
-                        valueController.updateValue(totalItems, tagId, newValue, field, args);
+        if(selectedId && newValue!== me.currentEditData){
+            isRepeat = tools.isRepeat(valueController.getValues(totalItems, selectedId), field, newValue, 'document');
+            if(!tagId && !isRepeat && newValue){//create
+                valueController.createValue(sheet, totalItems, selectedId, field, newValue, args);
+            }
+            else if(tagId && !isRepeat){//update
+                valueController.updateValue(totalItems, tagId, newValue, field, args);
+            }
+            if(isRepeat){
+                if(tagId && newValue){
+                    sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value(me.currentEditData);
                 }
-                if(isRepeat){
-                    if(tagId && newValue){
-                        sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value(me.currentEditData);
-                    }
-                    else {
-                        sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
-                    }
+                else {
+                    sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
                 }
             }
-            else{
-                sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
-            }
-        });
+        }
+        else{
+            sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+        }
+    },
+    editData: function(sheet){
+        let me = valueController;
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
+        sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
     },
     createValue: function(sheet, totalItems, id, field, newValue, args){
         var newData;
@@ -2346,34 +2374,42 @@ var valueController = {
 
 var totalJobsController = {
     currentEditData: null,
-    eiditData: function(totalJobs, sheet, setting){
+    totalJobs: null,
+    onEditStart: function (sender, args) {
         let me = totalJobsController;
-        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-            me.currentEditData = sheet.getValue(args.row, args.col);
-        })
-        sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args){
-            var newData = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
-            setting.cols.forEach(function(col, colIdx){
-                if(args.col === colIdx){
-                    field = col.data.field;
-                }
-            });
-            if(newData != me.currentEditData){
-                isRepeat = tools.isRepeat(totalJobs.jobsArr, field, newData, 'reference', null);
-                if(!tagId && !isRepeat && newData){//create
-                    totalJobsController.createJob(sheet, totalJobs, field, newData, args);
-                }
-                else if(tagId && !isRepeat){//update
-                    totalJobsController.updateJob(totalJobs, tagId, field, newData, args);
-                }
-                if(isRepeat){
-                    tools.alertTotalOpr(args, '该工作内容已存在!', totalJobs.jobsArr);
-                }
-            }
-            else{
-                sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+        me.currentEditData = args.sheet.getValue(args.row, args.col);
+    },
+    onEditEnded: function (sender, args) {
+        let me = totalJobsController;
+        let totalJobs = me.totalJobs;
+        let sheet = args.sheet;
+        let setting = totalJobsSetting;
+        var newData = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
+        setting.cols.forEach(function(col, colIdx){
+            if(args.col === colIdx){
+                field = col.data.field;
             }
         });
+        if(newData != me.currentEditData){
+            isRepeat = tools.isRepeat(totalJobs.jobsArr, field, newData, 'reference', null);
+            if(!tagId && !isRepeat && newData){//create
+                totalJobsController.createJob(sheet, totalJobs, field, newData, args);
+            }
+            else if(tagId && !isRepeat){//update
+                totalJobsController.updateJob(totalJobs, tagId, field, newData, args);
+            }
+            if(isRepeat){
+                tools.alertTotalOpr(args, '该工作内容已存在!', totalJobs.jobsArr);
+            }
+        }
+        else{
+            sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+        }
+    },
+    editData: function(sheet){
+        let me = totalJobsController;
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
+        sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
     },
 
     createJob: function(sheet, totalJobs, field, newData, args){
@@ -2434,34 +2470,42 @@ var totalJobsController = {
 
 var totalItemsController = {
     currentEditData: null,
-    eiditData: function(totalItems, sheet, setting){
+    totalItems: null,
+    onEditStart: function (sender, args) {
         let me = totalItemsController;
-        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
-            me.currentEditData = sheet.getValue(args.row, args.col);
+        me.currentEditData = args.sheet.getValue(args.row, args.col);
+    },
+    onEditEnded: function (sender, args) {
+        let me = totalItemsController;
+        let totalItems = me.totalItems;
+        let sheet = args.sheet;
+        let setting = totalItemsSetting;
+        var newData = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
+        setting.cols.forEach(function(col, colIdx){
+            if(args.col === colIdx){
+                field = col.data.field;
+            }
         });
-        sheet.bind(GC.Spread.Sheets.Events.EditEnded, function(sender, args){
-            var newData = args.editingText, tagId = sheet.getTag(args.row, args.col), field, isRepeat;
-            setting.cols.forEach(function(col, colIdx){
-                if(args.col === colIdx){
-                    field = col.data.field;
-                }
-            });
-            if(newData != me.currentEditData){
-                isRepeat = tools.isRepeat(totalItems.itemsArr, field, newData, 'reference', null);
-                if(!tagId && !isRepeat && newData){//create
-                    totalItemsController.createItem(sheet, totalItems, field, newData, args);
-                }
-                else if(tagId && !isRepeat ){//update
-                    totalItemsController.updateItem(totalItems, tagId, field, newData, args);
-                }
-                else if(isRepeat){
-                    tools.alertTotalOpr(args, '该项目特征已存在!', totalItems.itemsArr);
-                }
+        if(newData != me.currentEditData){
+            isRepeat = tools.isRepeat(totalItems.itemsArr, field, newData, 'reference', null);
+            if(!tagId && !isRepeat && newData){//create
+                totalItemsController.createItem(sheet, totalItems, field, newData, args);
             }
-            else{
-                sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+            else if(tagId && !isRepeat ){//update
+                totalItemsController.updateItem(totalItems, tagId, field, newData, args);
             }
-        });
+            else if(isRepeat){
+                tools.alertTotalOpr(args, '该项目特征已存在!', totalItems.itemsArr);
+            }
+        }
+        else{
+            sheet.getCell(args.row, args.col).value(me.currentEditData ? me.currentEditData : '');
+        }
+    },
+    editData: function(sheet){
+        let me = totalItemsController;
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, me.onEditStart);
+        sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
     },
 
     createItem: function(sheet, totalItems, field, newData, args){

+ 6 - 0
web/maintain/ration_repository/dinge.html

@@ -551,6 +551,12 @@
                 rationInstObj.getInstallation(parseInt(getQueryString("repository")));
                 pageOprObj.initPage();
 
+                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);
 
                 $("#linkGLJ").click(function(){
                     rationGLJOprObj.bindRationGljDelOpr();

+ 2 - 0
web/maintain/ration_repository/js/coe.js

@@ -73,6 +73,7 @@ let coeOprObj = {
     buildSheet: function (container) {
         let me = coeOprObj;
         me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
+        sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: null, editEnded: me.onEditEnded}]);
         me.workSheet = me.workBook.getSheet(0);
         me.workSheet.options.isProtected = true;
         me.onDelOpr(me.workBook, me.setting);
@@ -380,6 +381,7 @@ let gljAdjOprObj = {
         let me = gljAdjOprObj;
         me.workBook = sheetCommonObj.buildSheet(container, me.setting, 3);
         me.workSheet = me.workBook.getSheet(0);
+        sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: me.onEditStart, editEnded: me.onEditEnded}]);
         me.workSheet.options.isProtected = true;
         me.onDelOpr(me.workBook, me.setting);
         me.workSheet.clearSelection();

+ 3 - 3
web/maintain/ration_repository/js/installation.js

@@ -147,8 +147,8 @@ let feeItemObj = {
         let me = this, se = sectionObj, fr = feeRuleObj, bs = batchSectionObj;
         if(!this.isDef(this.workBook)){
             this.workBook = sheetCommonObj.buildSheet($('#feeItemSpread')[0], this.setting, 10);
-                //new GC.Spread.Sheets.Workbook($('#feeItemSpread')[0], {sheetCount: 1});
             this.sheet = this.workBook.getActiveSheet();
+            sheetCommonObj.bindEscKey(this.workBook, [{sheet: this.sheet, editStarting: me.onEditStarting, editEnded: me.onEditEnded}]);
             this.setOptions(this.workBook, this.setting.options);
             this.sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
             this.bindEvents(this.sheet);
@@ -409,8 +409,8 @@ let sectionObj = {
     buildSheet: function () {
         if(!this.isDef(this.workBook)){
             this.workBook = sheetCommonObj.buildSheet($('#instSectionSpread')[0], this.setting, 10);
-                //new GC.Spread.Sheets.Workbook($('#instSectionSpread')[0], {sheetCount: 1});
             this.sheet = this.workBook.getActiveSheet();
+            sheetCommonObj.bindEscKey(this.workBook, [{sheet: this.sheet, editStarting: this.onEditStarting, editEnded: this.onEditEnded}]);
             this.setOptions(this.workBook, this.setting.options);
             this.sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
             this.bindEvents(this.sheet);
@@ -648,8 +648,8 @@ let feeRuleObj = {
         let fi = feeItemObj;
         if(!this.isDef(this.workBook)){
             this.workBook = sheetCommonObj.buildSheet($('#instFeeRuleSpread')[0], this.setting, 10);
-                //new GC.Spread.Sheets.Workbook($('#instFeeRuleSpread')[0], {sheetCount: 1});
             this.sheet = this.workBook.getActiveSheet();
+            sheetCommonObj.bindEscKey(this.workBook, [{sheet: this.sheet, editStarting: this.onEditStarting, editEnded: this.onEditEnded}])
             this.setOptions(this.workBook, this.setting.options);
             this.sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
             this.bindEvents(this.sheet);

+ 1 - 0
web/maintain/ration_repository/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/maintain/ration_repository/js/section_tree.js

@@ -124,6 +124,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.getActiveSheet();
             this.setOptions(this.workBook, this.setting.options);
             this.sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;

+ 1 - 0
web/maintain/std_glj_lib/js/glj.js

@@ -249,6 +249,7 @@ let repositoryGljObj = {
     buildSheet: function(container) {
         let me = repositoryGljObj;
         me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30, me);
+        sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: me.onCellEditStart, editEnded: me.onCellEditEnd}]);
         me.bindEnterKey();
         me.repositoryGljDelOpr();
         me.setUnitCombo(me.workBook.getActiveSheet(), me.setting.header);

+ 1 - 0
web/maintain/std_glj_lib/js/gljComponent.js

@@ -21,6 +21,7 @@ let gljComponentOprObj = {
     buildSheet: function(container) {
         let me = gljComponentOprObj;
         me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30, me);
+        sheetCommonObj.bindEscKey(me.workBook, [{sheet: me.workBook.getSheet(0), editStarting: me.onCellEditStart, editEnded: me.onCellEditEnd}]);
         me.workBook.getSheet(0).setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
         me.workBook.getSheet(0).setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);
         sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);