From 2cdbad409e82d4354e4eca5cffa65c6bef7a4d20 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 16 三月 2026 13:36:37 +0800
Subject: [PATCH] bom添加产品编码

---
 src/views/productionPlan/productionPlan/index.vue |   87 +++++++++++++++++++++++++++++--------------
 1 files changed, 58 insertions(+), 29 deletions(-)

diff --git a/src/views/productionPlan/productionPlan/index.vue b/src/views/productionPlan/productionPlan/index.vue
index b7e0ff8..d2a3efd 100644
--- a/src/views/productionPlan/productionPlan/index.vue
+++ b/src/views/productionPlan/productionPlan/index.vue
@@ -18,7 +18,7 @@
                     @keyup.enter="handleQuery" />
         </el-form-item>
         <el-form-item label="浜у搧瑙勬牸:">
-          <el-input v-model="searchForm.specification"
+          <el-input v-model="searchForm.model"
                     placeholder="璇疯緭鍏�"
                     clearable
                     style="width: 160px;"
@@ -102,7 +102,7 @@
         <el-row :gutter="20">
           <el-col :span="10">
             <el-form-item label="浜у搧瑙勬牸">
-              <div class="info-display">{{ mergeForm.specification || '-' }}</div>
+              <div class="info-display">{{ mergeForm.model || '-' }}</div>
             </el-form-item>
           </el-col>
           <el-col :span="10">
@@ -251,9 +251,9 @@
                      filterable
                      placeholder="璇烽�夋嫨">
             <el-option v-for="item in specificationOptions"
-                       :key="item.skuId"
-                       :label="item.specification"
-                       :value="item.skuId" />
+                       :key="item.id"
+                       :label="item.model"
+                       :value="item.id" />
           </el-select>
         </el-form-item>
         <el-form-item label="鍧楁暟"
@@ -362,7 +362,15 @@
       label: "鏁版嵁鏉ユ簮",
       width: "100px",
       prop: "dataSourceType",
-      formatData: cell => (cell == 1 ? "鍚屾" : "鎵嬪姩"),
+      dataType: "tag",
+      formatType: params => {
+        const typeMap = {
+          2: "warning",
+          1: "primary",
+        };
+        return typeMap[params] || "info";
+      },
+      formatData: cell => (cell == 1 ? "閽夐拤鍚屾" : "鎵嬪姩鏂板"),
     },
     {
       label: "鐢宠鍗曠紪鍙�",
@@ -377,15 +385,20 @@
     {
       label: "浜у搧鍚嶇О",
       prop: "productName",
-      width: "100px",
+      width: "200px",
       dataType: "tag",
       formatType: params => {
-        return  "primary";
+        // const typeMap = {
+        //   鏉挎潗: "primary",
+        //   鐮屽潡: "warning",
+        // };
+        // return typeMap[params] || "info";
+        return "primary";
       },
     },
     {
       label: "浜у搧瑙勬牸",
-      prop: "specification",
+      prop: "model",
       width: "150px",
       className: "spec-cell",
     },
@@ -411,6 +424,15 @@
       prop: "status",
       width: "150px",
       className: "status-cell",
+      dataType: "tag",
+      formatType: params => {
+        const typeMap = {
+          0: "warning",
+          1: "primary",
+          2: "info",
+        };
+        return typeMap[params] || "info";
+      },
       formatData: cell => {
         const statusMap = {
           0: "寰呬笅鍙�",
@@ -527,7 +549,7 @@
             mergeForm.ids = [row.id];
             mergeForm.materialCode = row.materialCode;
             mergeForm.productName = row.productName || "";
-            mergeForm.specification = row.specification || "";
+            mergeForm.model = row.model || "";
             mergeForm.length = row.length || 0;
             mergeForm.width = row.width || 0;
             mergeForm.height = row.height || 0;
@@ -569,7 +591,7 @@
   const mergeForm = reactive({
     materialCode: "",
     productName: "",
-    specification: "",
+    model: "",
     length: 0,
     width: 0,
     height: 0,
@@ -610,7 +632,7 @@
     productMaterialId: undefined,
     productMaterialSkuId: undefined,
     productName: "",
-    specification: "",
+    model: "",
     materialCode: "",
     quantity: 0,
     volume: 0,
@@ -631,6 +653,7 @@
     productMaterialSkuId: [
       { required: true, message: "璇烽�夋嫨浜у搧瑙勬牸", trigger: "change" },
     ],
+    volume: [{ required: true, message: "璇疯緭鍏ユ柟鏁�", trigger: "blur" }],
     productMaterialId: [
       { required: true, message: "璇烽�夋嫨浜у搧", trigger: "change" },
     ],
@@ -676,7 +699,7 @@
       if (item.materialList && item.materialList.length > 0) {
         newItem.children = item.materialList.map(material => ({
           value: material.id, // 浣跨敤material鐨刬d浣滀负value
-          label: material.materialName, // 浣跨敤materialName浣滀负label
+          label: material.productName, // 浣跨敤materialName浣滀负label
         }));
       }
 
@@ -689,28 +712,26 @@
     fetchSpecificationOptions(value);
   };
 
-  const fetchSpecificationOptions = materialId => {
+  const fetchSpecificationOptions = productId => {
     specificationOptions.value = [];
-    if (materialId) {
-      modelListPage({ materialId: materialId, size: -1, current: -1 }).then(
-        res => {
-          specificationOptions.value = res.data.records;
-        }
-      );
+    if (productId) {
+      modelListPage({ productId: productId, size: -1, current: -1 }).then(res => {
+        specificationOptions.value = res.data.records;
+      });
     }
   };
 
   const handleChangeSpecification = value => {
     form.materialCode = undefined;
     const selectedModel = specificationOptions.value.find(
-      item => item.skuId === value
+      item => item.id === value
     );
     if (selectedModel) {
       form.materialCode = selectedModel.materialCode;
       // 瑙f瀽瑙勬牸瀛楃涓茶幏鍙栭暱瀹介珮
-      const specification = selectedModel.specification;
-      if (specification) {
-        const dimensions = specification.match(/^(\d+)\*(\d+)\*(\d+)$/);
+      const model = selectedModel.model;
+      if (model) {
+        const dimensions = model.match(/^(\d+)\*(\d+)\*(\d+)$/);
         if (dimensions && dimensions.length === 4) {
           form.length = parseInt(dimensions[1]);
           form.width = parseInt(dimensions[2]);
@@ -795,7 +816,7 @@
     searchForm: {
       customerName: "",
       productName: "",
-      specification: "",
+      model: "",
       materialCode: "",
       applyNo: "",
       dateRange: [],
@@ -815,7 +836,7 @@
     Object.assign(searchForm.value, {
       customerName: "",
       productName: "",
-      specification: "",
+      model: "",
       materialCode: "",
       applyNo: "",
       dateRange: [],
@@ -932,7 +953,7 @@
     const firstRow = selectedRows.value[0];
     mergeForm.materialCode = selectedserialNo.value;
     mergeForm.productName = firstRow.productName || "";
-    mergeForm.specification = firstRow.specification || "";
+    mergeForm.model = firstRow.model || "";
     mergeForm.length = firstRow.length || 0;
     mergeForm.width = firstRow.width || 0;
     mergeForm.height = firstRow.height || 0;
@@ -1068,7 +1089,7 @@
       productName: "",
       productMaterialId: undefined,
       productMaterialSkuId: undefined,
-      specification: "",
+      model: "",
       materialCode: "",
       quantity: 0,
       volume: 0,
@@ -1095,7 +1116,7 @@
       productName: row.productName || "",
       productMaterialId: row.productMaterialId || undefined,
       productMaterialSkuId: row.productMaterialSkuId || undefined,
-      specification: row.specification || "",
+      model: row.model || "",
       materialCode: row.materialCode || "",
       quantity: row.quantity || 0,
       volume: row.volume || 0,
@@ -1138,8 +1159,16 @@
   const handleSubmit = () => {
     formRef.value.validate(valid => {
       if (valid) {
+        if (form.volume === 0) {
+          proxy.$modal.msgError("鏂规暟涓嶈兘涓�0");
+          return;
+        }
+        if (form.v === "add") {
+          payload.id = null;
+        }
         const payload = { ...form };
         if (operationType.value === "add") {
+          payload.id = null;
           productionPlanAdd(payload)
             .then(() => {
               proxy.$modal.msgSuccess(

--
Gitblit v1.9.3