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" > 搜索中…