张诺
7 小时以前 195770f92f7d739ffba6447fdbf3a3d5b9e009fa
fix(生产订单): 修复绑定工艺路线时的材料规格验证和显示问题

- 修复材料规格选择时未正确绑定产品ID的问题
- 在绑定工艺路线对话框中添加材料规格必填验证
- 调整生产订单列表显示字段,增加尺寸、小盒数量等字段
- 修复切料图示在没有数据时仍显示的问题
- 将"客户名称"改为"厂家","规格"改为"纸张规格"等字段名称优化
已修改2个文件
61 ■■■■ 文件已修改
src/views/productionManagement/productionOrder/BindRouteDialog.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionOrder/index.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionOrder/BindRouteDialog.vue
@@ -61,7 +61,7 @@
        <template #default="{ row }" >
          <el-tree-select
          v-if="!isDetail"
            v-model="row.productId"
            v-model="row.productById"
            placeholder="请选择"
            clearable
            check-strictly
@@ -74,7 +74,10 @@
            <span v-else>{{ row.name }}</span>
        </template> 
      </el-table-column>
      <el-table-column label="规格">
      <el-table-column>
        <template #header>
          <span class="required">*</span>规格
        </template>
        <template #default="{ row }">
          <el-select
          v-if="!isDetail"
@@ -140,8 +143,9 @@
      </el-descriptions-item>
    </el-descriptions>
    <!-- ================= 切料图示 ================= -->
    <div class="section-title">切料图示</div>
    <div class="section-title" v-if="formData.cuttingFileVo.length > 0">切料图示</div>
    <ActionFileUpload
    v-if="formData.cuttingFileVo.length > 0"
        style="width: 50%;float: left;"
        v-model:file-list="formData.cuttingFileVo"
        :action="upload.url"
@@ -822,6 +826,8 @@
const getModels = (val, row) => {
  row.productId = val || ""
  row.productById = val || ""
  row.productName = row.name || ""
  row.name = val ? findProductLabelById(productOptions.value, val) : ""
  row.productModelId = ""
  row.model = ""
@@ -838,6 +844,7 @@
const handleMaterialModelChange = (val, row) => {
  const currentModel = (row.modelOptions || []).find(item => item.id === val)
  row.productModelId = val || ""
  row.productId = currentModel?.id || ""
  row.model = currentModel?.model || ""
  row.unit = currentModel?.unit || ""
}
@@ -906,6 +913,15 @@
  if (isDetail.value) {
    return
  }
  const materialRows = Array.isArray(formData.materialInfo) ? formData.materialInfo : []
  for (let i = 0; i < materialRows.length; i++) {
    const row = materialRows[i] || {}
    if (!row.productId) {
      ElMessage.warning(`材料信息第${i + 1}行:    规格必填`)
      return
    }
  }
  const rows = Array.isArray(formData.processContent) ? formData.processContent : []
  for (let i = 0; i < rows.length; i++) {
    const row = rows[i] || {}
src/views/productionManagement/productionOrder/index.vue
@@ -94,7 +94,6 @@
  import { listMain as getOrderProcessRouteMain } from "@/api/productionManagement/productProcessRoute.js";
  import PIMTable from "@/components/PIMTable/PIMTable.vue";
  import BindRouteDialog from "./BindRouteDialog.vue";
  import {getDeviceLedger} from "@/api/equipmentManagement/ledger.js";
  const NewProductOrder = defineAsyncComponent(() => import("@/views/productionManagement/productionOrder/New.vue"));
  const { proxy } = getCurrentInstance();
@@ -132,7 +131,7 @@
      width: '150px',
    },
    {
      label: "客户名称",
      label: "厂家",
      prop: "customerName",
      width: '200px',
    },
@@ -142,7 +141,7 @@
      width: '120px',
    },
    {
      label: "规格",
      label: "纸张规格",
      prop: "specificationModel",
      width: '120px',
    },
@@ -152,8 +151,28 @@
      width: '200px',
    },
    {
      label: "需求数量",
      label: "印刷数量",
      prop: "quantity",
    },
    {
      label: "尺寸",
      prop: "cutSize",
      width: '120px',
    },
    {
      label: "小盒数量",
      prop: "smallBoxQty",
      width: '120px',
    },
    {
      label: "中盒数量",
      prop: "mediumBoxQty",
      width: '120px',
    },
    {
      label: "色数",
      prop: "printColorCount",
      width: '120px',
    },
    {
      label: "完成数量",
@@ -179,9 +198,14 @@
      width: 120,
    },
    {
      label: "交付日期",
      label: "计划交货日期",
      prop: "deliveryDate",
      formatData: val => (val ? dayjs(val).format("YYYY-MM-DD") : ""),
      width: 120,
    },
    {
      label: "备注",
      prop: "remark",
      width: 120,
    },
    {
@@ -292,6 +316,11 @@
      if (type === "view") {
        bindDialogType.value = "detail"
        const res = await viewGetByProductWordId(row.id)
        if(res?.cuttingFileVo?.id ==null){
          res.cuttingFileVo = []
        }else{
          res.cuttingFileVo = [res.cuttingFileVo]
        }
        rowData.value = res?.data || res
      } else {
        bindDialogType.value = "add"