|
|
@@ -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);
|