feat(business): update audit, auth, course-plans, announcements, exams
- audit: update retention.ts, types.ts, audit-retention-settings.tsx - auth: update actions.ts and types.ts - course-plans: update actions.ts, course-plan-detail.tsx, template-picker-dialog.tsx, add lib/track-event.ts - announcements: update page.tsx, announcement-list.tsx, announcement-pagination.tsx - exams: update actions.ts
This commit is contained in:
@@ -35,14 +35,11 @@ export default async function AnnouncementsPage({
|
||||
PAGE_SIZE
|
||||
)
|
||||
|
||||
// 构建分页 URL:保留 ?status= 过滤参数(与 AnnouncementList 的过滤机制一致)
|
||||
const buildPageHref = (targetPage: number): string => {
|
||||
const params = new URLSearchParams()
|
||||
if (sp.status) params.set("status", sp.status)
|
||||
if (targetPage > 1) params.set("page", String(targetPage))
|
||||
const qs = params.toString()
|
||||
return qs ? `/announcements?${qs}` : "/announcements"
|
||||
}
|
||||
// v3: 不再将 buildPageHref 函数传给 Client Component(Server Component 不能传函数)。
|
||||
// 改为传 basePath + statusFilter,由 AnnouncementPagination 在客户端自行构建 URL。
|
||||
const statusFilter = sp.status === "published" || sp.status === "draft" || sp.status === "archived"
|
||||
? sp.status
|
||||
: "all"
|
||||
|
||||
return (
|
||||
<AnnouncementsServiceProvider>
|
||||
@@ -56,12 +53,13 @@ export default async function AnnouncementsPage({
|
||||
<AnnouncementList
|
||||
announcements={items}
|
||||
detailHrefPrefix="/announcements"
|
||||
initialStatus={sp.status === "published" || sp.status === "draft" || sp.status === "archived" ? sp.status : "all"}
|
||||
initialStatus={statusFilter}
|
||||
pagination={{
|
||||
page: currentPage,
|
||||
pageSize,
|
||||
total,
|
||||
buildPageHref,
|
||||
basePath: "/announcements",
|
||||
statusFilter,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user