From 691e0248a2b8cc17d2d3267936233ab24ae2803d Mon Sep 17 00:00:00 2001 From: zhonghua Date: Mon, 16 Mar 2026 11:08:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AF=BE=E7=A8=8B=E5=8C=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=AE=A1=E6=A0=B8=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 list/items 数据格式转换,解决暂无数据问题 - 新增课程驳回接口 POST /api/v1/admin/courses/{id}/reject - 审核页仅返回待审核和已驳回(reviewOnly),排除已通过 - 修复状态筛选、自动检查列逻辑 - 后端支持 status 和 reviewOnly 参数 Made-with: Cursor --- reading-platform-frontend/src/api/course.ts | 44 +++++++-- .../views/admin/courses/CourseListView.vue | 90 +++++-------------- .../views/admin/courses/CourseReviewView.vue | 79 +++++----------- .../admin/AdminCourseController.java | 16 +++- .../platform/service/CourseService.java | 7 +- .../service/impl/CourseServiceImpl.java | 29 +++++- 6 files changed, 127 insertions(+), 138 deletions(-) diff --git a/reading-platform-frontend/src/api/course.ts b/reading-platform-frontend/src/api/course.ts index 712e1e2..8da045b 100644 --- a/reading-platform-frontend/src/api/course.ts +++ b/reading-platform-frontend/src/api/course.ts @@ -1,4 +1,5 @@ import { getReadingPlatformAPI } from './generated'; +import { axios } from './generated/mutator'; // 创建 API 实例 const api = getReadingPlatformAPI(); @@ -11,6 +12,8 @@ export interface CourseQueryParams { grade?: string; status?: string; keyword?: string; + /** 审核管理页专用:仅返回待审核和已驳回,排除已通过 */ + reviewOnly?: boolean; } export interface Course { @@ -110,12 +113,30 @@ export interface ValidationWarning { // 转换查询参数类型 const toFindAllParams = (params: CourseQueryParams): any => ({ - pageNum: params.pageNum ?? 1, // 默认值为 1 - pageSize: params.pageSize ?? 10, // 默认值为 10 + pageNum: params.pageNum ?? 1, + pageSize: params.pageSize ?? 10, keyword: params.keyword, - category: params.grade, // grade 映射到 category + category: params.grade, + status: params.status || undefined, + reviewOnly: params.reviewOnly, }); +// 后端 PageResult 返回 list,前端统一转为 items +function normalizePageResult(raw: any): { + items: Course[]; + total: number; + page: number; + pageSize: number; +} { + const list = raw?.list ?? raw?.items ?? []; + return { + items: Array.isArray(list) ? list : [], + total: raw?.total ?? 0, + page: raw?.pageNum ?? raw?.page ?? 1, + pageSize: raw?.pageSize ?? 10, + }; +} + // 获取课程包列表 export function getCourses(params: CourseQueryParams): Promise<{ items: Course[]; @@ -123,18 +144,17 @@ export function getCourses(params: CourseQueryParams): Promise<{ page: number; pageSize: number; }> { - return api.getCoursePage1(toFindAllParams(params)) as any; + return api.getCoursePage1(toFindAllParams(params)).then(normalizePageResult) as any; } -// 获取审核列表 (使用相同的列表接口,前端过滤状态) +// 获取审核列表(仅返回待审核和已驳回,不含已通过) export function getReviewList(params: CourseQueryParams): Promise<{ items: Course[]; total: number; page: number; pageSize: number; }> { - // 注意:后端可能没有单独的审核列表接口,这里返回所有数据让前端过滤 - return api.getCoursePage1(toFindAllParams(params)) as any; + return api.getCoursePage1(toFindAllParams({ ...params, reviewOnly: true })).then(normalizePageResult) as any; } // 获取课程包详情 @@ -177,9 +197,15 @@ export function approveCourse(id: number, data: { checklist?: any; comment?: str return api.publishCourse(id) as any; } -// 审核驳回 +// 审核驳回(课程专用,调用 POST /api/v1/admin/courses/{id}/reject) export function rejectCourse(id: number, data: { checklist?: any; comment: string }): Promise { - return api.review(id, data) as any; + return axios.post(`/api/v1/admin/courses/${id}/reject`, { comment: data.comment }).then((res: any) => { + const body = res?.data; + if (body && typeof body === 'object' && 'code' in body && body.code !== 200 && body.code !== 0) { + throw new Error(body.message || '驳回失败'); + } + return body?.data; + }); } // 直接发布(超级管理员) diff --git a/reading-platform-frontend/src/views/admin/courses/CourseListView.vue b/reading-platform-frontend/src/views/admin/courses/CourseListView.vue index 0e10d0d..65a0074 100644 --- a/reading-platform-frontend/src/views/admin/courses/CourseListView.vue +++ b/reading-platform-frontend/src/views/admin/courses/CourseListView.vue @@ -4,25 +4,15 @@ - + 小班 中班 大班 - + 草稿 审核中 已驳回 @@ -30,13 +20,8 @@ 已下架 - + @@ -53,25 +38,15 @@ - +