From 7cb0cf9a36e263d29be61a44b8caae2a896f3461 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期二, 31 三月 2026 11:31:40 +0800
Subject: [PATCH] 新增入库选择器修改
---
src/views/inventoryManagement/receiptManagement/index.vue | 108 ++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 81 insertions(+), 27 deletions(-)
diff --git a/src/views/inventoryManagement/receiptManagement/index.vue b/src/views/inventoryManagement/receiptManagement/index.vue
index be59711..056c46d 100644
--- a/src/views/inventoryManagement/receiptManagement/index.vue
+++ b/src/views/inventoryManagement/receiptManagement/index.vue
@@ -246,7 +246,7 @@
<el-form :model="directQuery"
class="mb-2">
<el-form-item label="浜у搧澶х被">
- <el-select v-model="directQuery.productCategory"
+ <!-- <el-select v-model="directQuery.productCategory"
placeholder="璇烽�夋嫨浜у搧澶х被"
clearable
filterable
@@ -255,14 +255,22 @@
:key="item.id"
:label="item.productName"
:value="item.productName" />
- </el-select>
+ </el-select> -->
+ <el-tree-select v-model="directQuery.productId"
+ placeholder="璇烽�夋嫨浜у搧澶х被"
+ clearable
+ check-strictly
+ @change="handleProductCategoryChange"
+ :data="productList"
+ :render-after-expand="false"
+ style="width: 100%" />
</el-form-item>
<el-form-item label="瑙勬牸鍨嬪彿">
<el-select v-model="directQuery.productModelId"
placeholder="璇峰厛閫夋嫨浜у搧澶х被"
clearable
filterable
- :disabled="!directQuery.productCategory">
+ :disabled="!directQuery.productId">
<el-option v-for="item in productModelList"
:key="item.id"
:label="item.model"
@@ -671,6 +679,7 @@
directQuery.value = {
productId: null,
productModelId: null,
+ productCategory: "",
inboundQuantity: 0,
warnNum: 0,
outStockQuantity: 0,
@@ -691,33 +700,76 @@
if (type === "edit" && row) {
// 缂栬緫妯″紡锛屽洖鏄炬暟鎹�
directForm.value = { ...row };
- // 鍥炴樉浜у搧澶х被
- const selectedProduct = productList.value.find(
- item => item.productName === row.productCategory
- );
- if (selectedProduct) {
- directQuery.value.productId = selectedProduct.id;
- // 鏍规嵁浜у搧澶х被鍔犺浇瑙勬牸鍨嬪彿鍒楄〃骞跺洖鏄�
- loadProductModelList(selectedProduct.id).then(() => {
- // 鍥炴樉瑙勬牸鍨嬪彿
+ // 鍥炴樉鍏朵粬瀛楁
+ directQuery.value.inboundQuantity = row.inboundNum || row.inboundQuantity;
+ directQuery.value.warnNum = row.warnNum || 0;
+ directQuery.value.outStockQuantity = row.outStockQuantity || 0;
+ directQuery.value.shortageDescription = row.shortageDescription || "";
+ // 鍥炴樉浜у搧澶х被鍜岃鏍煎瀷鍙�
+ if (row.productModelId) {
+ // 杩欓噷闇�瑕佹牴鎹疄闄呮儏鍐佃幏鍙栦骇鍝佸ぇ绫籌D锛屾殏鏃跺亣璁緍ow涓湁productId瀛楁
+ if (row.productId) {
+ directQuery.value.productId = row.productId;
+ // 鏇存柊浜у搧绫诲埆鍚嶇О
+ const productCategory = findNodeById(productList.value, row.productId);
+ if (productCategory) {
+ directQuery.value.productCategory = productCategory;
+ }
+ // 鏍规嵁浜у搧澶х被鍔犺浇瑙勬牸鍨嬪彿鍒楄〃骞跺洖鏄�
+ loadProductModelList(row.productId).then(() => {
+ directQuery.value.productModelId = row.productModelId;
+ });
+ } else {
+ // 濡傛灉娌℃湁productId瀛楁锛屽皾璇曟牴鎹畃roductCategory鏌ユ壘
+ // 杩欓噷闇�瑕佹牴鎹疄闄呮儏鍐佃皟鏁存煡鎵鹃�昏緫
directQuery.value.productCategory = row.productCategory || "";
- directQuery.value.productModelId = row.productModelId;
- // 鍥炴樉鍏朵粬瀛楁
- directQuery.value.inboundQuantity =
- row.inboundNum || row.inboundQuantity;
- directQuery.value.warnNum = row.warnNum || 0;
- directQuery.value.outStockQuantity = row.outStockQuantity || 0;
- directQuery.value.shortageDescription = row.shortageDescription || "";
- });
+ }
}
}
+ };
+
+ // 杞崲浜у搧鏍戞暟鎹牸寮忎负 el-tree-select 鎵�闇�鏍煎紡
+ function convertIdToValue(data) {
+ return data.map(item => {
+ const { id, children, ...rest } = item;
+ const newItem = {
+ ...rest,
+ value: id,
+ label: item.productName,
+ };
+ if (children && children.length > 0) {
+ newItem.children = convertIdToValue(children);
+ }
+ return newItem;
+ });
+ }
+
+ // 鏍规嵁 ID 鏌ユ壘鑺傜偣鍚嶇О
+ const findNodeById = (nodes, productId) => {
+ for (let i = 0; i < nodes.length; i++) {
+ if (nodes[i].value === productId) {
+ return nodes[i].label;
+ }
+ if (nodes[i].children && nodes[i].children.length > 0) {
+ const foundNode = findNodeById(nodes[i].children, productId);
+ if (foundNode) {
+ return foundNode;
+ }
+ }
+ }
+ return null;
};
// 鍔犺浇浜у搧澶х被鍒楄〃
const loadProductList = async () => {
try {
const res = await productTreeList();
- productList.value = res;
+ // 纭繚鏁版嵁鏍煎紡绗﹀悎 el-tree-select 瑕佹眰
+ if (Array.isArray(res)) {
+ productList.value = convertIdToValue(res);
+ } else {
+ productList.value = [];
+ }
} catch (error) {
console.error("鍔犺浇浜у搧澶х被澶辫触:", error);
proxy.$modal.msgError("鍔犺浇浜у搧澶х被澶辫触");
@@ -726,16 +778,18 @@
// 澶勭悊浜у搧澶х被鍙樺寲
const handleProductCategoryChange = value => {
- directQuery.value.specificationModel = "";
+ directQuery.value.productModelId = "";
productModelList.value = [];
if (value) {
// 鏍规嵁浜у搧澶х被鍔犺浇瑙勬牸鍨嬪彿鍒楄〃
- const selectedProduct = productList.value.find(
- item => item.productName === value
- );
- if (selectedProduct) {
- loadProductModelList(selectedProduct.id);
+ loadProductModelList(value);
+ // 鏇存柊浜у搧绫诲埆鍚嶇О
+ const productCategory = findNodeById(productList.value, value);
+ if (productCategory) {
+ directQuery.value.productCategory = productCategory;
}
+ } else {
+ directQuery.value.productCategory = "";
}
};
--
Gitblit v1.9.3