diff --git a/src/api/im/manager/statistics/index.ts b/src/api/im/manager/statistics/index.ts index 675a5cd82..10d10fe5e 100644 --- a/src/api/im/manager/statistics/index.ts +++ b/src/api/im/manager/statistics/index.ts @@ -37,30 +37,34 @@ export interface ImStatisticsTopSenderVO { // 获得 KPI 概览 export const getStatisticsOverview = (): Promise => { - return request.get({ url: '/im/manager/statistics/overview' }) + return request.get({ url: '/im/manager/statistics/overview' }) } // 获得消息趋势(私聊 + 群聊双线) export const getMessageTrend = (days: number): Promise => { - return request.get({ url: '/im/manager/statistics/message-trend', params: { days } }) + return request.get({ url: '/im/manager/statistics/message-trend', params: { days } }) } // 获得用户趋势(新增注册 + 日活双线) export const getUserTrend = (days: number): Promise => { - return request.get({ url: '/im/manager/statistics/user-trend', params: { days } }) + return request.get({ url: '/im/manager/statistics/user-trend', params: { days } }) } // 获得消息类型分布(最近 30 天) export const getMessageTypeDistribution = (): Promise => { - return request.get({ url: '/im/manager/statistics/message-type-distribution' }) + return request.get({ + url: '/im/manager/statistics/message-type-distribution' + }) } // 获得群规模分布 export const getGroupSizeDistribution = (): Promise => { - return request.get({ url: '/im/manager/statistics/group-size-distribution' }) + return request.get({ + url: '/im/manager/statistics/group-size-distribution' + }) } // 获得消息 TOP 发送者(最近 30 天) export const getTopSenders = (): Promise => { - return request.get({ url: '/im/manager/statistics/top-senders' }) + return request.get({ url: '/im/manager/statistics/top-senders' }) } diff --git a/src/views/im/home/components/picker/GroupMemberPickerPanel.vue b/src/views/im/home/components/picker/GroupMemberPickerPanel.vue index ecb948be2..101dd79b6 100644 --- a/src/views/im/home/components/picker/GroupMemberPickerPanel.vue +++ b/src/views/im/home/components/picker/GroupMemberPickerPanel.vue @@ -84,13 +84,21 @@ - +
+ > + +
-
+
@@ -22,6 +22,7 @@ defineOptions({ name: 'ImStatisticsMessageTrendChart' }) const chartRef = ref() const days = ref(7) +const loading = ref(false) let chart: echarts.ECharts | null = null const buildOption = (dates: string[], priv: number[], grp: number[]): echarts.EChartsCoreOption => ({ @@ -71,8 +72,13 @@ const buildOption = (dates: string[], priv: number[], grp: number[]): echarts.EC }) const loadData = async () => { - const data = await StatisticsApi.getMessageTrend(days.value) - chart?.setOption(buildOption(data.dates, data.series.private || [], data.series.group || [])) + loading.value = true + try { + const data = await StatisticsApi.getMessageTrend(days.value) + chart?.setOption(buildOption(data.dates, data.series.private || [], data.series.group || [])) + } finally { + loading.value = false + } } onMounted(async () => { diff --git a/src/views/im/manager/statistics/components/UserTrendChart.vue b/src/views/im/manager/statistics/components/UserTrendChart.vue index 56e1bf426..d218d8e34 100644 --- a/src/views/im/manager/statistics/components/UserTrendChart.vue +++ b/src/views/im/manager/statistics/components/UserTrendChart.vue @@ -10,7 +10,7 @@ -
+
@@ -22,6 +22,7 @@ defineOptions({ name: 'ImStatisticsUserTrendChart' }) const chartRef = ref() const days = ref(7) +const loading = ref(false) let chart: echarts.ECharts | null = null const buildOption = (dates: string[], reg: number[], act: number[]): echarts.EChartsCoreOption => ({ @@ -50,8 +51,13 @@ const buildOption = (dates: string[], reg: number[], act: number[]): echarts.ECh }) const loadData = async () => { - const data = await StatisticsApi.getUserTrend(days.value) - chart?.setOption(buildOption(data.dates, data.series.register || [], data.series.active || [])) + loading.value = true + try { + const data = await StatisticsApi.getUserTrend(days.value) + chart?.setOption(buildOption(data.dates, data.series.register || [], data.series.active || [])) + } finally { + loading.value = false + } } onMounted(async () => {