From 044596092e1ac5dd03cdbfe6af3e87de9c2da0ee Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期五, 13 三月 2026 11:00:01 +0800
Subject: [PATCH] 问题修改

---
 src/views/basicData/product/index.vue             |   58 +++++++++++++++++-
 src/views/productionPlan/productionPlan/index.vue |   71 +++++++++++++++++------
 2 files changed, 104 insertions(+), 25 deletions(-)

diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue
index 538687f..32dad2b 100644
--- a/src/views/basicData/product/index.vue
+++ b/src/views/basicData/product/index.vue
@@ -77,7 +77,7 @@
       </div>
     </div>
     <div class="right">
-      <div style="margin-bottom: 10px"
+      <div style="margin-bottom: 10px; display: flex; align-items: center; gap: 10px"
            v-if="isShowButton">
         <el-button type="primary"
                    @click="openModelDia('add')">
@@ -85,9 +85,18 @@
         </el-button>
         <ImportExcel :product-id="currentId"
                      @uploadSuccess="getModelList" />
+        <el-input v-model="specification"
+                  placeholder="瑙勬牸鍨嬪彿"
+                  style="width: 150px"
+                  clearable
+                  @change="getModelList" />
+        <el-input v-model="materialCode"
+                  placeholder="鐗╂枡缂栧彿"
+                  style="width: 150px"
+                  clearable
+                  @change="getModelList" />
         <el-button type="danger"
                    @click="handleDelete"
-                   style="margin-left: 10px"
                    plain>
           鍒犻櫎
         </el-button>
@@ -95,10 +104,11 @@
       <PIMTable rowKey="id"
                 :column="tableColumn"
                 :tableData="tableData"
+                :page="page"
                 :isSelection="true"
-                :isShowPagination="false"
                 @selection-change="handleSelectionChange"
-                :tableLoading="tableLoading"></PIMTable>
+                :tableLoading="tableLoading"
+                @pagination="pagination"></PIMTable>
     </div>
     <el-dialog v-model="productDia"
                title="浜у搧"
@@ -129,6 +139,7 @@
               <el-select v-model="form.inventoryCategoryId"
                          placeholder="璇烽�夋嫨瀛樿揣绫诲埆"
                          clearable
+                         filterable
                          style="width: 100%">
                 <el-option v-for="item in inventoryCategoryList"
                            :key="item.id"
@@ -145,6 +156,7 @@
               <el-select v-model="form.materialTypeId"
                          placeholder="璇烽�夋嫨鐗╂枡绫诲瀷"
                          clearable
+                         filterable
                          style="width: 100%">
                 <el-option v-for="item in materialTypeList"
                            :key="item.id"
@@ -206,6 +218,15 @@
                         @keydown.enter.prevent />
             </el-form-item>
           </el-col>
+          <el-col :span="24">
+            <el-form-item label="鐗╂枡缂栫爜锛�"
+                          prop="materialCode">
+              <el-input v-model="modelForm.materialCode"
+                        placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�"
+                        clearable
+                        @keydown.enter.prevent />
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
@@ -214,6 +235,7 @@
               <el-select v-model="modelForm.supplyType"
                          placeholder="璇烽�夋嫨渚涘簲鏂瑰紡"
                          clearable
+                         filterable
                          style="width: 100%">
                 <el-option label="鑷埗"
                            value="鑷埗" />
@@ -305,6 +327,8 @@
   const expandedKeys = ref([]);
   const inventoryCategoryList = ref([]);
   const materialTypeList = ref([]);
+  const specification = ref("");
+  const materialCode = ref("");
 
   const getloadData = () => {
     loadData()
@@ -357,6 +381,10 @@
       prop: "specification",
     },
     {
+      label: "鐗╂枡缂栫爜",
+      prop: "materialCode",
+    },
+    {
       label: "鍗曚綅",
       prop: "baseUnit",
     },
@@ -379,6 +407,11 @@
   const tableLoading = ref(false);
   const isShowButton = ref(false);
   const selectedRows = ref([]);
+  const page = reactive({
+    current: 1,
+    size: 10,
+    total: 0,
+  });
 
   const data = reactive({
     form: {
@@ -401,11 +434,13 @@
     modelForm: {
       specification: "",
       supplyType: "",
+      materialCode: "",
       id: null,
     },
     modelRules: {
       specification: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       supplyType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+      materialCode: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     },
     configForm: {
       configName: "",
@@ -508,12 +543,14 @@
     modelForm.value.specification = "";
     modelForm.value.supplyType = "";
     modelForm.value.id = null;
+    modelForm.value.materialCode = null;
 
     if (type === "edit" && data) {
       // 缂栬緫妯″紡锛屽洖濉暟鎹�
       modelForm.value.specification = data.specification || "";
       modelForm.value.supplyType = data.supplyType || "";
       modelForm.value.id = data.skuId || null;
+      modelForm.value.materialCode = data.materialCode || null;
     }
   };
   // 鎻愪氦浜у搧鍚嶇О淇敼
@@ -667,6 +704,7 @@
         const params = {
           materialId: currentId.value,
           specification: modelForm.value.specification,
+          materialCode: modelForm.value.materialCode,
           supplyType: modelForm.value.supplyType,
         };
         if (modelOperationType.value === "add") {
@@ -699,6 +737,11 @@
   };
 
   // 鏌ヨ瑙勬牸鍨嬪彿
+  const pagination = obj => {
+    page.current = obj.page;
+    page.size = obj.limit;
+    getModelList();
+  };
   const getModelList = () => {
     if (!currentId.value) {
       return;
@@ -706,9 +749,14 @@
     tableLoading.value = true;
     modelListPage({
       materialId: currentId.value,
+      current: page.current,
+      size: page.size,
+      specification: specification.value,
+      materialCode: materialCode.value,
     }).then(res => {
       console.log("res", res);
-      tableData.value = res.data;
+      tableData.value = res.data.records || [];
+      page.total = res.data.total;
       tableLoading.value = false;
     });
   };
diff --git a/src/views/productionPlan/productionPlan/index.vue b/src/views/productionPlan/productionPlan/index.vue
index e70fa22..33dbeb0 100644
--- a/src/views/productionPlan/productionPlan/index.vue
+++ b/src/views/productionPlan/productionPlan/index.vue
@@ -248,6 +248,7 @@
                       prop="productMaterialSkuId">
           <el-select v-model="form.productMaterialSkuId"
                      @change="handleChangeSpecification"
+                     filterable
                      placeholder="璇烽�夋嫨">
             <el-option v-for="item in specificationOptions"
                        :key="item.skuId"
@@ -301,8 +302,14 @@
         </el-form-item>
         <el-form-item label="寮哄害"
                       prop="strength">
-          <el-input v-model="form.strength"
-                    placeholder="璇疯緭鍏ュ己搴�" />
+          <el-select v-model="form.strength"
+                     placeholder="璇烽�夋嫨寮哄害"
+                     style="width: 100%">
+            <el-option label="A3.5"
+                       value="A3.5" />
+            <el-option label="A5.0"
+                       value="A5.0" />
+          </el-select>
         </el-form-item>
         <el-form-item label="澶囨敞 1"
                       prop="remarkOne">
@@ -387,40 +394,46 @@
       label: "鍧楁暟",
       prop: "quantity",
       className: "quantity-cell",
+      formatData: cell => (cell ? `${cell}鍧梎 : ""),
     },
     {
       label: "鏂规暟",
       prop: "volume",
       width: "150px",
       className: "volume-cell",
+      formatData: cell => (cell ? `${cell}鏂筦 : ""),
     },
     {
       label: "宸蹭笅鍙戞柟鏁�",
       prop: "assignedQuantity",
       width: "150px",
       className: "spec-cell",
+      formatData: cell => (cell ? `${cell}鏂筦 : ""),
     },
     {
       label: "闀�",
       prop: "length",
       className: "dimension-cell",
+      formatData: cell => (cell ? `${cell}mm` : ""),
     },
     {
       label: "瀹�",
       prop: "width",
       className: "dimension-cell",
+      formatData: cell => (cell ? `${cell}mm` : ""),
     },
     {
       label: "楂�",
       prop: "height",
       className: "dimension-cell",
+      formatData: cell => (cell ? `${cell}mm` : ""),
     },
-    {
-      label: "娴佹按鍙�",
-      prop: "serialNo",
-      width: "150px",
-      className: "code-cell",
-    },
+    // {
+    //   label: "娴佹按鍙�",
+    //   prop: "serialNo",
+    //   width: "150px",
+    //   className: "code-cell",
+    // },
     {
       label: "璁″垝寮�濮嬫棩鏈�",
       prop: "startDate",
@@ -439,12 +452,12 @@
       label: "寮哄害",
       prop: "strength",
     },
-    // {
-    //   label: "鏁版嵁鏉ユ簮",
-    //   width: "100px",
-    //   prop: "dataSourceType",
-    //   formatData: cell => (cell == 1 ? "鍚屾" : "鎵嬪姩"),
-    // },
+    {
+      label: "鏁版嵁鏉ユ簮",
+      width: "100px",
+      prop: "dataSourceType",
+      formatData: cell => (cell == 1 ? "鍚屾" : "鎵嬪姩"),
+    },
     {
       label: "澶囨敞 1",
       prop: "remarkOne",
@@ -465,6 +478,9 @@
           name: "缂栬緫",
           type: "primary",
           link: true,
+          showHide: row => {
+            return row.status == 0;
+          },
           clickFun: row => {
             handleEdit(row);
           },
@@ -473,6 +489,9 @@
           name: "鍒犻櫎",
           type: "danger",
           link: true,
+          showHide: row => {
+            return row.status == 0;
+          },
           clickFun: row => {
             handleDelete(row);
           },
@@ -480,12 +499,12 @@
         {
           name: "涓嬪彂",
           type: "text",
-          disabled: row => {
+          showHide: row => {
             // 璁$畻鍓╀綑鏂规暟
             const remainingVolume =
               (row.volume || 0) - (row.assignedQuantity || 0);
             // 濡傛灉鍓╀綑鏂规暟灏忎簬绛変簬0锛岀姝㈤�夋嫨
-            return remainingVolume <= 0;
+            return remainingVolume > 0;
           },
           clickFun: row => {
             // 鍗曠嫭涓嬪彂鎿嶄綔
@@ -658,19 +677,31 @@
   const fetchSpecificationOptions = materialId => {
     specificationOptions.value = [];
     if (materialId) {
-      modelListPage({ materialId: materialId }).then(res => {
-        specificationOptions.value = res.data;
-      });
+      modelListPage({ materialId: materialId, size: -1, current: -1 }).then(
+        res => {
+          specificationOptions.value = res.data.records;
+        }
+      );
     }
   };
 
   const handleChangeSpecification = value => {
     form.materialCode = undefined;
     const selectedModel = specificationOptions.value.find(
-      item => item.id === value
+      item => item.skuId === value
     );
     if (selectedModel) {
       form.materialCode = selectedModel.materialCode;
+      // 瑙f瀽瑙勬牸瀛楃涓茶幏鍙栭暱瀹介珮
+      const specification = selectedModel.specification;
+      if (specification) {
+        const dimensions = specification.match(/^(\d+)\*(\d+)\*(\d+)$/);
+        if (dimensions && dimensions.length === 4) {
+          form.length = parseInt(dimensions[1]);
+          form.width = parseInt(dimensions[2]);
+          form.height = parseInt(dimensions[3]);
+        }
+      }
     }
   };
 

--
Gitblit v1.9.3