Просмотр исходного кода

成本分析,台账、明细,输入、复制粘贴计算式

MaiXinRong 1 день назад
Родитель
Сommit
69d686654b
1 измененных файлов с 30 добавлено и 5 удалено
  1. 30 5
      app/public/js/cost_stage_analysis.js

+ 30 - 5
app/public/js/cost_stage_analysis.js

@@ -447,7 +447,25 @@ $(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) {
@@ -546,11 +564,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;
                 }
@@ -626,6 +649,8 @@ $(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];
+                    if (!info.sheet.zh_setting.emptyRows && !node) continue;
+
                     const value = trimInvalidChar(pasteData[iRow-filterRow][iCol]);
                     if (colSetting.type === 'Number') {
                         const num = _.toNumber(value);