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

财务账面,台账、明细,输入、复制粘贴计算式

MaiXinRong 1 день назад
Родитель
Сommit
c8323a04a2
1 измененных файлов с 32 добавлено и 8 удалено
  1. 32 8
      app/public/js/cost_stage_book.js

+ 32 - 8
app/public/js/cost_stage_book.js

@@ -344,7 +344,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) {
@@ -504,12 +522,17 @@ $(document).ready(function() {
                 const updateData = { book_id: detailData.book_id, detail_id: detailData.id, ledger_id: detailData.ledger_id };
                 if (col.type === 'Number') {
                     const num = _.toNumber(newText);
-                    if (!_.isFinite(num)) {
-                        toastr.error('输入的数字非法');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                    if (_.isFinite(num)) {
+                        updateData[col.field] = num;
+                    } else {
+                        try {
+                            updateData[col.field] = ZhCalc.mathCalcExpr(transExpr(newText));
+                        } catch(err) {
+                            toastr.error('输入的表达式非法');
+                            SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                            return;
+                        }
                     }
-                    updateData[col.field] = num;
                 } else {
                     updateData[col.field] = newText;
                 }
@@ -570,7 +593,7 @@ $(document).ready(function() {
             let filterRow = 0;
             for (let iRow = 0; iRow < info.cellRange.rowCount; iRow ++) {
                 const curRow = info.cellRange.row + iRow;
-                const node = tree.nodes[curRow];
+                const node = info.sheet.zh_data[curRow];
                 if (!node) continue;
 
                 let bPaste = false;
@@ -578,8 +601,9 @@ $(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];
-                    const value = trimInvalidChar(pasteData[iRow-filterRow][iCol]);
+                    if (datas.length > 0) if (datas[0][colSetting.field] === undefined) continue;
 
+                    const value = trimInvalidChar(pasteData[iRow-filterRow][iCol]);
                     if (colSetting.type === 'Number') {
                         const num = _.toNumber(value);
                         if (num) {