From 1fb93e6b16c80213e53c9dd2a76f5c0c031c0a93 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Thu, 6 Aug 2026 06:15:34 -0600 Subject: [PATCH] =?UTF-8?q?refactor(reaction):=20=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E7=BB=9F=E8=AE=A1=E7=8B=AC=E7=AB=8B=E6=88=90?= =?UTF-8?q?=20reaction=20=E7=9B=AE=E5=BD=95=EF=BC=8C=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E3=80=81=E5=8A=A0=E6=9C=80=E8=BF=91=E8=AF=84?= =?UTF-8?q?=E4=BB=B7=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 --- src/admin/api.ts | 9 +--- .../reactions.vue => reaction/list.vue} | 43 ++++++------------- src/routes.ts | 2 +- src/shared/layout/admin.vue | 2 +- src/utils/types.ts | 1 + 5 files changed, 18 insertions(+), 39 deletions(-) rename src/admin/{communication/reactions.vue => reaction/list.vue} (69%) 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 {