From 4619d7c1944afbc85eb680167ca188fccc822259 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 09 四月 2026 17:55:06 +0800
Subject: [PATCH] 根据产品大类联合查询库存信息

---
 src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue |   60 ++++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 44 insertions(+), 16 deletions(-)

diff --git a/src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue b/src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue
index 463cb83..a7a9400 100644
--- a/src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue
+++ b/src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue
@@ -8,10 +8,27 @@
     >
       <el-form label-width="140px" :model="formState" ref="formRef">
         <el-form-item
+            label="搴撳瓨绫诲瀷"
+            prop="type"
+            :rules="[
+                {
+                required: true,
+                message: '璇烽�夋嫨搴撳瓨绫诲瀷',
+                trigger: 'change',
+              }
+            ]"
+        >
+          <el-select v-model="formState.type" placeholder="璇烽�夋嫨搴撳瓨绫诲瀷" @change="handleChangeType">
+            <el-option label="鍚堟牸搴撳瓨" value="qualified" :disabled="(operationType === 'frozen' && props.record.qualifiedUnLockedQuantity <= 0) || (operationType === 'thaw' && props.record.qualifiedLockedQuantity <= 0)" />
+            <el-option label="涓嶅悎鏍煎簱瀛�" value="unqualified" :disabled="(operationType === 'frozen' && props.record.unQualifiedUnLockedQuantity <= 0) || (operationType === 'thaw' && props.record.unQualifiedLockedQuantity <= 0)" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
             :label="operationType === 'frozen' ? '鍐荤粨鏁伴噺锛�' : '瑙e喕鏁伴噺锛�'"
             prop="lockedQuantity"
         >
-          <el-input-number v-model="formState.lockedQuantity" :step="1" :min="1" precision="0" style="width: 100%" :max="maxCount" />
+          <el-input-number v-model="formState.lockedQuantity" :step="1" :min="maxCount > 0 ? 1 : 0" precision="0" style="width: 100%" :max="maxCount" :disabled="maxCount < 1" />
         </el-form-item>
       </el-form>
 
@@ -26,7 +43,7 @@
 </template>
 
 <script setup>
-import {ref, computed, getCurrentInstance} from "vue";
+import {ref, computed, getCurrentInstance, onMounted} from "vue";
 import {frozenStockInventory, thawStockInventory} from "@/api/inventoryManagement/stockInventory.js";
 import {frozenStockUninventory, thawStockUninventory} from "@/api/inventoryManagement/stockUninventory.js";
 
@@ -42,12 +59,6 @@
     default: 'frozen',
   },
 
-  type: {
-    type: String,
-    required: true,
-    default: 'qualified',
-  },
-
   record: {
     type: Object,
     default: () => {},
@@ -58,7 +69,8 @@
 
 // 鍝嶅簲寮忔暟鎹紙鏇夸唬閫夐」寮忕殑 data锛�
 const formState = ref({
-  lockedQuantity: 0,
+  type: undefined,
+  lockedQuantity: undefined,
 });
 
 const isShow = computed({
@@ -76,7 +88,8 @@
 const closeModal = () => {
   // 閲嶇疆琛ㄥ崟鏁版嵁
   formState.value = {
-    lockedQuantity: undefined
+    lockedQuantity: undefined,
+    type: undefined,
   };
   isShow.value = false;
 };
@@ -84,17 +97,32 @@
 const maxCount = computed(() => {
   // 鍐荤粨搴撳瓨鏈�澶ф暟閲忎负鏈В鍐绘暟閲�
   if (props.operationType === 'frozen') {
-    return props.record.unLockedQuantity
+    // 鍐荤粨鍚堟牸搴撳瓨鏈�澶ф暟閲忎负鏈В鍐诲悎鏍兼暟閲�
+    if (formState.value.type === 'qualified') {
+      return Math.max(0, props.record.qualifiedUnLockedQuantity || 0)
+    }
+    // 鍐荤粨涓嶅悎鏍煎簱瀛樻渶澶ф暟閲忎负鏈В鍐讳笉鍚堟牸鏁伴噺
+    return Math.max(0, props.record.unQualifiedUnLockedQuantity || 0)
   }
   // 瑙e喕搴撳瓨鏈�澶ф暟閲忎负宸插喕缁撴暟閲�
-  return props.record.lockedQuantity
+  if (formState.value.type === 'qualified') {
+    // 瑙e喕鍚堟牸搴撳瓨鏈�澶ф暟閲忎负宸插喕缁撳悎鏍兼暟閲�
+    return Math.max(0, props.record.qualifiedLockedQuantity || 0)
+  }
+  // 瑙e喕涓嶅悎鏍煎簱瀛樻渶澶ф暟閲忎负宸插喕缁撲笉鍚堟牸鏁伴噺
+  return Math.max(0, props.record.unQualifiedLockedQuantity || 0)
 })
+
+const handleChangeType = (type) => {
+  formState.value.lockedQuantity = maxCount.value;
+}
 
 const handleSubmit = () => {
   proxy.$refs["formRef"].validate(valid => {
     if (valid) {
-      const data = Object.assign({id: props.record.id}, formState.value);
-      if (props.type === 'qualified') {
+      const data = Object.assign({}, formState.value);
+      if (formState.value.type === 'qualified') {
+        data.id = props.record.qualifiedId;
         // 鍐荤粨
         if (props.operationType === 'frozen') {
           frozenStockInventory(data).then(res => {
@@ -122,6 +150,7 @@
           })
         }
       } else {
+        data.id = props.record.unQualifiedId;
         if (props.operationType === 'frozen') {
           frozenStockUninventory(data).then(res => {
             if (res.code === 200) {
@@ -153,7 +182,6 @@
 };
 
 onMounted(() => {
-  formState.value.lockedQuantity = maxCount.value;
 })
 
 defineExpose({
@@ -161,4 +189,4 @@
   handleSubmit,
   isShow,
 });
-</script>
+</script>
\ No newline at end of file

--
Gitblit v1.9.3