Prechádzať zdrojové kódy

修复变更bug,单位修改同步更新申请数量小数位

ellisran 5 mesiacov pred
rodič
commit
695f5c450a
1 zmenil súbory, kde vykonal 43 pridanie a 23 odobranie
  1. 43 23
      app/public/js/change_revise.js

+ 43 - 23
app/public/js/change_revise.js

@@ -135,7 +135,7 @@ $(document).ready(() => {
                 if (!data) return '';
                 if (!data.name) return '';
                 const cInfo = _.find(changeList, { gcl_id: data.lid, mx_id: data.id });
-                return cInfo ? cInfo.camount : '';
+                return cInfo ? ZhCalc.round(cInfo.camount, findDecimal(cInfo.unit)) : '';
             }
         },
         readOnly: {
@@ -296,7 +296,7 @@ $(document).ready(() => {
     treeSetting.calcFun = function (node) {
         if (node && node.b_code) {
             const posData = pos.getLedgerPos(node.id) || [];
-            let camount = node.camount || 0;
+            let camount = ZhCalc.round(node.camount, findDecimal(node.unit)) || 0;
             if (posData.length > 0) {
                 let sgfh_qty = 0;
                 let sjcl_qty = 0;
@@ -307,7 +307,7 @@ $(document).ready(() => {
                     sjcl_qty = ZhCalc.add(sjcl_qty, np.sjcl_qty);
                     qtcl_qty = ZhCalc.add(qtcl_qty, np.qtcl_qty);
                     const cInfo = _.find(changeList, { gcl_id: np.lid, mx_id: np.id });
-                    camount = cInfo ? ZhCalc.add(camount, cInfo.camount) : camount;
+                    camount = cInfo ? ZhCalc.add(camount, ZhCalc.round(cInfo.camount, findDecimal(node.unit))) : camount;
                 }
                 if (!_.isEqual(node.sgfh_qty, sgfh_qty) || !_.isEqual(node.sjcl_qty, sjcl_qty) || !_.isEqual(node.qtcl_qty, qtcl_qty)) {
                     node.sgfh_qty = sgfh_qty;
@@ -869,10 +869,10 @@ $(document).ready(() => {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         return;
                     }
-                    cInfo[col.field] = validText;
-                    cInfo.spamount = ZhCalc.round(validText, findDecimal(cInfo.unit)) || 0;
+                    cInfo[col.field] = ZhCalc.round(validText, findDecimal(node.unit)) || 0;
+                    cInfo.spamount = ZhCalc.round(validText, findDecimal(node.unit)) || 0;
                     cInfo.camount_expr = exprQuantity.expr;
-                    node[col.field] = validText;
+                    node[col.field] = cInfo[col.field];
                     delete cInfo.waitingLoading;
                     postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', { type:'update', updateData: cInfo }, function (result) {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -982,10 +982,30 @@ $(document).ready(() => {
                     changeList = result.changeList;
                     const refreshNode = billsTree.loadPostData(result);
                     for (const u of refreshNode.update) {
+                        if (col.field === 'unit') {
+                            const cInfo = _.find(changeList, { gcl_id: u.id, mx_id: '' });
+                            if (cInfo && cInfo.camount_expr) {
+                                const exprQuantity = {
+                                    expr: '',
+                                    quantity: 0,
+                                };
+                                const [valid, msg] = billsTreeSpreadObj._checkExpr(cInfo.camount_expr, exprQuantity);
+                                if (!valid) {
+                                    break;
+                                }
+                                if (isNaN(exprQuantity.quantity)) {
+                                    break;
+                                }
+                                u.camount = ZhCalc.round(parseFloat(exprQuantity.quantity), findDecimal(newValue)) || 0;
+                                cInfo.unit = newValue;
+                            } else {
+                                u.camount = ZhCalc.round(u.camount, findDecimal(newValue)) || 0;
+                            }
+                        }
                         billsTreeSpreadObj.reCalcCamount(u);
                     }
-                    console.log(refreshNode, result);
                     billsTreeSpreadObj.refreshTree(info.sheet, refreshNode);
+                    billsTreeSpreadObj.refreshPosData();
                 });
             }
         },
@@ -1116,9 +1136,9 @@ $(document).ready(() => {
                             continue;
                         }
                         if (bPaste) {
-                            node.camount = validText;
+                            node.camount = ZhCalc.round(validText, findDecimal(node.unit)) || 0;
                             filterNodes.push(node);
-                            camountData.push({id: cInfo.id, camount: validText, camount_expr: exprQuantity.expr, spamount: ZhCalc.round(validText, findDecimal(cInfo.unit)) || 0 });
+                            camountData.push({id: cInfo.id, camount: node.camount, camount_expr: exprQuantity.expr, spamount: ZhCalc.round(validText, findDecimal(node.unit)) || 0 });
                         } else {
                             filterNodes.push(node);
                             SpreadJsObj.reLoadRowData(info.sheet, curRow);
@@ -1277,9 +1297,9 @@ $(document).ready(() => {
                                 continue;
                             }
                             if (bPaste) {
-                                node.camount = validText;
+                                node.camount = ZhCalc.round(validText, findDecimal(node.unit)) || 0;
                                 filterNodes.push(node);
-                                camountData.push({id: cInfo.id, camount: validText, camount_expr: exprQuantity.expr, spamount: ZhCalc.round(validText, findDecimal(cInfo.unit)) || 0 });
+                                camountData.push({id: cInfo.id, camount: node.camount, camount_expr: exprQuantity.expr, spamount: ZhCalc.round(validText, findDecimal(node.unit)) || 0 });
                             } else {
                                 filterNodes.push(node);
                                 SpreadJsObj.reLoadRowData(info.sheet, curRow);
@@ -1590,7 +1610,7 @@ $(document).ready(() => {
                     camount = 0;
                     for (const np of posData) {
                         const cInfo = _.find(changeList, { gcl_id: np.lid, mx_id: np.id });
-                        camount = cInfo ? ZhCalc.add(camount, cInfo.camount) : camount;
+                        camount = cInfo ? ZhCalc.add(camount, ZhCalc.round(cInfo.camount, findDecimal(cInfo.unit))) : camount;
                     }
                 }
                 node.camount = camount;
@@ -1779,9 +1799,9 @@ $(document).ready(() => {
                     toastr.error('清单变更数值必须小于等于已调用值 ' + usedInfo.qty);
                     return;
                 }
-                cInfo.camount = camount;
-                select.camount = camount;
-                cInfo.spamount = ZhCalc.round(camount, findDecimal(cInfo.unit)) || 0;
+                cInfo.camount = ZhCalc.round(camount, findDecimal(select.unit)) || 0;
+                select.camount = ZhCalc.round(camount, findDecimal(select.unit)) || 0;
+                cInfo.spamount = ZhCalc.round(camount, findDecimal(select.unit)) || 0;
                 cInfo.camount_expr = exprQuantity.expr;
                 delete cInfo.waitingLoading;
                 postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', { type:'update', updateData: cInfo }, function (result) {
@@ -2227,7 +2247,7 @@ $(document).ready(() => {
                 if (posSheet.zh_setting) {
                     posSheet.zh_setting.cols.forEach(function (col, i) {
                         for (let iRow = 0; iRow < posSheet.getRowCount(); iRow++) {
-                            if (i !== 0 && col.field !== 'camount') {
+                            if (i !== 0 && col.field !== 'camount' && col.field !== 'is_valuation') {
                                 posSheet.getCell(iRow, i).locked((posSheet.zh_data[iRow] && !posSheet.zh_data[iRow].formc) || posSheet.zh_setting.readOnly || false);
                             } else {
                                 let lock = false;
@@ -2461,7 +2481,7 @@ $(document).ready(() => {
                         info.sheet.setValue(info.row, info.col, cInfo.is_valuation);
                         return;
                     }
-                    const is_valuation = select.is_valuation !== undefined ? (info.sheet.getValue(info.row, info.col) ? 1 : 0) : (info.sheet.getValue(info.row, info.col) ? 0 : 1);
+                    const is_valuation = info.sheet.getValue(info.row, info.col) ? 1 : 0;
                     // select.is_valuation = is_valuation;
                     cInfo.is_valuation = is_valuation;
                     delete cInfo.waitingLoading;
@@ -2540,8 +2560,8 @@ $(document).ready(() => {
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
                     return;
                 }
-                cInfo[col.field] = validText;
-                cInfo.spamount = ZhCalc.round(validText, findDecimal(cInfo.unit)) || 0;
+                cInfo[col.field] = ZhCalc.round(validText, findDecimal(node.unit)) || 0;
+                cInfo.spamount = ZhCalc.round(validText, findDecimal(node.unit)) || 0;
                 cInfo.camount_expr = exprQuantity.expr;
                 delete cInfo.waitingLoading;
                 postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', { type:'update', updateData: cInfo }, function (result) {
@@ -2923,7 +2943,7 @@ $(document).ready(() => {
                             continue;
                         }
                         if (bPaste) {
-                            camountData.push({id: cInfo.id, camount: validText, camount_expr: exprQuantity.expr, spamount: ZhCalc.round(validText, findDecimal(cInfo.unit)) || 0 });
+                            camountData.push({id: cInfo.id, camount: ZhCalc.round(validText, findDecimal(node.unit)) || 0, camount_expr: exprQuantity.expr, spamount: ZhCalc.round(validText, findDecimal(node.unit)) || 0 });
                         } else {
                             SpreadJsObj.reLoadRowData(info.sheet, curRow);
                         }
@@ -3051,6 +3071,7 @@ $(document).ready(() => {
             const row = expr.attr('data-row') ? _.toInteger(expr.attr('data-row')) : -1;
             const select = posSheet.zh_data ? posSheet.zh_data[row] : null;
             if (!select) return;
+            const billsNode = SpreadJsObj.getSelectObject(billsSheet);
 
             const field = expr.attr('field'), orgValue = expr.attr('org'), newValue = trimInvalidChar(expr.val());
             if (orgValue === newValue || (!orgValue && newValue == '')) return;
@@ -3084,13 +3105,12 @@ $(document).ready(() => {
                     toastr.error('清单变更数值必须小于等于已调用值 ' + usedInfo.qty);
                     return;
                 }
-                cInfo.camount = camount;
-                cInfo.spamount = ZhCalc.round(camount, findDecimal(cInfo.unit)) || 0;
+                cInfo.camount = ZhCalc.round(camount, findDecimal(billsNode.unit)) || 0;
+                cInfo.spamount = ZhCalc.round(camount, findDecimal(billsNode.unit)) || 0;
                 cInfo.camount_expr = exprQuantity.expr;
                 delete cInfo.waitingLoading;
                 postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', { type:'update', updateData: cInfo }, function (result) {
                     SpreadJsObj.reLoadRowData(posSheet, row);
-                    const billsNode = SpreadJsObj.getSelectObject(billsSheet);
                     billsTreeSpreadObj.reCalcCamount(billsNode);
                     const loadResult = { update: [billsNode] };
                     const refreshNode = billsTree.loadPostData(loadResult);