From b2b12e3bfac952fd86630bf1b0e9a76f1d65451f Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 15 四月 2026 09:51:19 +0800
Subject: [PATCH] 优化产品类别选择:添加过滤功能以增强用户体验,并在类别变化时重置相关字段以避免旧值残留
---
src/views/salesManagement/salesLedger/index.vue | 46 +++++++++++++++++++++++++++++-----------------
1 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 4776504..2f61cdf 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -464,6 +464,8 @@
v-model="productForm.productCategory"
placeholder="璇烽�夋嫨"
clearable
+ filterable
+ :filter-node-method="filterProductCategoryNode"
check-strictly
@change="getModels"
:data="productOptions"
@@ -1083,22 +1085,6 @@
productRules: {
productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- specificationModel: [
- { required: true, message: "璇烽�夋嫨", trigger: "change" },
- ],
- thickness: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- taxInclusiveUnitPrice: [
- { required: true, message: "璇疯緭鍏�", trigger: "blur" },
- ],
- taxRate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- taxInclusiveTotalPrice: [
- { required: true, message: "璇疯緭鍏�", trigger: "blur" },
- ],
- taxExclusiveTotalPrice: [
- { required: true, message: "璇疯緭鍏�", trigger: "blur" },
- ],
- invoiceType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
},
});
const { productForm, productRules } = toRefs(productFormData);
@@ -1523,19 +1509,45 @@
};
// 鑾峰彇tree瀛愭暟鎹�
const getModels = (value) => {
+ // 浜у搧澶х被鍙樺寲鏃讹紝閲嶇疆瑙勬牸鍨嬪彿涓庡帤搴︼紝閬垮厤鏃у�兼畫鐣�
+ productForm.value.productModelId = null;
+ productForm.value.specificationModel = "";
+ productForm.value.thickness = null;
+
+ if (!value) {
+ productForm.value.productCategory = "";
+ modelOptions.value = [];
+ return;
+ }
+
productForm.value.productCategory = findNodeById(productOptions.value, value);
modelList({ id: value }).then((res) => {
- modelOptions.value = res;
+ modelOptions.value = res || [];
});
};
const getProductModel = (value) => {
const index = modelOptions.value.findIndex((item) => item.id === value);
if (index !== -1) {
productForm.value.specificationModel = modelOptions.value[index].model;
+ const selectedModel = modelOptions.value[index];
+ const modelThickness =
+ selectedModel?.thickness ??
+ selectedModel?.modelThickness ??
+ selectedModel?.thick ??
+ null;
+ productForm.value.thickness =
+ modelThickness === null || modelThickness === undefined || modelThickness === ""
+ ? null
+ : Number(modelThickness);
} else {
productForm.value.specificationModel = null;
+ productForm.value.thickness = null;
}
};
+const filterProductCategoryNode = (value, data) => {
+ if (!value) return true;
+ return String(data?.label || "").toLowerCase().includes(String(value).toLowerCase());
+};
const findNodeById = (nodes, productId) => {
for (let i = 0; i < nodes.length; i++) {
if (nodes[i].value === productId) {
--
Gitblit v1.9.3