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