Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

chenshilong 7 years ago
parent
commit
415b3f9bae

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

@@ -568,6 +568,9 @@ var sheetCommonObj = {
                     let row = sheet.getActiveRowIndex();
                     let col = sheet.getActiveColumnIndex();
                     let orgV = sheet.getValue(row, col);
+                    let orgText = sheet.getText(row, col);
+                    console.log(`orgV: ${orgV}`);
+                    console.log(`orgText: ${orgText}`);
                     if(!isDef(orgV)){
                         orgV = '';
                     }

+ 3 - 0
web/building_saas/main/js/views/main_tree_col.js

@@ -42,6 +42,9 @@ let MainTreeCol = {
             }
         },
         code: function (node) {
+            if(!isDef(node)){
+                return '';
+            }
             if(node.sourceType === projectObj.project.Ration.getSourceType() && node.data.type === rationType.ration
                 && isDef(node.data.code) && isDef(node.data.prefix) && node.data.prefix !== ''){
                 return node.data.prefix + node.data.code.replace(new RegExp(node.data.prefix, 'g'), '');

+ 43 - 7
web/building_saas/main/js/views/project_view.js

@@ -531,12 +531,6 @@ var projectObj = {
         let newV;
         if(node && node.sourceType === projectObj.project.Ration.getSourceType() && node.data.type === rationType.ration
             && isDef(node.data.code) && isDef(node.data.prefix) && node.data.prefix !== rationPrefix.none && fieldName === 'code'){
-/*            if(node.data.prefix === rationPrefix.complementary){
-                newV = orgV.replace(new RegExp(rationPrefix.complementary), '');
-            }
-            if(node.data.prefix === rationPrefix.borrow){
-                newV = orgV.replace(new RegExp(rationPrefix.borrow), '');
-            }*/
             if(node.data.prefix){
                 newV = orgV.replace(new RegExp(node.data.prefix), '');
             }
@@ -708,9 +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.mainSpreadEscKey(that.mainSpread, that.mainSpreadEditStarting, that.mainSpreadEditEnded);
                     sheetCommonObj.bindEnterKey(that.mainSpread, that.mainSpreadEnterKey);
                 }
-                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();
@@ -756,6 +750,48 @@ var projectObj = {
         });
 
     },
+    //mainSpread有一些单元格进入编辑状态后,会动态改变值,公用的bindEscKey方法不适用
+    mainSpreadEscKey: function (workBook, editStarting = null, editEnded = null) {
+        workBook.commandManager().register('myEsc', function () {
+            let sheet = workBook.getActiveSheet();
+            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);
+            let node = projectObj.project.mainTree.items[row];
+            let field = colSettingObj.getFieldByCol(col);
+            //进入编辑状态后改变了单元格值的时候特殊处理
+            if(isDef(field) && field === 'code'){
+                if(node && node.sourceType === projectObj.project.Ration.getSourceType() && node.data.type === rationType.ration
+                    && isDef(node.data.code) && isDef(node.data.prefix) && node.data.prefix !== rationPrefix.none){
+                    orgV = node.data.prefix + orgV;
+                }
+            }
+            else if(isDef(field) && field === 'quantity'){
+                orgV = isDef(node) && isDef(node.data.quantity) ? node.data.quantity : '';
+            }
+            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);
+            }
+        });
+        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);
+    },
     mainSpreadEnterKey: function () {
         let me = projectObj;
         let sheet = me.mainSpread.getActiveSheet();