소스 검색

调差四舍五入调整

laiguoran 3 년 전
부모
커밋
204a47fb65
3개의 변경된 파일66개의 추가작업 그리고 31개의 파일을 삭제
  1. 26 18
      app/public/js/material.js
  2. 31 7
      app/public/js/material_exponent.js
  3. 9 6
      app/public/js/material_list.js

+ 26 - 18
app/public/js/material.js

@@ -354,7 +354,7 @@ $(document).ready(() => {
                     return;
                 }
                 // 未改变值则不提交
-                const validText = is_numeric(info.editingText) ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : null);
+                let validText = is_numeric(info.editingText) ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : null);
                 const orgValue = select[col.field];
                 if (orgValue == validText || ((!orgValue || orgValue === '') && (validText === ''))) {
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -367,11 +367,13 @@ $(document).ready(() => {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         return;
                     }
-                    const num = parseFloat(validText);
+                    let num = parseFloat(validText);
                     if (validText !== null && (num < 0 || !/^\d+(\.\d{1,3})?$/.test(num))) {
-                        toastr.error('请输入大于0并且小于3位小数的浮点数');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                        toastr.warning('已保留3位小数');
+                        validText = ZhCalc.round(num, 3);
+                        // toastr.error('请输入大于0并且小于3位小数的浮点数');
+                        // SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                        // return;
                     }
                 }
                 if (col.field === 'msg_tp') {
@@ -382,9 +384,11 @@ $(document).ready(() => {
                     }
                     const num = parseFloat(validText);
                     if (validText !== null && (num < 0 || !/^\d+(\.\d{1,3})?$/.test(num))) {
-                        toastr.error('请输入大于0并且小于3位小数的浮点数');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                        toastr.warning('已保留3位小数');
+                        validText = ZhCalc.round(num, 3);
+                        // toastr.error('请输入大于0并且小于3位小数的浮点数');
+                        // SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                        // return;
                     }
                 }
                 if (col.field === 'm_up_risk') {
@@ -482,7 +486,7 @@ $(document).ready(() => {
                 codeError: {type: 'error', msg: '编号为纯数字时,不能为小数'},
                 numberExpr: {type: 'error', msg: '不能粘贴其它非数字类型字符'},
                 riskCan: {type: 'error', msg: '只能粘贴0-100的正整数'},
-                numberCan: {type: 'error', msg: '请粘贴大于0并且小于3位小数的浮点数'},
+                numberCan: {type: 'warning', msg: '已保留3位小数'},
             };
             const range = info.cellRange;
             const sortData = info.sheet.zh_data || [];
@@ -553,8 +557,9 @@ $(document).ready(() => {
                         if (colSetting.field === 'basic_price' || colSetting.field === 'msg_tp') {
                             if (validText !== null && (num < 0 || !/^\d+(\.\d{1,3})?$/.test(num))) {
                                 toastMessageUniq(getPasteHint(hint.numberCan, hintRow));
-                                bPaste = false;
-                                continue;
+                                validText = ZhCalc.round(num, 3);
+                                // bPaste = false;
+                                // continue;
                             }
                         } else if (colSetting.field === 'm_up_risk' || colSetting.field === 'm_down_risk') {
                             if (validText !== null && (num < 0 || num > 100 || !/^\d+$/.test(num))) {
@@ -753,7 +758,7 @@ $(document).ready(() => {
                 const select = SpreadJsObj.getSelectObject(info.sheet);
                 const col = info.sheet.zh_setting.cols[info.col];
                 // 未改变值则不提交
-                const validText = is_numeric(info.editingText) ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : null);
+                let validText = is_numeric(info.editingText) ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : null);
                 const orgValue = select[col.field];
                 if (orgValue == validText || ((!orgValue || orgValue === '') && (validText === ''))) {
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -778,9 +783,11 @@ $(document).ready(() => {
                     }
                     const num = parseFloat(validText);
                     if (validText !== null && (num < 0 || !/^\d+(\.\d{1,3})?$/.test(num))) {
-                        toastr.error('请输入大于0并且小于3位小数的浮点数');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                        // toastr.error('请输入大于0并且小于3位小数的浮点数');
+                        // SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                        // return;
+                        toastr.warning('已保留3位小数');
+                        validText = ZhCalc.round(num, 3);
                     }
                     select[col.field] = validText;
 
@@ -834,7 +841,7 @@ $(document).ready(() => {
             const hint = {
                 cellError: {type: 'error', msg: '粘贴内容超出了表格范围'},
                 numberExpr: {type: 'error', msg: '不能粘贴其它非数字类型字符'},
-                numberCan: {type: 'error', msg: '请粘贴大于0并且小于3位小数的浮点数'},
+                numberCan: {type: 'warning', msg: '已保留3位小数'},
             };
             const range = info.cellRange;
             const sortData = info.sheet.zh_data || [];
@@ -884,8 +891,9 @@ $(document).ready(() => {
                         }
                         if (validText !== null && (num < 0 || !/^\d+(\.\d{1,3})?$/.test(num))) {
                             toastMessageUniq(getPasteHint(hint.numberCan, hintRow));
-                            bPaste = false;
-                            continue;
+                            validText = ZhCalc.round(num, 3);
+                            // bPaste = false;
+                            // continue;
                         }
                     }
                     materialMonthData[colSetting.field] = validText;

+ 31 - 7
app/public/js/material_exponent.js

@@ -146,7 +146,7 @@ $(document).ready(() => {
                     return;
                 }
                 // 未改变值则不提交
-                const validText = is_numeric(info.editingText) ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : null);
+                let validText = is_numeric(info.editingText) ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : null);
                 const orgValue = select[col.field];
                 if (orgValue == validText || ((!orgValue || orgValue === '') && (validText === ''))) {
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -160,10 +160,15 @@ $(document).ready(() => {
                         return;
                     }
                     const num = parseFloat(validText);
-                    if (validText !== null && (num < 0 || !/^(\d{1,10}|\d{1,7}\.\d{1,3})?$/.test(num))) {
+                    if (validText !== null && (num < 0 || !/^(\d{1,10})?$/.test(num))) {
                         toastr.error('请输入10位以内有效数字并且小于3位小数的浮点数');
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         return;
+                    } else if (validText !== null && !/^(\d{1,7}\.\d{1,3})?$/.test(num)) {
+                        toastr.warning('已保留3位小数');
+                        // SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                        // return;
+                        validText = ZhCalc.round(num, 3);
                     }
                 }
                 if (col.field === 'weight_num') {
@@ -172,11 +177,15 @@ $(document).ready(() => {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         return;
                     }
-                    const num = parseFloat(validText);
-                    if (validText !== null && (num < 0 || num >= 1 || !/^\d+(\.\d{1,3})?$/.test(num))) {
+                    let num = parseFloat(validText);
+                    if (validText !== null && (num < 0 || num >= 1)) {
                         toastr.error('请输入0~1范围内并且小于3位小数的浮点数');
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         return;
+                    } else if (validText !== null && num > 0 && num < 1 && !/^\d+(\.\d{1,3})?$/.test(num)) {
+                        toastr.warning('已保留3位小数');
+                        validText = ZhCalc.round(num, 3);
+                        num = ZhCalc.round(num, 3);
                     }
                     const total_weight = ZhCalc.add(ZhCalc.sub(_.sumBy(materialExponentData, 'weight_num'), parseFloat(orgValue)), num);
                     if (total_weight > 1) {
@@ -297,6 +306,7 @@ $(document).ready(() => {
                 numberExpr: {type: 'error', msg: '不能粘贴其它非数字类型字符'},
                 numberCan: {type: 'error', msg: '请粘贴10位以内有效数字并且小于3位小数的浮点数'},
                 numberCan2: {type: 'error', msg: '请粘贴0~1范围内并且小于3位小数的浮点数'},
+                numberCan3: {type: 'warning', msg: '已保留3位小数'},
                 weightNumberCan: {type: 'error', msg: '粘贴的加权系数总和不能大于1'},
             };
             const range = info.cellRange;
@@ -345,10 +355,20 @@ $(document).ready(() => {
                             continue;
                         }
                         const num = parseFloat(validText);
-                        if (validText !== null && (num < 0 || !/^(\d{1,10}|\d{1,7}\.\d{1,3})?$/.test(num))) {
+                        // if (validText !== null && (num < 0 || !/^(\d{1,10}|\d{1,7}\.\d{1,3})?$/.test(num))) {
+                        //     toastMessageUniq(getPasteHint(hint.numberCan, hintRow));
+                        //     bPaste = false;
+                        //     continue;
+                        // }
+                        if (validText !== null && (num < 0 || !/^(\d{1,10})?$/.test(num))) {
                             toastMessageUniq(getPasteHint(hint.numberCan, hintRow));
                             bPaste = false;
                             continue;
+                        } else if (validText !== null && !/^(\d{1,7}\.\d{1,3})?$/.test(num)) {
+                            toastMessageUniq(getPasteHint(hint.numberCan3, hintRow));
+                            // SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                            // return;
+                            validText = ZhCalc.round(num, 3);
                         }
                     }
                     if (colSetting.field === 'weight_num') {
@@ -357,11 +377,15 @@ $(document).ready(() => {
                             bPaste = false;
                             continue;
                         }
-                        const num = parseFloat(validText);
-                        if (validText !== null && (num < 0 || num >= 1 || !/^\d+(\.\d{1,3})?$/.test(num))) {
+                        let num = parseFloat(validText);
+                        if (validText !== null && (num < 0 || num >= 1)) {
                             toastMessageUniq(getPasteHint(hint.numberCan2, hintRow));
                             bPaste = false;
                             continue;
+                        } else if (validText !== null && num > 0 && num < 1 && !/^\d+(\.\d{1,3})?$/.test(num)) {
+                            toastMessageUniq(getPasteHint(hint.numberCan3, hintRow));
+                            validText = ZhCalc.round(num, 3);
+                            num = ZhCalc.round(num, 3);
                         }
                         const total_weight = ZhCalc.add(ZhCalc.sub(_.sumBy(materialExponentData, 'weight_num'), parseFloat(orgValue)), num);
                         if (total_weight > 1) {

+ 9 - 6
app/public/js/material_list.js

@@ -591,9 +591,11 @@ $(document).ready(() => {
                     }
                     const num = parseFloat(exprQuantity.quantity);
                     if (num < 0 || !/^\d+(\.\d{1,6})?$/.test(num)) {
-                        toastr.error('数量值必须大于0并且小于6位小数的浮点数');
-                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                        return;
+                        // toastr.error('数量值必须大于0并且小于6位小数的浮点数');
+                        // SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                        // return;
+                        toastr.warning('已保留6位小数');
+                        exprQuantity.quantity = ZhCalc.round(num, 6);
                     }
                     // 更新至服务器
                     const ledgerSheet = ledgerSpread.getActiveSheet();
@@ -644,7 +646,7 @@ $(document).ready(() => {
                 const hint = {
                     cellError: {type: 'error', msg: '粘贴内容超出了表格范围'},
                     numberExpr: {type: 'error', msg: '不能粘贴其它非数字类型字符'},
-                    numberCan: {type: 'error', msg: '请粘贴大于0并且小于6位小数的浮点数'},
+                    numberCan: {type: 'warning', msg: '已保留6位小数'},
                 };
                 const range = info.cellRange;
                 const sortData = info.sheet.zh_data || [];
@@ -701,8 +703,9 @@ $(document).ready(() => {
                         const num = parseFloat(exprQuantity.quantity);
                         if (num < 0 || !/^\d+(\.\d{1,6})?$/.test(num)) {
                             toastMessageUniq(getPasteHint(hint.numberCan, hintRow));
-                            bPaste = false;
-                            continue;
+                            // bPaste = false;
+                            // continue;
+                            exprQuantity.quantity = ZhCalc.round(num, 6);
                         }
                         // materialData[colSetting.field] = validText;
                         materialData.expr = exprQuantity.expr;