6
6
<el-select v-model =" accountId" @change =" getSummary" >
7
7
<el-option
8
8
v-for =" item in accountList"
9
- :key =" parseInt( item.id) "
9
+ :key =" item.id"
10
10
:label =" item.name"
11
- :value =" parseInt( item.id) "
11
+ :value =" item.id"
12
12
/>
13
13
</el-select >
14
14
</el-form-item >
37
37
<span >用户增减数据</span >
38
38
</div >
39
39
</template >
40
- <div class =" el-table el-table--enable-row-hover el-table--medium" >
41
- <div ref =" userSummaryChartRef" style =" height : 420px " ></div >
42
- </div >
40
+ <Echart :options =" userSummaryOption" :height =" 420" />
43
41
</el-card >
44
42
</el-col >
45
43
<el-col :span =" 12" class =" card-box" >
49
47
<span >累计用户数据</span >
50
48
</div >
51
49
</template >
52
- <div class =" el-table el-table--enable-row-hover el-table--medium" >
53
- <div ref =" userCumulateChartRef" style =" height : 420px " ></div >
54
- </div >
50
+ <Echart :options =" userCumulateOption" :height =" 420" />
55
51
</el-card >
56
52
</el-col >
57
53
<el-col :span =" 12" class =" card-box" >
61
57
<span >消息概况数据</span >
62
58
</div >
63
59
</template >
64
- <div class =" el-table el-table--enable-row-hover el-table--medium" >
65
- <div ref =" upstreamMessageChartRef" style =" height : 420px " ></div >
66
- </div >
60
+ <Echart :options =" upstreamMessageOption" :height =" 420" />
67
61
</el-card >
68
62
</el-col >
69
63
<el-col :span =" 12" class =" card-box" >
73
67
<span >接口分析数据</span >
74
68
</div >
75
69
</template >
76
- <div class =" el-table el-table--enable-row-hover el-table--medium" >
77
- <div ref =" interfaceSummaryChartRef" style =" height : 420px " ></div >
78
- </div >
70
+ <Echart :options =" interfaceSummaryOption" :height =" 420" />
79
71
</el-card >
80
72
</el-col >
81
73
</el-row >
82
74
</content-wrap >
83
75
</template >
84
76
85
77
<script setup lang="ts" name="MpStatistics">
86
- import * as echarts from ' echarts'
87
- import {
88
- getInterfaceSummary ,
89
- getUpstreamMessage ,
90
- getUserCumulate ,
91
- getUserSummary
92
- } from ' @/api/mp/statistics' // TODO 改成 StatisticsApi 整体引入
93
- import { addTime , beginOfDay , betweenDay , endOfDay } from ' @/utils/dateUtils' // TODO 可以改到 formatTime 里
94
- import { formatDate } from ' @/utils/formatTime'
78
+ import * as StatisticsApi from ' @/api/mp/statistics'
79
+ import { formatDate , addTime , betweenDay , beginOfDay , endOfDay } from ' @/utils/formatTime'
95
80
import * as MpAccountApi from ' @/api/mp/account'
96
81
const message = useMessage () // 消息弹窗
97
82
83
+ // 默认时间 开始时间00:00:00 结束时间23:59:59
98
84
const defaultTime = ref <[Date , Date ]>([
99
85
new Date (2000 , 1 , 1 , 0 , 0 , 0 ),
100
86
new Date (2000 , 2 , 1 , 23 , 59 , 59 )
101
87
])
88
+ // 默认开始时间是当前日期-7,结束时间是当前日期-1
102
89
const dateRange = ref ([
103
90
beginOfDay (new Date (new Date ().getTime () - 3600 * 1000 * 24 * 7 )),
104
91
endOfDay (new Date (new Date ().getTime () - 3600 * 1000 * 24 ))
105
- ]) // -1 天
92
+ ])
106
93
const accountId = ref ()
107
94
const accountList = ref <MpAccountApi .AccountVO []>([]) // 公众号账号列表
108
95
109
- const userSummaryChartRef = ref ()
110
- const userCumulateChartRef = ref ()
111
- const upstreamMessageChartRef = ref ()
112
- const interfaceSummaryChartRef = ref ()
113
- // TODO 看看能不能用 https://kailong110120130.gitee.io/vue-element-plus-admin-doc/components/echart.html 组件
114
96
const xAxisDate = ref ([] as any []) // X 轴的日期范围
97
+ // 用户增减数据图表配置项
115
98
const userSummaryOption = reactive ({
116
- // 用户增减数据
117
- color: [' #67C23A' , ' #e5323e' ],
99
+ color: [' #67C23A' , ' #E5323E' ],
118
100
legend: {
119
101
data: [' 新增用户' , ' 取消关注的用户' ]
120
102
},
@@ -145,8 +127,8 @@ const userSummaryOption = reactive({
145
127
}
146
128
]
147
129
})
130
+ // 累计用户数据图表配置项
148
131
const userCumulateOption = reactive ({
149
- // 累计用户数据
150
132
legend: {
151
133
data: [' 累计用户量' ]
152
134
},
@@ -169,9 +151,9 @@ const userCumulateOption = reactive({
169
151
}
170
152
]
171
153
})
154
+ // 消息发送概况数据图表配置项
172
155
const upstreamMessageOption = reactive ({
173
- // 消息发送概况数据
174
- color: [' #67C23A' , ' #e5323e' ],
156
+ color: [' #67C23A' , ' #E5323E' ],
175
157
legend: {
176
158
data: [' 用户发送人数' , ' 用户发送条数' ]
177
159
},
@@ -203,9 +185,9 @@ const upstreamMessageOption = reactive({
203
185
}
204
186
]
205
187
})
188
+ // 接口分析况数据图表配置项
206
189
const interfaceSummaryOption = reactive ({
207
- // 接口分析况数据
208
- color: [' #67C23A' , ' #e5323e' , ' #E6A23C' , ' #409EFF' ],
190
+ color: [' #67C23A' , ' #E5323E' , ' #E6A23C' , ' #409EFF' ],
209
191
legend: {
210
192
data: [' 被动回复用户消息的次数' , ' 失败次数' , ' 最大耗时' , ' 总耗时' ]
211
193
},
@@ -260,7 +242,7 @@ const getAccountList = async () => {
260
242
}
261
243
}
262
244
263
- // TODO 一些方法的注释补全下
245
+ /** 加载数据 */
264
246
const getSummary = () => {
265
247
// 如果没有选中公众号账号,则进行提示。
266
248
if (! accountId ) {
@@ -272,30 +254,33 @@ const getSummary = () => {
272
254
message .error (' 时间间隔 7 天以内,请重新选择' )
273
255
return false
274
256
}
257
+ // 清空横坐标日期
275
258
xAxisDate .value = []
259
+ // 横坐标加载日期数据
276
260
const days = betweenDay (dateRange .value [0 ], dateRange .value [1 ]) // 相差天数
277
261
for (let i = 0 ; i <= days ; i ++ ) {
278
262
xAxisDate .value .push (
279
263
formatDate (addTime (dateRange .value [0 ], 3600 * 1000 * 24 * i ), ' YYYY-MM-DD' )
280
264
)
281
265
}
282
-
283
266
// 初始化图表
284
267
initUserSummaryChart ()
285
268
initUserCumulateChart ()
286
269
initUpstreamMessageChart ()
287
270
interfaceSummaryChart ()
288
271
}
289
-
272
+ /** 用户增减数据 */
290
273
const initUserSummaryChart = async () => {
291
274
userSummaryOption .xAxis .data = []
292
275
userSummaryOption .series [0 ].data = []
293
276
userSummaryOption .series [1 ].data = []
294
277
try {
295
- const data = await getUserSummary ({
278
+ // 用户增减数据
279
+ const data = await StatisticsApi .getUserSummary ({
296
280
accountId: accountId .value ,
297
281
date: [formatDate (dateRange .value [0 ]), formatDate (dateRange .value [1 ])]
298
282
})
283
+ // 横坐标
299
284
userSummaryOption .xAxis .data = xAxisDate .value
300
285
// 处理数据
301
286
xAxisDate .value .forEach ((date , index ) => {
@@ -310,18 +295,15 @@ const initUserSummaryChart = async () => {
310
295
userSummaryOption .series [1 ].data [index ] = item .cancelUser
311
296
})
312
297
})
313
- // 绘制图表
314
- const userSummaryChart = echarts .init (userSummaryChartRef .value )
315
- userSummaryChart .setOption (userSummaryOption )
316
298
} catch {}
317
299
}
318
-
300
+ /** 累计用户数据 */
319
301
const initUserCumulateChart = async () => {
320
302
userCumulateOption .xAxis .data = []
321
303
userCumulateOption .series [0 ].data = []
322
304
// 发起请求
323
305
try {
324
- const data = await getUserCumulate ({
306
+ const data = await StatisticsApi . getUserCumulate ({
325
307
accountId: accountId .value ,
326
308
date: [formatDate (dateRange .value [0 ]), formatDate (dateRange .value [1 ])]
327
309
})
@@ -330,18 +312,16 @@ const initUserCumulateChart = async () => {
330
312
data .forEach ((item , index ) => {
331
313
userCumulateOption .series [0 ].data [index ] = item .cumulateUser
332
314
})
333
- // 绘制图表
334
- const userCumulateChart = echarts .init (userCumulateChartRef .value )
335
- userCumulateChart .setOption (userCumulateOption )
336
315
} catch {}
337
316
}
317
+ /** 消息概况数据 */
338
318
const initUpstreamMessageChart = async () => {
339
319
upstreamMessageOption .xAxis .data = []
340
320
upstreamMessageOption .series [0 ].data = []
341
321
upstreamMessageOption .series [1 ].data = []
342
322
// 发起请求
343
323
try {
344
- const data = await getUpstreamMessage ({
324
+ const data = await StatisticsApi . getUpstreamMessage ({
345
325
accountId: accountId .value ,
346
326
date: [formatDate (dateRange .value [0 ]), formatDate (dateRange .value [1 ])]
347
327
})
@@ -351,11 +331,9 @@ const initUpstreamMessageChart = async () => {
351
331
upstreamMessageOption .series [0 ].data [index ] = item .messageUser
352
332
upstreamMessageOption .series [1 ].data [index ] = item .messageCount
353
333
})
354
- // 绘制图表
355
- const upstreamMessageChart = echarts .init (upstreamMessageChartRef .value )
356
- upstreamMessageChart .setOption (upstreamMessageOption )
357
334
} catch {}
358
335
}
336
+ /** 接口分析数据 */
359
337
const interfaceSummaryChart = async () => {
360
338
interfaceSummaryOption .xAxis .data = []
361
339
interfaceSummaryOption .series [0 ].data = []
@@ -364,7 +342,7 @@ const interfaceSummaryChart = async () => {
364
342
interfaceSummaryOption .series [3 ].data = []
365
343
// 发起请求
366
344
try {
367
- const data = await getInterfaceSummary ({
345
+ const data = await StatisticsApi . getInterfaceSummary ({
368
346
accountId: accountId .value ,
369
347
date: [formatDate (dateRange .value [0 ]), formatDate (dateRange .value [1 ])]
370
348
})
@@ -376,9 +354,6 @@ const interfaceSummaryChart = async () => {
376
354
interfaceSummaryOption .series [2 ].data [index ] = item .maxTimeCost
377
355
interfaceSummaryOption .series [3 ].data [index ] = item .totalTimeCost
378
356
})
379
- // 绘制图表
380
- const interfaceSummaryChart = echarts .init (interfaceSummaryChartRef .value )
381
- interfaceSummaryChart .setOption (interfaceSummaryOption )
382
357
} catch {}
383
358
}
384
359
0 commit comments