gaoluyang
4 天以前 7719247e394ad08fccd7f5ec051f039b60ea8576
src/views/productionPlan/productionPlan/index.vue
@@ -32,21 +32,21 @@
                          style="width: 240px;"
                          @change="handleQuery" />
        </el-form-item>
        <el-form-item label="下发状态:"
                      prop="status">
          <el-select v-model="searchForm.status"
                     placeholder="请选择状态"
                     clearable
                     filterable
                     style="width: 100px">
            <el-option label="待下发"
                       value="0" />
            <el-option label="部分下发"
                       value="1" />
            <el-option label="已下发"
                       value="2" />
          </el-select>
        </el-form-item>
<!--        <el-form-item label="下发状态:"-->
<!--                      prop="status">-->
<!--          <el-select v-model="searchForm.status"-->
<!--                     placeholder="请选择状态"-->
<!--                     clearable-->
<!--                     filterable-->
<!--                     style="width: 100px">-->
<!--            <el-option label="待下发"-->
<!--                       value="0" />-->
<!--            <el-option label="部分下发"-->
<!--                       value="1" />-->
<!--            <el-option label="已下发"-->
<!--                       value="2" />-->
<!--          </el-select>-->
<!--        </el-form-item>-->
        <!-- 展开版搜索条件 -->
        <el-form-item label="产品名称:"
                      prop="productName">
@@ -135,12 +135,11 @@
        <el-form-item label="生产数量">
          <el-input-number v-model="mergeForm.totalAssignedQuantity"
                           :min="0"
                           :max="sumAssignedQuantity"
                           @change="onBlur"
                           style="width: 100%" />
        </el-form-item>
        <el-form-item label="创建时间">
          <el-date-picker v-model="mergeForm.createTime"
          <el-date-picker v-model="mergeCreateTimeDate"
                          type="date"
                          value-format="YYYY-MM-DD"
                          style="width: 100%" />
@@ -235,7 +234,7 @@
        </el-form-item>
        <el-form-item label="创建时间"
                      prop="createTime">
          <el-date-picker v-model="form.createTime"
          <el-date-picker v-model="formCreateTimeDate"
                          type="date"
                          value-format="YYYY-MM-DD"
                          style="width: 100%"
@@ -345,37 +344,37 @@
      prop: "unit",
      width: "100px",
    },
    {
      label: "所需数量",
      prop: "qtyRequired",
      width: "150px",
      dataType: "slot",
      slot: "qtyRequired",
      className: "volume-cell",
    },
    {
      label: "下发状态",
      prop: "status",
      width: "120px",
      className: "status-cell",
      dataType: "tag",
      formatType: params => {
        const typeMap = {
          0: "warning",
          1: "primary",
          2: "info",
        };
        return typeMap[params] || "info";
      },
      formatData: cell => {
        const statusMap = {
          0: "待下发",
          1: "部分下发",
          2: "已下发",
        };
        return statusMap[cell] || "";
      },
    },
    // {
    //   label: "所需数量",
    //   prop: "qtyRequired",
    //   width: "150px",
    //   dataType: "slot",
    //   slot: "qtyRequired",
    //   className: "volume-cell",
    // },
    // {
    //   label: "下发状态",
    //   prop: "status",
    //   width: "120px",
    //   className: "status-cell",
    //   dataType: "tag",
    //   formatType: params => {
    //     const typeMap = {
    //       0: "warning",
    //       1: "primary",
    //       2: "info",
    //     };
    //     return typeMap[params] || "info";
    //   },
    //   formatData: cell => {
    //     const statusMap = {
    //       0: "待下发",
    //       1: "部分下发",
    //       2: "已下发",
    //     };
    //     return statusMap[cell] || "";
    //   },
    // },
    {
      label: "已下发数量",
      prop: "quantityIssued",
@@ -435,19 +434,23 @@
          name: "下发",
          type: "text",
          showHide: row => {
            return row.status != 2;
            return true;
          },
          clickFun: row => {
            mergeForm.productName = row.productName || "";
            mergeForm.model = row.model || "";
            mergeForm.totalAssignedQuantity =
              Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
            mergeForm.totalAssignedQuantity = Math.max(
              0,
              Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0)
            );
            mergeForm.planCompleteTime = row.requiredDate || "";
            mergeForm.productId = row.productId || "";
            mergeForm.createTime = new Date().toISOString().split("T")[0];
            mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
            mergeForm.ids = [row.id];
            sumAssignedQuantity.value =
              Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
            sumAssignedQuantity.value = Math.max(
              0,
              Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0)
            );
            isShowNewModal.value = true;
          },
        },
@@ -456,7 +459,7 @@
          type: "danger",
          link: true,
          showHide: row => {
            return row.status == 0;
            return row.status == 0 && row.source != "销售";
          },
          clickFun: row => {
            handleDelete(row);
@@ -490,6 +493,15 @@
    productId: "",
    createTime: "",
  });
  const mergeCreateTimeDate = computed({
    get: () =>
      mergeForm.createTime ? String(mergeForm.createTime).split(" ")[0] : "",
    set: value => {
      mergeForm.createTime = value
        ? `${value} ${dayjs().format("HH:mm:ss")}`
        : "";
    },
  });
  // 导入相关
  const importDialogRef = ref(null);
@@ -520,6 +532,12 @@
    promisedDeliveryDate: "",
    remark: "",
    createTime: "",
  });
  const formCreateTimeDate = computed({
    get: () => (form.createTime ? String(form.createTime).split(" ")[0] : ""),
    set: value => {
      form.createTime = value ? `${value} ${dayjs().format("HH:mm:ss")}` : "";
    },
  });
  const rules = reactive({
    productId: [{ required: true, message: "请选择产品", trigger: "change" }],
@@ -720,16 +738,6 @@
  // 判断行是否可选择
  const isSelectable = row => {
    // 如果是已下发状态,禁止勾选
    if (row.status == 2) {
      return false;
    }
    // 计算剩余数量
    const remainingQty = (row.qtyRequired || 0) - (row.quantityIssued || 0);
    // 如果剩余数量小于等于0,禁止选择
    if (remainingQty <= 0) {
      return false;
    }
    // 如果没有选中的行,所有行都可选择
    if (!selectedProductModelId.value) {
      return true;
@@ -751,9 +759,12 @@
    const firstRow = selectedRows.value[0];
    const productName = firstRow.productName || "";
    // 计算总制造数量 (默认qtyRequired的和)
    // 计算总制造数量 (默认qtyRequired剩余数量的和)
    const totalAssignedQuantity = selectedRows.value.reduce((sum, row) => {
      return sum + Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
      return (
        sum +
        Math.max(0, Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0))
      );
    }, 0);
    sumAssignedQuantity.value = totalAssignedQuantity;
    console.log(totalAssignedQuantity);
@@ -763,7 +774,8 @@
    mergeForm.totalAssignedQuantity = totalAssignedQuantity;
    mergeForm.planCompleteTime = firstRow.requiredDate || "";
    mergeForm.productId = firstRow.productId || "";
    mergeForm.ids = selectedRows.value.map(row => row.id);
    mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
    mergeForm.ids = [...new Set(selectedRows.value.map(row => row.id))];
    // 打开弹窗
    isShowNewModal.value = true;
@@ -784,12 +796,6 @@
      return;
    }
    console.log(sumAssignedQuantity.value, "sumAssignedQuantity");
    // 验证totalAssignedQuantity不能大于总方数
    if (mergeForm.totalAssignedQuantity > sumAssignedQuantity.value) {
      ElMessage.error("生产数量不能大于当前计算的总值");
      return;
    }
    console.log(mergeForm, "mergeForm");
    const payload = {
@@ -906,7 +912,7 @@
      requiredDate: "",
      promisedDeliveryDate: "",
      remark: "",
      createTime: new Date().toISOString().split("T")[0],
      createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
    });
    dialogVisible.value = true;
    fetchProductOptions();
@@ -927,6 +933,7 @@
      requiredDate: row.requiredDate || "",
      promisedDeliveryDate: row.promisedDeliveryDate || "",
      remark: row.remark || "",
      createTime: row.createTime || "",
    });
    dialogVisible.value = true;
    fetchProductOptions();