Преглед на файлове

台账修订,表达式相关

MaiXinRong преди 5 години
родител
ревизия
4d255e7d37
променени са 1 файла, в които са добавени 58 реда и са изтрити 4 реда
  1. 58 4
      app/public/js/revise.js

+ 58 - 4
app/public/js/revise.js

@@ -16,6 +16,14 @@ const invalidFields = {
     posCalc: ['sgfh_qty', 'sgfh_tp', 'sjcl_qty', 'sjcl_tp', 'qtcl_qty', 'qtcl_tp'],
     posXmj: ['code'],
 };
+function getExprInfo (field) {
+    const exprField = [
+        {qty: 'sgfh_qty', expr: 'sgfh_expr'},
+        {qty: 'sjcl_qty', expr: 'sjcl_expr'},
+        {qty: 'qtcl_qty', expr: 'qtcl_expr'},
+    ];
+    return _.find(exprField, {qty: field});
+}
 function transExpr(expr) {
     return $.trim(expr).replace('\t', '').replace('=', '').replace('%', '/100');
 }
@@ -76,7 +84,13 @@ $(document).ready(() => {
             if (col && col.type === 'Number') {
                 const data = SpreadJsObj.getSelectObject(sheet);
                 if (data) {
-                    $('#bills-expr').val(data[col.field]).attr('field', col.field).attr('org', data[col.field]);
+                    const exprInfo = getExprInfo(col.field);
+                    if (exprInfo) {
+                        $('#bills-expr').val(data[exprInfo.expr] ? data[exprInfo.expr] : data[col.field])
+                            .attr('field', col.field).attr('org', data[col.field]);
+                    } else {
+                        $('#bills-expr').val(data[col.field]).attr('field', col.field).attr('org', data[col.field]);
+                    }
 
                     if (col.field.indexOf('dgn') >= 0) {
                         $('#bills-expr').attr('readOnly', readOnly || cell.locked() || (_.isString(data.b_code) && data.b_code !== ''));
@@ -400,6 +414,10 @@ $(document).ready(() => {
                         } else {
                             try {
                                 data[col.field] = math.evaluate(transExpr(text));
+                                const exprInfo = getExprInfo(col.field);
+                                if (exprInfo) {
+                                    data[exprInfo.expr] = newValue;
+                                }
                             } catch(err) {
                                 toastr.error('输入的表达式非法');
                                 SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -513,6 +531,11 @@ $(document).ready(() => {
                         } else {
                             try {
                                 data[colSetting.field] = math.evaluate(transExpr(value));
+                                const exprInfo = getExprInfo(colSetting.field);
+                                if (exprInfo) {
+                                    data[exprInfo.expr] = value;
+                                }
+                                bPaste = true;
                             } catch (err) {
                                 toastMessageUniq(hint.invalidExpr);
                                 continue;
@@ -646,6 +669,10 @@ $(document).ready(() => {
                 for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
                     const col = sheet.zh_setting.cols[iCol];
                     data[col.field] = null;
+                    const exprInfo = getExprInfo(col.field);
+                    if (exprInfo) {
+                        data[exprInfo.expr] = '';
+                    }
                 }
                 datas.push(data);
             }
@@ -653,6 +680,7 @@ $(document).ready(() => {
                 postData(window.location.pathname + '/update', {postType: 'update', postData: datas}, function (result) {
                     const refreshNode = sheet.zh_tree.loadPostData(result);
                     billsTreeSpreadObj.refreshTree(sheet, refreshNode);
+                    treeOperationObj.loadExprToInput(sheet);
                 });
             }
         },
@@ -746,6 +774,10 @@ $(document).ready(() => {
                         }
                         const colSetting = sheet.zh_setting.cols[iCol];
                         data[colSetting.field] = null;
+                        const exprInfo = getExprInfo(colSetting.field);
+                        if (exprInfo) {
+                            data[exprInfo.expr] = '';
+                        }
                     }
                     datas.push(data);
                 }
@@ -827,6 +859,10 @@ $(document).ready(() => {
                 } else {
                     try {
                         data[field] = math.evaluate(transExpr(newValue));
+                        const exprInfo = getExprInfo(field);
+                        if (exprInfo) {
+                            data[exprInfo.expr] = newValue;
+                        }
                     } catch (err) {
                         toastr.error('输入的表达式非法');
                         return;
@@ -839,7 +875,6 @@ $(document).ready(() => {
             // 更新至服务器
             postData(window.location.pathname + '/update', {postType: 'update', postData: data}, function (result) {
                 const refreshNode = billsTree.loadPostData(result);
-                expr.val(select[field]);
                 billsTreeSpreadObj.refreshTree(billsSheet, refreshNode);
             });
         });
@@ -1083,7 +1118,11 @@ $(document).ready(() => {
             if (col && col.type === 'Number') {
                 const data = SpreadJsObj.getSelectObject(posSheet);
                 if (data) {
-                    $('#pos-expr').val(data[col.field]).attr('field', col.field).attr('org', data[col.field])
+                    const exprInfo = getExprInfo(col.field);
+                    const value = exprInfo
+                        ? (data[exprInfo.expr] ? data[exprInfo.expr] : data[col.field])
+                        : data[col.field];
+                    $('#pos-expr').val(value).attr('field', col.field).attr('org', data[col.field])
                         .attr('row', sel.row).attr('readOnly', readOnly || cell.locked());
                 } else {
                     $('#pos-expr').val('').attr('readOnly', true);
@@ -1238,6 +1277,10 @@ $(document).ready(() => {
                     } else {
                         try {
                             data.postData[col.field] = math.evaluate(transExpr(newText));
+                            const exprInfo = getExprInfo(col.field);
+                            if (exprInfo) {
+                                data.updateData[exprInfo.expr] = newText;
+                            }
                         } catch(err) {
                             toastr.error('输入的表达式非法');
                             SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -1288,6 +1331,10 @@ $(document).ready(() => {
                         if (!style.locked) {
                             const colSetting = sheet.zh_setting.cols[iCol];
                             data[colSetting.field] = null;
+                            const exprInfo = getExprInfo(colSetting.field);
+                            if (exprInfo) {
+                                data[exprInfo.expr] = '';
+                            }
                             bDel = true;
                         }
                     }
@@ -1411,6 +1458,10 @@ $(document).ready(() => {
                         } else {
                             try {
                                 posData[colSetting.field] = math.evaluate(transExpr(posData[colSetting.field]));
+                                const exprInfo = getExprInfo(colSetting.field);
+                                if (exprInfo) {
+                                    posData[exprInfo.expr] = trimInvalidChar(info.sheet.getText(curRow, curCol));
+                                }
                             } catch (err) {
                                 if (!bHint) {
                                     toastr.warning('粘贴了非法表达式,已过滤');
@@ -1486,6 +1537,10 @@ $(document).ready(() => {
                 } else {
                     try {
                         data[field] = math.evaluate(transExpr(newValue));
+                        const exprInfo = getExprInfo(field);
+                        if (exprInfo) {
+                            data[exprInfo.expr] = newValue;
+                        }
                     } catch (err) {
                         toastr.error('输入的表达式非法');
                         return;
@@ -1498,7 +1553,6 @@ $(document).ready(() => {
             // 更新至服务器
             postData(window.location.pathname + '/update', {postType: 'pos', posPostType: 'update', postData: data}, function (result) {
                 const updateRst = pos.updateDatas(result.pos);
-                expr.val(select[field]);
                 // 刷新当前行, 不适用于新增(在非下一空白行新增)
                 SpreadJsObj.reLoadRowData(posSheet, row);
                 const loadResult = billsTree.loadPostData(result.ledger);