From 1bef995d9a6cc817bea0318a2a33ea013fe69deb Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 12 十一月 2025 16:31:14 +0800
Subject: [PATCH] 计算精度问题修复

---
 src/views/business/materialOrder/customsInspectionOrder.vue |   48 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/src/views/business/materialOrder/customsInspectionOrder.vue b/src/views/business/materialOrder/customsInspectionOrder.vue
index 949c6b5..e8aee87 100644
--- a/src/views/business/materialOrder/customsInspectionOrder.vue
+++ b/src/views/business/materialOrder/customsInspectionOrder.vue
@@ -462,6 +462,7 @@
 import {dateFormat} from "@/utils/date";
 import AuxiliaryWireCore from "../productOrder/components/auxiliaryWireCore.vue";
 import cableConfig from "../productOrder/components/cable-config.vue";
+import {bigEval} from "../../../utils/bigEval";
 export default {
   name: "CustomsInspectionOrder",
   dicts: ['check_type', 'urgency_level'],
@@ -1206,6 +1207,37 @@
         this.saveLoad = false
       })
     },
+    /**
+     * 鑾峰彇灏忔暟鐨勬渶澶т綅鏁�
+     * @param number  鍨嬪彿鍙傛暟
+     * @param ask     瑕佹眰鍊�
+     * @param calcNum 璁$畻鍊�
+     */
+    getDecimalPlaces(number, ask, calcNum) {
+      console.log("璁$畻灏忔暟鐐�-->", number, ask, calcNum);
+      let count1 = 0;
+      let count2 = 0;
+      const reg = /(\d+\.)(\d+)/g;
+      let matches = [];
+      if (ask) {
+        matches = ask.match(reg);
+      }
+      if (
+        matches &&
+        matches.length > 0 &&
+        matches[0].toString().indexOf(".") > -1
+      ) {
+        count1 = matches[0].toString().split(".")[1].length;
+      }
+      if (number.toString().indexOf(".") > -1) {
+        count2 = number.toString().split(".")[1].length;
+      }
+      if (calcNum.toString().indexOf(".") > -1) {
+        const pointLength2 = calcNum.toString().split(".")[1].length;
+        count2 = count2 > pointLength2 ? count2 : pointLength2;
+      }
+      return count1 > count2 ? count1 : count2;
+    },
     handleAsk(ask,symbolItem, value) {
       try{
         let code = [">", "<", "=", "锛�", "锛�", "鈮�", "鈮�", "卤", "*", "/"];
@@ -1218,7 +1250,13 @@
             let index = code.findIndex(b => m.includes(b))
             if (index > -1) {
               let arr = m.split(code[index]).filter(b => !!b)
-              let num = eval(this.replaceAll(arr[0], symbolItem, value))
+              let calcNum = this.$Big(
+                bigEval(this.replaceAll(arr[0], symbolItem, value))
+              );
+              let num = calcNum.toFixed(
+                this.getDecimalPlaces(value, ask, calcNum)
+              );
+              // let num = eval(this.replaceAll(arr[0], symbolItem, value))
               m = code[index] + '' + num
               arr1.push(m)
             }
@@ -1247,7 +1285,13 @@
           let index = code.findIndex(b => ask.includes(b))
           if (index > -1) {
             let arr = ask.split(code[index]).filter(b => !!b)
-            let num = eval(this.replaceAll(arr[0], symbolItem, value))
+            let calcNum = this.$Big(
+              bigEval(this.replaceAll(arr[0], symbolItem, value))
+            );
+            let num = calcNum.toFixed(
+              this.getDecimalPlaces(value, ask, calcNum)
+            );
+            // let num = eval(this.replaceAll(arr[0], symbolItem, value))
             return code[index] + '' + num
           }
         }

--
Gitblit v1.9.3