From fd26b766a3738b6ca8bbd36bcd5b34c46091ed9b Mon Sep 17 00:00:00 2001 From: kx_guo Date: Thu, 10 Sep 2026 17:33:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E5=85=A8=E7=A7=B0=E6=90=9C=E7=B4=A2=E4=B8=8E=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/suppliers.ts | 4 ++++ src/pages/SupplierProfilePage.vue | 28 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/api/suppliers.ts b/src/api/suppliers.ts index 1fe4f44..2c5756a 100644 --- a/src/api/suppliers.ts +++ b/src/api/suppliers.ts @@ -5,6 +5,10 @@ export interface SupplierOption { name: string; anomalyCount: number; tier: string; + city?: string | null; + province?: string | null; + shortName?: string | null; + reviewStatus?: string | null; } export interface SupplierListData { items: SupplierOption[]; diff --git a/src/pages/SupplierProfilePage.vue b/src/pages/SupplierProfilePage.vue index 99b49d1..9f5d5a5 100644 --- a/src/pages/SupplierProfilePage.vue +++ b/src/pages/SupplierProfilePage.vue @@ -11,7 +11,7 @@ const route = useRoute(); const supplierNames = ref([]); const selected = ref(""); const supplierQuery = ref(""); -const supplierResults = ref([]); +const supplierResults = ref>([]); const supplierDropdownOpen = ref(false); const supplierSearching = ref(false); let supplierSearchTimer: ReturnType | undefined; @@ -95,7 +95,7 @@ async function loadOptions() { ? route.query.supplier : (response.data.data?.defaultSupplier ?? supplierNames.value[0] ?? ""); supplierQuery.value = selected.value; - supplierResults.value = supplierNames.value; + supplierResults.value = (response.data.data?.items ?? []).map((item) => ({ name: item.name, city: item.city, anomalyCount: item.anomalyCount, reviewStatus: item.reviewStatus })); if (selected.value) await loadProfile(); } catch { error.value = "供应商列表加载失败,请重试。"; @@ -105,7 +105,7 @@ async function loadOptions() { function openSupplierDropdown() { supplierDropdownOpen.value = true; if (!supplierQuery.value || supplierQuery.value === selected.value) { - supplierResults.value = supplierNames.value; + supplierResults.value = supplierNames.value.map((name) => ({ name, anomalyCount: 0 })); } } @@ -113,20 +113,19 @@ function searchSuppliers(value: string) { if (supplierSearchTimer) clearTimeout(supplierSearchTimer); const keyword = value.trim(); if (!keyword) { - supplierResults.value = supplierNames.value; + supplierResults.value = supplierNames.value.map((name) => ({ name, anomalyCount: 0 })); supplierSearching.value = false; return; } const local = supplierNames.value.filter((name) => matchesSupplier(name, keyword)); - supplierResults.value = local; + supplierResults.value = local.map((name) => ({ name, anomalyCount: 0 })); supplierSearching.value = true; supplierSearchTimer = setTimeout(async () => { try { const response = await fetchSupplierOptions(keyword); - supplierResults.value = - response.data.data?.items.map((item) => item.name) ?? []; + supplierResults.value = (response.data.data?.items ?? []).map((item) => ({ name: item.name, city: item.city, anomalyCount: item.anomalyCount, reviewStatus: item.reviewStatus })); } catch { - supplierResults.value = local; + supplierResults.value = local.map((name) => ({ name, anomalyCount: 0 })); } finally { supplierSearching.value = false; } @@ -235,16 +234,17 @@ watch( role="listbox" > 搜索中…