From daafdcaed7b5f1a50b0c00f490e16e62733fac9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Sat, 11 Jul 2026 17:20:57 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=B8=9A=E5=8A=A1=E5=91=98=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E7=BB=B4=E5=BA=A6=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promoter/PromoterDetailModal.vue | 162 +++++- .../business/order/product-order/index.vue | 47 +- .../views/system/admin/_shared/admin-page.vue | 13 + .../system/admin/_shared/table-config.ts | 43 +- .../system/salesperson-dashboard/api/index.ts | 65 +++ .../components/CompareTrendChart.vue | 83 +++ .../components/DashboardStatCard.vue | 184 ++++++ .../components/DashboardStatGrid.vue | 57 ++ .../components/InputCountTrendChart.vue | 86 +++ .../components/RankingList.vue | 181 ++++++ .../components/RegionDistributionChart.vue | 124 ++++ .../system/salesperson-dashboard/index.vue | 544 ++++++++++++++++++ .../src/views/system/store-input/api/index.ts | 16 +- 13 files changed, 1573 insertions(+), 32 deletions(-) create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/api/index.ts create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/components/CompareTrendChart.vue create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatCard.vue create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatGrid.vue create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/components/InputCountTrendChart.vue create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/components/RankingList.vue create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/components/RegionDistributionChart.vue create mode 100644 apps/web-antd/src/views/system/salesperson-dashboard/index.vue diff --git a/apps/web-antd/src/components/promoter/PromoterDetailModal.vue b/apps/web-antd/src/components/promoter/PromoterDetailModal.vue index e826ec33..f04b899d 100644 --- a/apps/web-antd/src/components/promoter/PromoterDetailModal.vue +++ b/apps/web-antd/src/components/promoter/PromoterDetailModal.vue @@ -1,14 +1,27 @@ + + + + diff --git a/apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatCard.vue b/apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatCard.vue new file mode 100644 index 00000000..32185946 --- /dev/null +++ b/apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatCard.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatGrid.vue b/apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatGrid.vue new file mode 100644 index 00000000..3dc3e114 --- /dev/null +++ b/apps/web-antd/src/views/system/salesperson-dashboard/components/DashboardStatGrid.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/apps/web-antd/src/views/system/salesperson-dashboard/components/InputCountTrendChart.vue b/apps/web-antd/src/views/system/salesperson-dashboard/components/InputCountTrendChart.vue new file mode 100644 index 00000000..e449fb68 --- /dev/null +++ b/apps/web-antd/src/views/system/salesperson-dashboard/components/InputCountTrendChart.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/apps/web-antd/src/views/system/salesperson-dashboard/components/RankingList.vue b/apps/web-antd/src/views/system/salesperson-dashboard/components/RankingList.vue new file mode 100644 index 00000000..a82f3535 --- /dev/null +++ b/apps/web-antd/src/views/system/salesperson-dashboard/components/RankingList.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/apps/web-antd/src/views/system/salesperson-dashboard/components/RegionDistributionChart.vue b/apps/web-antd/src/views/system/salesperson-dashboard/components/RegionDistributionChart.vue new file mode 100644 index 00000000..d0ae9c2a --- /dev/null +++ b/apps/web-antd/src/views/system/salesperson-dashboard/components/RegionDistributionChart.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/apps/web-antd/src/views/system/salesperson-dashboard/index.vue b/apps/web-antd/src/views/system/salesperson-dashboard/index.vue new file mode 100644 index 00000000..2329d934 --- /dev/null +++ b/apps/web-antd/src/views/system/salesperson-dashboard/index.vue @@ -0,0 +1,544 @@ + + + + + + + + + + diff --git a/apps/web-antd/src/views/system/store-input/api/index.ts b/apps/web-antd/src/views/system/store-input/api/index.ts index f4449cca..9e2cc069 100644 --- a/apps/web-antd/src/views/system/store-input/api/index.ts +++ b/apps/web-antd/src/views/system/store-input/api/index.ts @@ -50,6 +50,16 @@ export async function getPromoterOptions() { }[]>(`${prefix}promoter-options`); } +export type PromoterStoreListItem = { + store_id: number; + name: string; + type: number; + type_label: string; + input_at: number; + total_amount: string; + month_amount: string; +}; + export async function getPromoterDetailApi(params: { id?: number; code?: string }) { return requestClient.get<{ id: number; @@ -58,10 +68,12 @@ export async function getPromoterDetailApi(params: { id?: number; code?: string code: string; phone: string; role_name: string; - clinic_input_count: number; - pharmacy_input_count: number; clinic_store_count: number; pharmacy_store_count: number; + store_total_count: number; + store_list: PromoterStoreListItem[]; + total_valid_amount: string; + month_valid_amount: string; }>(`${prefix}promoter-detail`, { params }); }