gaoluyang
2026-05-18 da57fbd8e7fa021614fb32502fb1520ea4e34e1e
src/views/productionManagement/productionOrder/index.vue
@@ -30,7 +30,7 @@
        <el-form-item label="状态:">
          <el-select v-model="searchForm.status"
                     placeholder="请选择"
                     style="width: 160px;"
                     style="width: 100px;"
                     @change="handleQuery">
            <el-option label="待开始"
                       value="1" />
@@ -42,6 +42,19 @@
                       value="4" />
            <el-option label="已结束"
                       value="5" />
          </el-select>
        </el-form-item>
                <el-form-item label="车间:">
          <el-select v-model="searchForm.workshopId"
                     placeholder="请选择车间"
                     clearable
                     filterable
                     @change="handleQuery"
                     style="width: 160px">
            <el-option v-for="item in workshopOptions"
                       :key="item.id"
                       :label="item.name"
                       :value="item.id" />
          </el-select>
        </el-form-item>
        <el-form-item>
@@ -226,6 +239,7 @@
  import { ElMessageBox } from "element-plus";
  import dayjs from "dayjs";
  import { useRouter } from "vue-router";
  import { workshopPage } from "@/api/basicData/workshop.js";
  import {
    productOrderListPage,
    listProcessRoute,
@@ -261,6 +275,7 @@
  const sourcePage = reactive({
    total: 0,
  });
  const workshopOptions = ref([]);
  const processColumnWidth = computed(() => {
    if (!tableData.value || tableData.value.length === 0) return "200px";
@@ -359,6 +374,10 @@
      prop: "planCompleteTime",
      formatData: val => (val ? dayjs(val).format("YYYY-MM-DD") : ""),
      width: 120,
    },
    {
      label: "车间",
      prop: "workshopName",
    },
    {
      dataType: "action",
@@ -478,6 +497,7 @@
      productName: "",
      model: "",
      status: "",
      workshopName: ""
    },
  });
  const { searchForm } = toRefs(data);
@@ -515,6 +535,33 @@
      return "red";
    }
  };
  function parseWorkshopPagePayload(res) {
    const payload = res?.data;
    if (!payload) {
      return { records: [], total: 0 };
    }
    if (Array.isArray(payload)) {
      return { records: payload, total: payload.length };
    }
    const records = payload.records ?? payload.list ?? payload.rows ?? [];
    const total = Number(payload.total ?? payload.totalCount ?? 0);
    return { records: Array.isArray(records) ? records : [], total };
  }
  const fetchWorkshopOptions = () => {
    workshopPage({
      name: "",
      principal: "",
      contactPhone: "",
      current: 1,
      size: 999,
    }).then(res => {
      if (res.code === 200) {
        const { records } = parseWorkshopPagePayload(res);
        workshopOptions.value = records;
      }
    });
  };
  // 绑定工艺路线弹框
  const bindRouteDialogVisible = ref(false);
@@ -637,6 +684,7 @@
      productName: "",
      model: "",
      status: "",
      workshopName: "",
    };
    handleQuery();
  };
@@ -810,9 +858,9 @@
    })
      .then(() => {
        proxy.download(
          "/productOrder/export",
          "/productionOrder/export",
          { ...searchForm.value },
          "生产订单.xlsx"
          "生产订单数据.xlsx"
        );
      })
      .catch(() => {
@@ -844,6 +892,7 @@
  onMounted(() => {
    getList();
    fetchWorkshopOptions();
  });
</script>