Procházet zdrojové kódy

造价书,清单、定额,通过delete键,清除数量应实时计算

MaiXinRong před 7 roky
rodič
revize
d4d260dccc

+ 10 - 0
public/web/sheet/sheet_data_helper.js

@@ -280,5 +280,15 @@ var SheetDataHelper = {
             sheet.setSelection(range.row, range.col, range.rowCount, range.colCount);
         }
         return target;
+    },
+    /**
+     * 在sheet中使用delete键,触发EndEdited事件
+     * @param sheet
+     */
+    deleteBind: function (sheet, fun) {
+        sheet.addKeyMap(46, false, false, false, false, function () {
+            let selections = sheet.getSelections();
+            
+        });
     }
 };

+ 31 - 11
web/building_saas/main/js/views/project_view.js

@@ -139,7 +139,9 @@ var projectObj = {
             }
             return nodes;
         }
-        value = value.toDecimal(projectObj.project.Decimal.common.quantity);
+        if (value) {
+            value = value.toDecimal(projectObj.project.Decimal.common.quantity);
+        }
         if (node.sourceType === projectObj.project.Bills.getSourceType()) {
             calcFees.setFee(node.data, fieldName, value);
             calc.calcNode(node, true);
@@ -250,15 +252,9 @@ var projectObj = {
             this.updateRationCode(node, value);
         }
     },
-    mainSpreadEditEnded: function (sender, info) {
-        let project = projectObj.project;
-        let node = project.mainTree.items[info.row];
-        let colSetting = projectObj.mainController.setting.cols[info.col];
-        let fieldName = projectObj.mainController.setting.cols[info.col].data.field;
-        // 检查输入类型等
-        let value = projectObj.checkSpreadEditingText(info.editingText, colSetting);
-
-        if (value && value !== calcFees.getFee(node.data, fieldName)) {
+    updateCellValue: function (node, value, colSetting) {
+        let project = projectObj.project, fieldName = colSetting.data.field;
+        if (value !== calcFees.getFee(node.data, fieldName)) {
             if (fieldName === 'code') {
                 projectObj.updateCode(node, value);
             } else if (fieldName === 'quantity' && project.quantity_detail.quantityEditChecking(value,node,fieldName)) {
@@ -276,7 +272,7 @@ var projectObj = {
                     project.VolumePrice.updateField(node.source, fieldName, value, true);
                 }
                 if (colSetting.data.wordWrap) {
-                    info.sheet.autoFitRow(info.row);
+                    info.sheet.autoFitRow(node.serialNo());
                 }
                 projectObj.mainController.refreshTreeNode([node]);
             }
@@ -286,6 +282,29 @@ var projectObj = {
             projectObj.mainController.refreshTreeNode([node], false);
         }
     },
+    mainSpreadEditEnded: function (sender, info) {
+        let project = projectObj.project;
+        let node = project.mainTree.items[info.row];
+        let colSetting = projectObj.mainController.setting.cols[info.col];
+        let fieldName = projectObj.mainController.setting.cols[info.col].data.field;
+        // 检查输入类型等
+        let value = projectObj.checkSpreadEditingText(info.editingText, colSetting);
+
+        projectObj.updateCellValue(node, value, colSetting);
+    },
+    mainSpreadRangeChanged: function (sender, info) {
+        let project = projectObj.project, setting = projectObj.mainController.setting;
+        if (info.changedCells.length > 0) {
+            for (let changedCell of info.changedCells) {
+                let cell = info.sheet.getCell(changedCell.row, changedCell.col);
+                let node = project.mainTree.items[changedCell.row];
+                let colSetting = setting.cols[changedCell.col];
+                let value = projectObj.checkSpreadEditingText(cell.text(), colSetting);
+
+                projectObj.updateCellValue(node, value, colSetting);
+            }
+        }
+    },
     checkMainSpread: function () {
         if (!this.mainSpread) {
             this.mainSpread = SheetDataHelper.createNewSpread($('#billsSpread')[0]);
@@ -338,6 +357,7 @@ var projectObj = {
                 that.mainController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, that.treeSelectedChanged);
 
                 that.mainSpread.bind(GC.Spread.Sheets.Events.EditEnded, that.mainSpreadEditEnded);
+                that.mainSpread.bind(GC.Spread.Sheets.Events.RangeChanged, that.mainSpreadRangeChanged);
                 that.loadMainSpreadContextMenu();
             }
             else {