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 {