feat(admin): 补齐管理员账号与客服运营长尾页
This commit is contained in:
@@ -59,6 +59,25 @@ import type {
|
||||
AdminSupportGroup,
|
||||
AdminSupportGroupPayload,
|
||||
AdminSupportMember,
|
||||
AdminStaffAccount,
|
||||
AdminStaffAccountPage,
|
||||
AdminStaffAccountQuery,
|
||||
AdminStaffCreatePayload,
|
||||
AdminStaffUpdatePayload,
|
||||
AdminManualEntry,
|
||||
AdminManualEntryAgentStat,
|
||||
AdminManualEntryOption,
|
||||
AdminManualEntryOptions,
|
||||
AdminManualEntryPage,
|
||||
AdminManualEntryPayload,
|
||||
AdminManualEntryQuery,
|
||||
AdminQuickReply,
|
||||
AdminQuickReplyPayload,
|
||||
AdminTrackingLink,
|
||||
AdminTrackingLinkPage,
|
||||
AdminTrackingLinkPayload,
|
||||
AdminTrackingLinkQuery,
|
||||
AdminTrackingOverview,
|
||||
AdminSyncSiteAccountsPayload,
|
||||
AdminSyncSiteAccountsResult,
|
||||
AdminSystemConfig,
|
||||
@@ -1082,6 +1101,198 @@ export async function assignAdminSupportGroupMembers(id: number, memberIds: numb
|
||||
})
|
||||
}
|
||||
|
||||
export async function fetchAdminStaffAccounts(query: AdminStaffAccountQuery = {}) {
|
||||
const { data } = await adminClient.get<ApiResponse<Partial<AdminStaffAccountPage>>>(
|
||||
'/admin/admin-users',
|
||||
{ params: compactParams(query) }
|
||||
)
|
||||
return {
|
||||
items: data.data.items ?? [],
|
||||
total: data.data.total ?? 0,
|
||||
page: data.data.page ?? query.page ?? 1,
|
||||
page_size: data.data.page_size ?? query.page_size ?? 20,
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchAdminStaffAccount(id: number) {
|
||||
const { data } = await adminClient.get<ApiResponse<AdminStaffAccount>>(
|
||||
`/admin/admin-users/${id}`
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function createAdminStaffAccount(payload: AdminStaffCreatePayload) {
|
||||
const { data } = await adminClient.post<ApiResponse<AdminStaffAccount>>(
|
||||
'/admin/admin-users',
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function updateAdminStaffAccount(id: number, payload: AdminStaffUpdatePayload) {
|
||||
const { data } = await adminClient.put<ApiResponse<AdminStaffAccount>>(
|
||||
`/admin/admin-users/${id}`,
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function deleteAdminStaffAccount(id: number) {
|
||||
await adminClient.delete(`/admin/admin-users/${id}`)
|
||||
}
|
||||
|
||||
export async function assignAdminStaffRoles(id: number, roleIds: number[]) {
|
||||
await adminClient.put(`/admin/admin-users/${id}/roles`, { role_ids: roleIds })
|
||||
}
|
||||
|
||||
export async function resetAdminStaffPassword(id: number, newPassword: string) {
|
||||
await adminClient.put(`/admin/admin-users/${id}/password`, { new_password: newPassword })
|
||||
}
|
||||
|
||||
export async function fetchAdminManualEntries(query: AdminManualEntryQuery = {}) {
|
||||
const { data } = await adminClient.get<ApiResponse<Partial<AdminManualEntryPage>>>(
|
||||
'/admin/manual-entries',
|
||||
{ params: compactParams(query) }
|
||||
)
|
||||
return {
|
||||
items: data.data.items ?? [],
|
||||
total: data.data.total ?? 0,
|
||||
page: data.data.page ?? query.page ?? 1,
|
||||
page_size: data.data.page_size ?? query.page_size ?? 20,
|
||||
}
|
||||
}
|
||||
|
||||
export async function createAdminManualEntry(payload: AdminManualEntryPayload) {
|
||||
const { data } = await adminClient.post<ApiResponse<{ entry: AdminManualEntry }>>(
|
||||
'/admin/manual-entries',
|
||||
payload
|
||||
)
|
||||
return data.data.entry
|
||||
}
|
||||
|
||||
export async function updateAdminManualEntry(id: number, payload: AdminManualEntryPayload) {
|
||||
const { data } = await adminClient.put<ApiResponse<AdminManualEntry>>(
|
||||
`/admin/manual-entries/${id}`,
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function deleteAdminManualEntry(id: number) {
|
||||
await adminClient.delete(`/admin/manual-entries/${id}`)
|
||||
}
|
||||
|
||||
export async function fetchAdminManualEntryOptions() {
|
||||
const { data } = await adminClient.get<ApiResponse<AdminManualEntryOptions>>(
|
||||
'/admin/manual-entries/options'
|
||||
)
|
||||
return {
|
||||
platforms: data.data?.platforms ?? [],
|
||||
operators: data.data?.operators ?? [],
|
||||
}
|
||||
}
|
||||
|
||||
export async function createAdminManualEntryOption(payload: { type: string; name: string }) {
|
||||
const { data } = await adminClient.post<ApiResponse<AdminManualEntryOption>>(
|
||||
'/admin/manual-entries/options',
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function updateAdminManualEntryOption(id: number, name: string) {
|
||||
const { data } = await adminClient.put<ApiResponse<AdminManualEntryOption>>(
|
||||
`/admin/manual-entries/options/${id}`,
|
||||
{ name }
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function deleteAdminManualEntryOption(id: number) {
|
||||
await adminClient.delete(`/admin/manual-entries/options/${id}`)
|
||||
}
|
||||
|
||||
export async function fetchAdminManualEntryTodayStats() {
|
||||
const { data } = await adminClient.get<ApiResponse<AdminManualEntryAgentStat[]>>(
|
||||
'/admin/manual-entries/today-stats'
|
||||
)
|
||||
return data.data ?? []
|
||||
}
|
||||
|
||||
export async function fetchAdminQuickReplies() {
|
||||
const { data } = await adminClient.get<ApiResponse<AdminQuickReply[]>>(
|
||||
'/admin/chats/quick-replies'
|
||||
)
|
||||
return data.data ?? []
|
||||
}
|
||||
|
||||
export async function createAdminQuickReply(payload: AdminQuickReplyPayload) {
|
||||
const { data } = await adminClient.post<ApiResponse<AdminQuickReply>>(
|
||||
'/admin/chats/quick-replies',
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function updateAdminQuickReply(id: number, payload: AdminQuickReplyPayload) {
|
||||
const { data } = await adminClient.put<ApiResponse<AdminQuickReply>>(
|
||||
`/admin/chats/quick-replies/${id}`,
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function deleteAdminQuickReply(id: number) {
|
||||
await adminClient.delete(`/admin/chats/quick-replies/${id}`)
|
||||
}
|
||||
|
||||
export async function fetchAdminTrackingLinks(query: AdminTrackingLinkQuery = {}) {
|
||||
const { data } = await adminClient.get<ApiResponse<Partial<AdminTrackingLinkPage>>>(
|
||||
'/admin/tracking-links',
|
||||
{ params: compactParams(query) }
|
||||
)
|
||||
return {
|
||||
items: data.data.items ?? [],
|
||||
total: data.data.total ?? 0,
|
||||
page: data.data.page ?? query.page ?? 1,
|
||||
page_size: data.data.page_size ?? query.page_size ?? 20,
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchAdminTrackingOverview() {
|
||||
const { data } = await adminClient.get<ApiResponse<AdminTrackingOverview>>(
|
||||
'/admin/tracking-links/overview'
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function createAdminTrackingLink(payload: AdminTrackingLinkPayload) {
|
||||
const { data } = await adminClient.post<ApiResponse<AdminTrackingLink>>(
|
||||
'/admin/tracking-links',
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function updateAdminTrackingLink(id: number, payload: AdminTrackingLinkPayload) {
|
||||
const { data } = await adminClient.put<ApiResponse<AdminTrackingLink>>(
|
||||
`/admin/tracking-links/${id}`,
|
||||
payload
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function updateAdminTrackingLinkStatus(id: number, status: string) {
|
||||
const { data } = await adminClient.put<ApiResponse<AdminTrackingLink>>(
|
||||
`/admin/tracking-links/${id}/status`,
|
||||
{ status }
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
export async function fetchFinanceDisbursements(query: FinanceDisbursementQuery) {
|
||||
const { data } = await adminClient.get<ApiResponse<Partial<FinanceDisbursementPage>>>(
|
||||
'/admin/finance/disbursements',
|
||||
|
||||
Reference in New Issue
Block a user