Преглед изворни кода

成本报审,输入、复制粘贴计算式

MaiXinRong пре 2 дана
родитељ
комит
2f594e25aa
1 измењених фајлова са 38 додато и 9 уклоњено
  1. 38 9
      app/public/js/cost_stage_ledger.js

+ 38 - 9
app/public/js/cost_stage_ledger.js

@@ -475,7 +475,26 @@ $(document).ready(function() {
                 for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
                     const curCol = info.cellRange.col + iCol;
                     const colSetting = info.sheet.zh_setting.cols[curCol];
-                    data[colSetting.field] = trimInvalidChar(pasteData[iRow-filterRow][iCol]);
+                    if (datas.length > 0) if (datas[0][colSetting.field] === undefined) continue;
+
+                    const newText = trimInvalidChar(pasteData[iRow-filterRow][iCol]);
+                    if (colSetting.type === 'Number') {
+                        const num = _.toNumber(newText);
+                        if (!_.isFinite(num)) {
+                            try {
+                                data[colSetting.field] = ZhCalc.mathCalcExpr(transExpr(newText));
+                            } catch (err) {
+                                toastr.error('粘贴的计算式非法');
+                                SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                                return;
+                            }
+                        } else {
+                            data[colSetting.field] = num;
+                        }
+                    } else {
+                        data[colSetting.field] = newText;
+                    }
+
                     bPaste = true;
                 }
                 if (bPaste) {
@@ -732,11 +751,16 @@ $(document).ready(function() {
                 if (col.type === 'Number') {
                     const num = _.toNumber(newText);
                     if (!_.isFinite(num)) {
-                        toastr.error('输入的数字非法');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                        try {
+                            updateData[col.field] = ZhCalc.mathCalcExpr(transExpr(newText));
+                        } catch (err) {
+                            toastr.error('输入的计算式非法');
+                            SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                            return;
+                        }
+                    } else {
+                        updateData[col.field] = num;
                     }
-                    updateData[col.field] = num;
                 } else {
                     updateData[col.field] = newText;
                 }
@@ -748,11 +772,16 @@ $(document).ready(function() {
                 if (col.type === 'Number') {
                     const num = _.toNumber(newText);
                     if (!_.isFinite(num)) {
-                        toastr.error('输入的数字非法');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                        try {
+                            addData[col.field] = ZhCalc.mathCalcExpr(transExpr(newText));
+                        } catch (err) {
+                            toastr.error('输入的计算式非法');
+                            SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                            return;
+                        }
+                    } else {
+                        addData[col.field] = num;
                     }
-                    addData[col.field] = num;
                 } else {
                     addData[col.field] = newText;
                 }