From 39f51cb984ac3ecd77f541ee7f73a75771109e65 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 24 四月 2026 11:06:51 +0800
Subject: [PATCH] 对库存管理视图进行重构,以支持动态产品类别和型号,并提升库存检索功能
---
src/views/inventoryManagement/stockManagement/New.vue | 70 +++++++++++++++++++++++------------
1 files changed, 46 insertions(+), 24 deletions(-)
diff --git a/src/views/inventoryManagement/stockManagement/New.vue b/src/views/inventoryManagement/stockManagement/New.vue
index 1f171ef..7d20e64 100644
--- a/src/views/inventoryManagement/stockManagement/New.vue
+++ b/src/views/inventoryManagement/stockManagement/New.vue
@@ -7,17 +7,7 @@
@close="closeModal"
>
<el-form label-width="140px" :model="formState" label-position="top" ref="formRef">
- <el-form-item
- label="浜у搧鍚嶇О"
- prop="productModelId"
- :rules="[
- {
- required: true,
- message: '璇烽�夋嫨浜у搧',
- trigger: 'change',
- }
- ]"
- >
+ <el-form-item label="浜у搧鍚嶇О" prop="productName">
<el-button type="primary" @click="showProductSelectDialog = true">
{{ formState.productName ? formState.productName : '閫夋嫨浜у搧' }}
</el-button>
@@ -38,21 +28,40 @@
</el-form-item>
<el-form-item
- label="鍘氬害(mm)"
- prop="thickness"
+ label="搴撳瓨绫诲瀷"
+ prop="inventoryType"
+ :rules="[
+ {
+ required: true,
+ message: '璇烽�夋嫨搴撳瓨绫诲瀷',
+ trigger: 'change',
+ }
+ ]"
>
- <el-input v-model="formState.thickness" disabled />
+ <el-select
+ v-model="formState.inventoryType"
+ placeholder="璇烽�夋嫨搴撳瓨绫诲瀷"
+ clearable
+ filterable
+ style="width: 100%"
+ >
+ <el-option
+ label="鍚堟牸搴撳瓨"
+ value="qualified"
+ />
+ <el-option
+ label="涓嶅悎鏍煎簱瀛�"
+ value="unqualified"
+ />
+ </el-select>
</el-form-item>
- <el-form-item
- label="搴撳瓨鏁伴噺"
- prop="qualitity"
- >
+ <el-form-item label="搴撳瓨鏁伴噺" prop="qualitity">
<el-input-number v-model="formState.qualitity" :step="1" :min="1" style="width: 100%" />
</el-form-item>
<el-form-item
- v-if="type === 'qualified'"
+ v-if="formState.inventoryType === 'qualified'"
label="搴撳瓨棰勮鏁伴噺"
prop="warnNum"
>
@@ -81,7 +90,7 @@
</template>
<script setup>
-import {ref, computed, getCurrentInstance} from "vue";
+import { ref, computed, getCurrentInstance, watch } from "vue";
import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
import {createStockInventory} from "@/api/inventoryManagement/stockInventory.js";
import {createStockUnInventory} from "@/api/inventoryManagement/stockUninventory.js";
@@ -97,6 +106,10 @@
required: true,
default: 'qualified',
},
+ parentId: {
+ type: [Number, String],
+ default: undefined,
+ },
});
const emit = defineEmits(['update:visible', 'completed']);
@@ -105,10 +118,10 @@
const formState = ref({
productId: undefined,
productModelId: undefined,
+ inventoryType: "qualified",
productName: "",
productModelName: "",
unit: "",
- thickness: "",
qualitity: 0,
warnNum: 0,
remark: '',
@@ -132,10 +145,10 @@
formState.value = {
productId: undefined,
productModelId: undefined,
+ inventoryType: props.type || "qualified",
productName: "",
productModelName: "",
unit: "",
- thickness: "",
qualitity: 0,
warnNum: 0,
remark: '',
@@ -152,7 +165,6 @@
formState.value.productModelName = product.model;
formState.value.productModelId = product.id;
formState.value.unit = product.unit;
- formState.value.thickness = product.thickness ?? "";
showProductSelectDialog.value = false;
// 瑙﹀彂琛ㄥ崟楠岃瘉鏇存柊
proxy.$refs["formRef"]?.validateField('productModelId');
@@ -171,7 +183,7 @@
proxy.$modal.msgError("璇烽�夋嫨瑙勬牸");
return;
}
- if (props.type === 'qualified') {
+ if (formState.value.inventoryType === 'qualified') {
createStockInventory(formState.value).then(res => {
// 鍏抽棴妯℃�佹
isShow.value = false;
@@ -199,4 +211,14 @@
handleSubmit,
isShow,
});
+
+watch(
+ () => props.visible,
+ (visible) => {
+ if (visible) {
+ formState.value.inventoryType = props.type || "qualified";
+ }
+ },
+ { immediate: true }
+);
</script>
--
Gitblit v1.9.3