From 134a417eb1ace06d2902af431491db69d5ea7329 Mon Sep 17 00:00:00 2001 From: zhongzm Date: Tue, 14 Jan 2025 14:09:27 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E9=A6=96=E9=A1=B5=E4=BB=AA?= =?UTF-8?q?=E8=A1=A8=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/api/auth.ts | 9 + src/typings/api.d.ts | 77 +++--- src/typings/auto-imports.d.ts | 1 + src/views/dashboard/modules/card-data.vue | 248 ++++++++++-------- src/views/dashboard/modules/header-banner.vue | 116 ++++++-- 5 files changed, 279 insertions(+), 172 deletions(-) diff --git a/src/service/api/auth.ts b/src/service/api/auth.ts index e46bee5..cb674bd 100644 --- a/src/service/api/auth.ts +++ b/src/service/api/auth.ts @@ -209,6 +209,15 @@ export function getDashboardOverview() { method: 'get' }); } +/** 获取仪表盘站点列表 */ +export function getDashboardSiteList(params: { pageNum: number; pageSize: number; name?: string }) { + return request({ + url: '/system/dashboard/page', + method: 'get', + params + }); +} + diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 475b304..434079b 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -608,44 +608,59 @@ declare namespace Api { } } + interface DashboardOverview { cloud: { connected: boolean; }; - sites: { - total: number; - countries: number; - connected: number; - disconnected: number; - }; + siteNum: number; devices: { - gateways: { - connected: number; - disconnected: number; - }; - switches: { - connected: number; - disconnected: number; - }; - olts: { - connected: number; - disconnected: number; - }; - ap: { - connected: number; - disconnected: number; - isolated: number; - }; + totalGatewayNum: number; + connectedGatewayNum: number; + disconnectedGatewayNum: number; + totalSwitchNum: number; + connectedSwitchNum: number; + disconnectedSwitchNum: number; + totalApNum: number; + connectedApNum: number; + disconnectedApNum: number; + isolatedApNum: number; }; client: { - wiredUsers: number; - wirelessUsers: number; - wirelessGuests: number; - }; - alerts: number; - users: { - registered: number; - online: number; + totalClientNum: number; + wiredClientNum: number; + wirelessClientNum: number; + guestNum: number; }; + registerUserNum: number; + onlineUserNum: number; + } + interface DashboardSite { + siteId: string; + name: string; + region: string; + tagIds: string[]; + timeZone: string; + scenario: string; + totalGatewayNum: number; + connectedGatewayNum: number; + disconnectedGatewayNum: number; + totalSwitchNum: number; + connectedSwitchNum: number; + disconnectedSwitchNum: number; + totalApNum: number; + connectedApNum: number; + disconnectedApNum: number; + isolatedApNum: number; + totalClientNum: number; + wiredClientNum: number; + wirelessClientNum: number; + guestNum: number; + } + + + interface DashboardSiteResponse { + rows: DashboardSite[]; + total: number; } } diff --git a/src/typings/auto-imports.d.ts b/src/typings/auto-imports.d.ts index 05bd787..e5a4198 100644 --- a/src/typings/auto-imports.d.ts +++ b/src/typings/auto-imports.d.ts @@ -153,6 +153,7 @@ declare global { const getCurrentInstance: typeof import('vue')['getCurrentInstance'] const getCurrentScope: typeof import('vue')['getCurrentScope'] const getDashboardOverview: typeof import('../service/api/auth')['getDashboardOverview'] + const getDashboardSiteList: typeof import('../service/api/auth')['getDashboardSiteList'] const getData: typeof import('../service/api/dictData')['getData'] const getDefaultHomeTab: typeof import('../store/modules/tab/shared')['getDefaultHomeTab'] const getDictDataType: typeof import('../service/api/dict')['getDictDataType'] diff --git a/src/views/dashboard/modules/card-data.vue b/src/views/dashboard/modules/card-data.vue index 670e7d2..324f3a9 100644 --- a/src/views/dashboard/modules/card-data.vue +++ b/src/views/dashboard/modules/card-data.vue @@ -1,5 +1,6 @@ - - - Import Site - - - - Add New Site - + + + + + + + + + + + + + + diff --git a/src/views/dashboard/modules/header-banner.vue b/src/views/dashboard/modules/header-banner.vue index 149105a..116478b 100644 --- a/src/views/dashboard/modules/header-banner.vue +++ b/src/views/dashboard/modules/header-banner.vue @@ -7,6 +7,8 @@ import { UserAddOutlined, UserSwitchOutlined } from '@ant-design/icons-vue'; +import { computed, ref, onMounted } from 'vue'; +import { getDashboardOverview } from '@/service/api/auth'; defineOptions({ name: 'HeaderBanner' @@ -14,25 +16,61 @@ defineOptions({ const overviewData = ref({ cloud: { connected: false }, - sites: { total: 0, countries: 0, connected: 0, disconnected: 0 }, + siteNum: 0, devices: { - gateways: { connected: 0, disconnected: 0 }, - switches: { connected: 0, disconnected: 0 }, - olts: { connected: 0, disconnected: 0 }, - ap: { connected: 0, disconnected: 0, isolated: 0 } + totalGatewayNum: 0, + connectedGatewayNum: 0, + disconnectedGatewayNum: 0, + totalSwitchNum: 0, + connectedSwitchNum: 0, + disconnectedSwitchNum: 0, + totalApNum: 0, + connectedApNum: 0, + disconnectedApNum: 0, + isolatedApNum: 0 }, - client: { wiredUsers: 0, wirelessUsers: 0, wirelessGuests: 0 }, - alerts: 0, - users: { registered: 0, online: 0 } + client: { + totalClientNum: 0, + wiredClientNum: 0, + wirelessClientNum: 0, + guestNum: 0 + }, + registerUserNum: 0, + onlineUserNum: 0 }); const fetchOverviewData = async () => { - // try { - // const data = await authStore.getDashboardOverview(); - // overviewData.value = data; - // } catch (error) { - // console.error('Failed to fetch overview data:', error); - // } + try { + const { data } = await getDashboardOverview(); + if (data) { + overviewData.value = { + cloud: { connected: data.cloud?.connected || false }, + siteNum: data.siteNum || 0, + devices: { + totalGatewayNum: data.devices?.totalGatewayNum || 0, + connectedGatewayNum: data.devices?.connectedGatewayNum || 0, + disconnectedGatewayNum: data.devices?.disconnectedGatewayNum || 0, + totalSwitchNum: data.devices?.totalSwitchNum || 0, + connectedSwitchNum: data.devices?.connectedSwitchNum || 0, + disconnectedSwitchNum: data.devices?.disconnectedSwitchNum || 0, + totalApNum: data.devices?.totalApNum || 0, + connectedApNum: data.devices?.connectedApNum || 0, + disconnectedApNum: data.devices?.disconnectedApNum || 0, + isolatedApNum: data.devices?.isolatedApNum || 0 + }, + client: { + totalClientNum: data.client?.totalClientNum || 0, + wiredClientNum: data.client?.wiredClientNum || 0, + wirelessClientNum: data.client?.wirelessClientNum || 0, + guestNum: data.client?.guestNum || 0 + }, + registerUserNum: data.registerUserNum || 0, + onlineUserNum: data.onlineUserNum || 0 + }; + } + } catch (error) { + console.error('Failed to fetch overview data:', error); + } }; onMounted(() => { @@ -40,18 +78,43 @@ onMounted(() => { }); const deviceStatus = computed(() => ({ - ap: overviewData.value.devices.ap, - client: overviewData.value.client, - alerts: overviewData.value.alerts, - users: overviewData.value.users + ap: { + connected: overviewData.value.devices.connectedApNum, + disconnected: overviewData.value.devices.disconnectedApNum, + isolated: overviewData.value.devices.isolatedApNum + }, + client: { + wiredUsers: overviewData.value.client.wiredClientNum, + wirelessUsers: overviewData.value.client.wirelessClientNum, + wirelessGuests: overviewData.value.client.guestNum + }, + users: { + registered: overviewData.value.registerUserNum, + online: overviewData.value.onlineUserNum + }, + alerts: 0 })); -const siteInfo = computed(() => overviewData.value.sites); +const siteInfo = computed(() => ({ + total: overviewData.value.siteNum +})); const otherDevices = computed(() => ({ - gateways: overviewData.value.devices.gateways, - switches: overviewData.value.devices.switches, - olts: overviewData.value.devices.olts + gateways: { + total: overviewData.value.devices.totalGatewayNum, + connected: overviewData.value.devices.connectedGatewayNum, + disconnected: overviewData.value.devices.disconnectedGatewayNum + }, + switches: { + total: overviewData.value.devices.totalSwitchNum, + connected: overviewData.value.devices.connectedSwitchNum, + disconnected: overviewData.value.devices.disconnectedSwitchNum + }, + olts: { + total: 0, + connected: 0, + disconnected: 0 + } })); @@ -87,9 +150,6 @@ const otherDevices = computed(() => ({
Total Sites: {{ siteInfo.total }} - Countries: {{ siteInfo.countries }} - Connected: {{ siteInfo.connected }} - Disconnected: {{ siteInfo.disconnected }}
@@ -130,7 +190,7 @@ const otherDevices = computed(() => ({
- {{ otherDevices.olts.connected + otherDevices.olts.disconnected }} + {{ otherDevices.olts.total }}
OLTs
@@ -213,8 +273,8 @@ const otherDevices = computed(() => ({
- Total: {{ deviceStatus.alerts }} - Active: {{ deviceStatus.alerts }} + Total: {{ deviceStatus.alerts || 0 }} + Active: {{ deviceStatus.alerts || 0 }}