gongchunyi
13 小时以前 98e0d9f527eab7fd48927327c2ac27c2b9caa781
fix: 生产订单退料精度计算
已修改1个文件
42 ■■■■■ 文件已修改
src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());