From 98e0d9f527eab7fd48927327c2ac27c2b9caa781 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 15 十月 2026 17:08:24 +0800
Subject: [PATCH] fix: 生产订单退料精度计算
---
src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue | 42 ++++++++++++++++++++++++++++++------------
1 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
index 3373374..6f22c91 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
@@ -149,10 +149,18 @@
updateMaterialPickingLedger,
} from "@/api/productionManagement/productionOrder.js";
+ const toNumber = val => {
+ const n = Number(val);
+ return Number.isFinite(n) ? n : 0;
+ };
+
+ // 淇濈暀6浣嶅皬鏁�
+ const roundQuantity = val => Math.round(toNumber(val) * 1e6) / 1e6;
+
const stripTrailingZeros = val => {
const str = String(val ?? "");
if (str.includes(".")) {
- return parseFloat(str).toString();
+ return roundQuantity(str).toString();
}
return str;
};
@@ -177,9 +185,11 @@
const returnSummaryDialogVisible = ref(false);
const returnSummaryList = ref([]);
const calcReturnQty = item =>
- Number(item.pickQuantity || 0) +
- Number(item.feedingQty || 0) -
- Number(item.actualQty || 0);
+ roundQuantity(
+ toNumber(item.pickQuantity) +
+ toNumber(item.feedingQty) -
+ toNumber(item.actualQty)
+ );
const canOpenReturnSummary = computed(() =>
materialDetailTableData.value.some(
item => item.returned !== true && calcReturnQty(item) > 0
@@ -192,13 +202,21 @@
materialDetailTableData.value = [];
try {
const res = await listMaterialPickingDetail(props.orderRow.id);
- materialDetailTableData.value = (res.data || []).map(item => ({
- ...item,
- actualQty:
- item.actualQty ??
- Number(item.pickQuantity || 0) + Number(item.feedingQty || 0),
- returnQty: item.returnQty ?? 0,
- }));
+ materialDetailTableData.value = (res.data || []).map(item => {
+ const row = {
+ ...item,
+ actualQty:
+ item.actualQty ??
+ roundQuantity(
+ toNumber(item.pickQuantity) + toNumber(item.feedingQty)
+ ),
+ };
+ row.returnQty =
+ row.returned === true
+ ? roundQuantity(item.returnQty)
+ : calcReturnQty(row);
+ return row;
+ });
} finally {
materialDetailLoading.value = false;
}
@@ -252,7 +270,7 @@
unit: item.unit || "",
returnQtyTotal: 0,
};
- old.returnQtyTotal += returnQty;
+ old.returnQtyTotal = roundQuantity(old.returnQtyTotal + returnQty);
map.set(key, old);
});
return Array.from(map.values());
--
Gitblit v1.9.3