useDashboardDataApi.ts
2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import type {
DashboardOverviewExportResponse,
DashboardOverviewQuery,
DashboardOverviewResponse,
Mail,
Notification,
User
} from '~/types'
import { createSharedComposable } from '@vueuse/core'
const _useDashboardDataApi = () => {
const api = useApiGateway()
const buildDashboardQuery = (query: DashboardOverviewQuery) => {
const params = new URLSearchParams()
if (query.start) {
params.set('start', query.start)
}
if (query.end) {
params.set('end', query.end)
}
if (query.line) {
params.set('line', query.line)
}
if (query.workOrderStatus) {
params.set('workOrderStatus', query.workOrderStatus)
}
const search = params.toString()
return search.length > 0 ? `?${search}` : ''
}
const getCustomers = () => {
return api.useApiFetch<User[]>('/api/customers', {
default: () => []
})
}
const getMails = () => {
return api.useApiFetch<Mail[]>('/api/mails', {
default: () => []
})
}
const getNotifications = () => {
return api.useApiFetch<Notification[]>('/api/notifications', {
default: () => []
})
}
const getDashboardOverview = async (query: DashboardOverviewQuery) => {
const suffix = buildDashboardQuery(query)
return api.request<DashboardOverviewResponse>(`/api/dashboard/overview${suffix}`, {
method: 'GET',
auth: true
})
}
const exportDashboardOverview = async (query: DashboardOverviewQuery) => {
const suffix = buildDashboardQuery(query)
try {
const result = await api.request<DashboardOverviewExportResponse>(`/api/dashboard/overview/export${suffix}`, {
method: 'GET',
auth: true
})
return result
} catch {
return {
success: false,
errorCode: 'REQUEST_FAILED',
message: '导出失败,请稍后重试。'
} satisfies DashboardOverviewExportResponse
}
}
return {
getCustomers,
getMails,
getNotifications,
getDashboardOverview,
exportDashboardOverview
}
}
export const useDashboardDataApi = createSharedComposable(_useDashboardDataApi)