diff --git a/src/admin/api.ts b/src/admin/api.ts index 0eae758..07a28ff 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -287,14 +287,9 @@ export function createAnnouncement(announcement: AnnouncementEdit) { return http.post("admin/announcement", announcement) } -export function getReactionStats( - offset = 0, - limit = 10, - problem: string, - ordering: string, -) { +export function getReactionStats(offset = 0, limit = 10, problem: string) { return http.get("admin/reaction", { - params: { offset, limit, problem, ordering }, + params: { offset, limit, problem }, }) } diff --git a/src/admin/communication/reactions.vue b/src/admin/reaction/list.vue similarity index 69% rename from src/admin/communication/reactions.vue rename to src/admin/reaction/list.vue index bf3ddac..995e9a5 100644 --- a/src/admin/communication/reactions.vue +++ b/src/admin/reaction/list.vue @@ -9,14 +9,7 @@ /> - + [] = [ @@ -58,8 +51,8 @@ const columns: DataTableColumn[] = [ () => row.pid, ), }, - { title: "标题", key: "title", minWidth: 180, ellipsis: true }, - { title: "表态人数", key: "users", width: 110, sorter: true }, + { title: "标题", key: "title", minWidth: 180 }, + { title: "表态人数", key: "users", width: 120 }, ...REACTIONS.map((item) => ({ title: () => h(NFlex, { align: "center", size: 4, wrap: false }, () => [ @@ -67,35 +60,25 @@ const columns: DataTableColumn[] = [ item.label, ]), key: item.key, - width: 110, - sorter: true, + width: 120, })), + { + title: "时间", + key: "last_time", + width: 180, + render: (row) => parseTime(row.last_time, "YYYY-MM-DD HH:mm:ss"), + }, ] -function handleSorter(sorter: { columnKey: string; order: string | false }) { - if (!sorter || !sorter.order) { - query.ordering = "-users" - } else { - query.ordering = - (sorter.order === "descend" ? "-" : "") + String(sorter.columnKey) - } - query.page = 1 -} - async function listStats() { const offset = (query.page - 1) * query.limit - const res = await getReactionStats( - offset, - query.limit, - query.problem, - query.ordering, - ) + const res = await getReactionStats(offset, query.limit, query.problem) rows.value = res.data.results total.value = res.data.total } onMounted(listStats) -watch(() => [query.page, query.limit, query.ordering], listStats) +watch(() => [query.page, query.limit], listStats) watchDebounced(() => query.problem, listStats, { debounce: 500, maxWait: 1000, diff --git a/src/routes.ts b/src/routes.ts index b50b7ad..443f63a 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -260,7 +260,7 @@ export const admins: RouteRecordRaw = { { path: "reaction/list", name: "admin reaction list", - component: () => import("admin/communication/reactions.vue"), + component: () => import("admin/reaction/list.vue"), meta: { requiresSuperAdmin: true }, }, { diff --git a/src/shared/layout/admin.vue b/src/shared/layout/admin.vue index 6521858..92a8b72 100644 --- a/src/shared/layout/admin.vue +++ b/src/shared/layout/admin.vue @@ -119,7 +119,7 @@ const options = computed(() => { h( RouterLink, { to: "/admin/reaction/list" }, - { default: () => "题目反馈" }, + { default: () => "反馈" }, ), key: "admin reaction list", }, diff --git a/src/utils/types.ts b/src/utils/types.ts index 91c2f95..1828d36 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -614,6 +614,7 @@ export interface ReactionStatsRow extends ReactionCounts { pid: string title: string users: number + last_time: string } export interface Tutorial {