重构:迁移3个列表视图到useAdminListPage + 提取useAdminAction组合式函数
This commit is contained in:
@@ -1,17 +1,14 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from 'vue'
|
||||
import { computed, ref } from 'vue'
|
||||
|
||||
import { useAdminListPage } from '@/composables/useAdminListPage'
|
||||
import AdminPageHeader from '@/components/admin/AdminPageHeader.vue'
|
||||
import AdminStatusTag from '@/components/admin/AdminStatusTag.vue'
|
||||
import { fetchAdminMessageDeliveries } from '@/services/admin'
|
||||
import type { AdminMessageDeliveryListItem, AdminPagination } from '@/types/admin'
|
||||
import type { AdminMessageDeliveryListItem } from '@/types/admin'
|
||||
import { formatAdminDateTime } from '@/utils/admin-time'
|
||||
import { adminMessageDeliveryStatusOptions } from '@/utils/admin-options'
|
||||
|
||||
const loading = ref(true)
|
||||
const errorMessage = ref('')
|
||||
const items = ref<AdminMessageDeliveryListItem[]>([])
|
||||
|
||||
const provider = ref('agiso')
|
||||
const platform = ref('xianyu')
|
||||
const status = ref('')
|
||||
@@ -21,26 +18,18 @@ const taskNo = ref('')
|
||||
const dateFrom = ref('')
|
||||
const dateTo = ref('')
|
||||
|
||||
const pagination = ref<AdminPagination>({
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
total: 0,
|
||||
})
|
||||
|
||||
const summary = computed(() => ({
|
||||
successCount: items.value.filter((item) => item.status === 'success').length,
|
||||
failedCount: items.value.filter((item) => item.status === 'failed').length,
|
||||
pendingCount: items.value.filter((item) => item.status === 'pending').length,
|
||||
}))
|
||||
|
||||
async function loadMessageDeliveries(page = pagination.value.page) {
|
||||
loading.value = true
|
||||
errorMessage.value = ''
|
||||
|
||||
try {
|
||||
const response = await fetchAdminMessageDeliveries({
|
||||
const {
|
||||
loading,
|
||||
errorMessage,
|
||||
items,
|
||||
pagination,
|
||||
loadPage: loadMessageDeliveries,
|
||||
} = useAdminListPage<AdminMessageDeliveryListItem>({
|
||||
defaultErrorMessage: '读取消息发送记录失败',
|
||||
fetchPage: (page, pageSize) =>
|
||||
fetchAdminMessageDeliveries({
|
||||
page,
|
||||
pageSize: pagination.value.pageSize,
|
||||
pageSize,
|
||||
provider: provider.value.trim(),
|
||||
platform: platform.value.trim(),
|
||||
status: status.value.trim(),
|
||||
@@ -49,15 +38,14 @@ async function loadMessageDeliveries(page = pagination.value.page) {
|
||||
taskNo: taskNo.value.trim(),
|
||||
dateFrom: dateFrom.value.trim(),
|
||||
dateTo: dateTo.value.trim(),
|
||||
})
|
||||
items.value = response.data.items
|
||||
pagination.value = response.data.pagination
|
||||
} catch (error) {
|
||||
errorMessage.value = error instanceof Error ? error.message : '读取消息发送记录失败'
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
}),
|
||||
})
|
||||
|
||||
const summary = computed(() => ({
|
||||
successCount: items.value.filter((item) => item.status === 'success').length,
|
||||
failedCount: items.value.filter((item) => item.status === 'failed').length,
|
||||
pendingCount: items.value.filter((item) => item.status === 'pending').length,
|
||||
}))
|
||||
|
||||
function resetFilters() {
|
||||
provider.value = 'agiso'
|
||||
@@ -70,8 +58,6 @@ function resetFilters() {
|
||||
dateTo.value = ''
|
||||
void loadMessageDeliveries(1)
|
||||
}
|
||||
|
||||
onMounted(loadMessageDeliveries)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
Reference in New Issue
Block a user