gaoluyang
9 小时以前 04687ca035e6fa517e88470aac7247812f85eb95
src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
@@ -36,8 +36,9 @@
    <el-dialog v-model="supplementRecordDialogVisible" title="补料记录" width="800px">
      <el-table v-loading="supplementRecordLoading" :data="supplementRecordTableData" border row-key="id">
        <el-table-column label="补料数量" prop="supplementQty" min-width="120" />
        <el-table-column label="补料时间" prop="supplementTime" min-width="180" />
        <el-table-column label="备注" prop="remark" min-width="200" />
        <el-table-column label="补料人" prop="supplementUserName" min-width="120" />
        <el-table-column label="补料日期" prop="supplementTime" min-width="160" />
        <el-table-column label="补料原因" prop="supplementReason" min-width="200" />
      </el-table>
      <template #footer>
        <span class="dialog-footer">
@@ -88,8 +89,10 @@
const supplementRecordTableData = ref([]);
const returnSummaryDialogVisible = ref(false);
const returnSummaryList = ref([]);
const calcReturnQty = item =>
  Number(item.pickQty || 0) + Number(item.supplementQty || 0) - Number(item.actualQty || 0);
const canOpenReturnSummary = computed(() =>
  materialDetailTableData.value.some(item => Number(item.returnQty || 0) > 0)
  materialDetailTableData.value.some(item => calcReturnQty(item) > 0)
);
const loadDetailList = async () => {
@@ -133,6 +136,8 @@
const buildReturnSummary = () => {
  const map = new Map();
  materialDetailTableData.value.forEach(item => {
    const returnQty = calcReturnQty(item);
    if (returnQty <= 0) return;
    const key = `${item.materialModelId || ""}_${item.materialName || ""}_${item.materialModel || ""}_${item.unit || ""}`;
    const old = map.get(key) || {
      summaryKey: key,
@@ -141,7 +146,7 @@
      unit: item.unit || "",
      returnQtyTotal: 0,
    };
    old.returnQtyTotal += Number(item.returnQty || 0);
    old.returnQtyTotal += returnQty;
    map.set(key, old);
  });
  return Array.from(map.values());
@@ -149,7 +154,7 @@
const openReturnSummaryDialog = async () => {
  if (!canOpenReturnSummary.value) {
    ElMessage.warning("退料数量大于0时才能退料确认");
    ElMessage.warning("退料数量=领用数量+补料数量-实际数量,且需大于0");
    return;
  }
  returnSummaryList.value = buildReturnSummary();