2026-04-29 f945f2fe9dae35c3b5fd4beea2b182904df0e16e
src/views/productionPlan/productionPlan/index.vue
@@ -88,6 +88,13 @@
        <template #qtyRequired="{ row }">
          {{ row.qtyRequired || '-' }}<span style="color:rgba(12, 46, 40, 0.76)"> {{ row.unit || '方' }}</span>
        </template>
        <template #salesContractNo="{ row }">
          <el-button type="primary"
                     text
                     link
                     @click="showDetail(row)">{{ row.salesContractNo }}
          </el-button>
        </template>
      </PIMTable>
    </div>
    <!-- 合并下发弹窗 -->
@@ -286,9 +293,13 @@
      width: "150px",
      dataType: "tag",
      formatType: params => {
        return params == "内部" ? "info" : "primary";
        return params == "销售" ? "primary" : "info";
      },
      formatData: params => {
        return params == "销售" ? "销售" : "内部";
      },
    },
    {
      label: "产品名称",
      prop: "productName",
@@ -363,6 +374,23 @@
      formatData: cell => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
    },
    {
      label: "销售合同号",
      prop: "salesContractNo",
      width: "200px",
      dataType: "slot",
      slot: "salesContractNo",
    },
    {
      label: "客户名称",
      prop: "customerName",
      width: "150px",
    },
    {
      label: "项目名称",
      prop: "projectName",
      width: "150px",
    },
    {
      label: "备注",
      width: "150px",
      prop: "remark",
@@ -389,16 +417,18 @@
          name: "下发",
          type: "text",
          showHide: row => {
            return row.status == 0;
            return row.status != 2;
          },
          clickFun: row => {
            mergeForm.productName = row.productName || "";
            mergeForm.model = row.model || "";
            mergeForm.totalAssignedQuantity = Number(row.qtyRequired || 0);
            mergeForm.totalAssignedQuantity =
              Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
            mergeForm.planCompleteTime = row.requiredDate || "";
            mergeForm.productId = row.productId || "";
            mergeForm.ids = [row.id];
            sumAssignedQuantity.value = Number(row.qtyRequired || 0);
            sumAssignedQuantity.value =
              Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
            isShowNewModal.value = true;
          },
        },
@@ -667,6 +697,10 @@
  // 判断行是否可选择
  const isSelectable = row => {
    // 如果是已下发状态,禁止勾选
    if (row.status == 2) {
      return false;
    }
    // 计算剩余数量
    const remainingQty = (row.qtyRequired || 0) - (row.quantityIssued || 0);
    // 如果剩余数量小于等于0,禁止选择
@@ -696,7 +730,7 @@
    // 计算总制造数量 (默认qtyRequired的和)
    const totalAssignedQuantity = selectedRows.value.reduce((sum, row) => {
      return sum + Number(row.qtyRequired || 0);
      return sum + Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
    }, 0);
    sumAssignedQuantity.value = totalAssignedQuantity;
    console.log(totalAssignedQuantity);
@@ -711,6 +745,14 @@
    // 打开弹窗
    isShowNewModal.value = true;
  };
  const showDetail = row => {
    router.push({
      path: "/salesManagement/salesLedger",
      query: {
        salesContractNo: row.salesContractNo,
      },
    });
  };
  // 处理合并下发提交
  const handleMergeSubmit = () => {