From 1677b6e8c20c3c8dd8297c08428538ca5e0029fc Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 26 一月 2026 13:43:52 +0800
Subject: [PATCH] feat: 库存管理的冻结与解冻物料批次

---
 src/api/inventoryManagement/stockManage.js              |   18 +++++
 src/views/inventoryManagement/issueManagement/index.vue |   39 ++++++++++++-
 src/views/inventoryManagement/stockManagement/index.vue |   68 ++++++++++++++++++++++
 3 files changed, 121 insertions(+), 4 deletions(-)

diff --git a/src/api/inventoryManagement/stockManage.js b/src/api/inventoryManagement/stockManage.js
index e2a4ebf..7cf9691 100644
--- a/src/api/inventoryManagement/stockManage.js
+++ b/src/api/inventoryManagement/stockManage.js
@@ -80,4 +80,20 @@
     })
 }
 
-//
\ No newline at end of file
+// 閲囪喘鍏ュ簱-搴撳瓨绠$悊-鍐荤粨涓嶅悎鏍间骇鍝�
+export function frozenQuality(ids) {
+    return request({
+        url: '/stockin/frozenQuality',
+        method: 'post',
+        data: ids
+    })
+}
+
+// 閲囪喘鍏ュ簱-搴撳瓨绠$悊-瑙e喕涓嶅悎鏍间骇鍝�
+export function thawQuality(ids) {
+    return request({
+        url: '/stockin/thawQuality',
+        method: 'post',
+        data: ids
+    })
+}
\ No newline at end of file
diff --git a/src/views/inventoryManagement/issueManagement/index.vue b/src/views/inventoryManagement/issueManagement/index.vue
index 6f82adc..6e345d1 100644
--- a/src/views/inventoryManagement/issueManagement/index.vue
+++ b/src/views/inventoryManagement/issueManagement/index.vue
@@ -51,12 +51,22 @@
                              prop="inboundNum0"
                              width="90"
                              show-overflow-tooltip />
+            <el-table-column label="鐘舵��"
+                             align="center"
+                             prop="isFrozen"
+                             width="100">
+              <template #default="scope">
+                <el-tag :type="scope.row.isFrozen ? 'danger' : 'success'">
+                  {{ scope.row.isFrozen ? '宸插喕缁�' : '姝e父' }}
+                </el-tag>
+              </template>
+            </el-table-column>
             <el-table-column fixed="right"
                              label="鎿嶄綔"
                              min-width="60"
                              align="center">
               <template #default="scope">
-                <el-button :disabled="scope.row.inboundNum0 <= 0"
+                <el-button :disabled="scope.row.inboundNum0 <= 0 || scope.row.isFrozen"
                            link
                            type="primary"
                            size="small"
@@ -131,13 +141,23 @@
             <el-table-column label="鍚◣鎬讳环(鍏�)"
                              prop="taxInclusiveTotalPrice"
                              width="150"></el-table-column>
+            <el-table-column label="鐘舵��"
+                             align="center"
+                             prop="isFrozen"
+                             width="100">
+              <template #default="scope">
+                <el-tag :type="scope.row.isFrozen ? 'danger' : 'success'">
+                  {{ scope.row.isFrozen ? '宸插喕缁�' : '姝e父' }}
+                </el-tag>
+              </template>
+            </el-table-column>
             <el-table-column fixed="right"
                              label="鎿嶄綔"
                              min-width="60"
                              align="center">
               <template #default="scope">
                 <el-button link
-                           :disabled="scope.row.inboundNum0 <= 0"
+                           :disabled="scope.row.inboundNum0 <= 0 || scope.row.isFrozen"
                            type="primary"
                            size="small"
                            @click="openForm(scope.row);">棰嗙敤</el-button>
@@ -201,13 +221,23 @@
                              prop="inboundNum0"
                              width="90"
                              show-overflow-tooltip />
+            <el-table-column label="鐘舵��"
+                             align="center"
+                             prop="isFrozen"
+                             width="100">
+              <template #default="scope">
+                <el-tag :type="scope.row.isFrozen ? 'danger' : 'success'">
+                  {{ scope.row.isFrozen ? '宸插喕缁�' : '姝e父' }}
+                </el-tag>
+              </template>
+            </el-table-column>
             <el-table-column fixed="right"
                              label="鎿嶄綔"
                              min-width="60"
                              align="center">
               <template #default="scope">
                 <el-button link
-                           :disabled="scope.row.inboundNum0 <= 0"
+                           :disabled="scope.row.inboundNum0 <= 0 || scope.row.isFrozen"
                            type="primary"
                            size="small"
                            @click="openForm(scope.row);">棰嗙敤</el-button>
@@ -421,6 +451,9 @@
 const productModelId = ref(null);
   // 鎵撳紑寮规
   const openForm = async row => {
+    if (row.isFrozen) {
+      return proxy.$modal.msgError("璇ヤ骇鍝佸凡鍐荤粨锛屾棤娉曢鐢�");
+    }
     dialogFormVisible.value = true;
     currentRowId.value = row.id;
     currentRowNum.value = row.inboundNum0;
diff --git a/src/views/inventoryManagement/stockManagement/index.vue b/src/views/inventoryManagement/stockManagement/index.vue
index 88ca4ff..dd27462 100644
--- a/src/views/inventoryManagement/stockManagement/index.vue
+++ b/src/views/inventoryManagement/stockManagement/index.vue
@@ -108,6 +108,12 @@
           </div>
           <div>
             <el-button @click="handleOut">瀵煎嚭</el-button>
+            <el-button type="danger"
+                       plain
+                       @click="handleFrozen">鍐荤粨</el-button>
+            <el-button type="success"
+                       plain
+                       @click="handleThaw">瑙e喕</el-button>
             <!--           <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>-->
           </div>
         </div>
@@ -164,6 +170,16 @@
             <el-table-column label="鍚◣鎬讳环(鍏�)"
                              prop="taxInclusiveTotalPrice"
                              width="150"></el-table-column>
+            <el-table-column label="鐘舵��"
+                             align="center"
+                             prop="isFrozen"
+                             width="100">
+              <template #default="scope">
+                <el-tag :type="scope.row.isFrozen ? 'danger' : 'success'">
+                  {{ scope.row.isFrozen ? '宸插喕缁�' : '姝e父' }}
+                </el-tag>
+              </template>
+            </el-table-column>
           </el-table>
           <pagination v-show="total > 0"
                       :total="total"
@@ -200,6 +216,8 @@
     getStockManagePage,
     getStockManagePageByProduction,
     delStockManage, getStockManageProduction,
+    frozenQuality,
+    thawQuality,
   } from "@/api/inventoryManagement/stockManage.js";
   import {
     updateManagement,
@@ -534,6 +552,56 @@
         proxy.$modal.msg("宸插彇娑�");
       });
   };
+
+  // 鍐荤粨
+  const handleFrozen = () => {
+    let ids = [];
+    if (selectedRows.value.length > 0) {
+      ids = selectedRows.value.map(item => item.id);
+    } else {
+      proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+      return;
+    }
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚爣璁颁负涓嶅悎鏍间骇鍝佸苟鍐荤粨锛屾槸鍚︾‘璁�?", "璀﹀憡", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    })
+      .then(() => {
+        frozenQuality(ids).then(res => {
+          proxy.$modal.msgSuccess("鎿嶄綔鎴愬姛");
+          getList();
+        });
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
+      });
+  };
+
+  // 瑙e喕
+  const handleThaw = () => {
+    let ids = [];
+    if (selectedRows.value.length > 0) {
+      ids = selectedRows.value.map(item => item.id);
+    } else {
+      proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+      return;
+    }
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚В鍐伙紝鏄惁纭?", "鎻愮ず", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "success",
+    })
+      .then(() => {
+        thawQuality(ids).then(res => {
+          proxy.$modal.msgSuccess("鎿嶄綔鎴愬姛");
+          getList();
+        });
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
+      });
+  };
   // 鍒犻櫎
   const handleDelete = () => {
     let ids = [];

--
Gitblit v1.9.3