From c8ecbe277c0211ba179dc78a52e76a3ce47491d6 Mon Sep 17 00:00:00 2001 From: zhonghua Date: Tue, 17 Mar 2026 11:24:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=95=99=E5=B8=88=E7=AB=AF=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E4=B8=8E=E6=8E=88=E8=AF=BE=E8=AE=B0=E5=BD=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 assessment_data JSON 字段:普通文本自动包装为有效 JSON - 修复返回时页面 ID 丢失:校验无效 ID 并跳转,goBackToDetail 优先使用路由 ID - 修复上课记录列表:getLessons 支持 pageNum、日期范围、状态映射,list 转 items - 修复班级与课程取值:LessonResponse 增加 courseName/className,接口返回时自动填充 - 备课/详情页增加 ID 校验,防止跳转到 undefined Made-with: Cursor --- reading-platform-frontend/src/api/teacher.ts | 44 +++++++++++++++---- .../teacher/courses/CourseDetailView.vue | 11 +++-- .../views/teacher/courses/CourseListView.vue | 7 ++- .../views/teacher/courses/PrepareModeView.vue | 32 +++++++++++--- .../views/teacher/lessons/LessonListView.vue | 34 +++++++++----- .../teacher/TeacherLessonController.java | 38 ++++++++++++++-- .../platform/dto/response/LessonResponse.java | 6 +++ .../platform/service/CourseLessonService.java | 32 ++++++++++++-- 8 files changed, 167 insertions(+), 37 deletions(-) diff --git a/reading-platform-frontend/src/api/teacher.ts b/reading-platform-frontend/src/api/teacher.ts index a05ca17..fbd3221 100644 --- a/reading-platform-frontend/src/api/teacher.ts +++ b/reading-platform-frontend/src/api/teacher.ts @@ -181,26 +181,52 @@ export interface StudentRecordDto { notes?: string; } +// 后端状态值: scheduled, in_progress, completed, cancelled +const STATUS_TO_BACKEND: Record = { + PLANNED: 'scheduled', + IN_PROGRESS: 'in_progress', + COMPLETED: 'completed', + CANCELLED: 'cancelled', +}; + // 获取授课记录列表 export function getLessons(params?: { pageNum?: number; + page?: number; pageSize?: number; status?: string; - courseId?: number; + startDate?: string; + endDate?: string; }): Promise<{ items: any[]; total: number; page: number; pageSize: number; }> { - return http.get('/v1/teacher/lessons', { - params: { - pageNum: params?.pageNum, - pageSize: params?.pageSize, - status: params?.status, - startDate: params?.courseId, // 如果需要可以传其他参数 - }, - }) as any; + const pageNum = params?.pageNum ?? params?.page ?? 1; + const status = params?.status ? (STATUS_TO_BACKEND[params.status] || params.status) : undefined; + return http + .get<{ list?: any[]; records?: any[]; total?: number | string; pageNum?: number; pageSize?: number }>( + '/v1/teacher/lessons', + { + params: { + pageNum, + pageSize: params?.pageSize ?? 10, + status, + startDate: params?.startDate, + endDate: params?.endDate, + }, + } + ) + .then((res) => { + const list = res?.list ?? res?.records ?? []; + return { + items: Array.isArray(list) ? list : [], + total: typeof res?.total === 'string' ? parseInt(res.total, 10) || 0 : (res?.total ?? 0), + page: res?.pageNum ?? pageNum, + pageSize: res?.pageSize ?? 10, + }; + }); } // 获取单个授课记录详情(id 使用 string 避免 Long 精度丢失) diff --git a/reading-platform-frontend/src/views/teacher/courses/CourseDetailView.vue b/reading-platform-frontend/src/views/teacher/courses/CourseDetailView.vue index deb220a..85632cb 100644 --- a/reading-platform-frontend/src/views/teacher/courses/CourseDetailView.vue +++ b/reading-platform-frontend/src/views/teacher/courses/CourseDetailView.vue @@ -17,7 +17,7 @@ 创建校本版本 - + 开始备课 @@ -281,7 +281,7 @@
教学环节 ({{ lesson.steps.length }}个)
-
{{ index + 1 }}
+
{{ Number(index) + 1 }}
{{ step.name }}
{{ step.duration }}分钟
@@ -870,7 +870,12 @@ const createSchoolVersion = () => { }; const startPrepare = () => { - router.push(`/teacher/courses/${course.value.id}/prepare`); + const id = route.params.id || course.value?.id; + if (!id || id === 'undefined') { + message.warning('课程信息未加载完成,请稍后再试'); + return; + } + router.push(`/teacher/courses/${id}/prepare`); }; const toggleFavorite = () => { diff --git a/reading-platform-frontend/src/views/teacher/courses/CourseListView.vue b/reading-platform-frontend/src/views/teacher/courses/CourseListView.vue index ea6c1fb..f8f0bbe 100644 --- a/reading-platform-frontend/src/views/teacher/courses/CourseListView.vue +++ b/reading-platform-frontend/src/views/teacher/courses/CourseListView.vue @@ -318,7 +318,12 @@ const viewCourseDetail = (course: any) => { }; const prepareCourse = (course: any) => { - router.push(`/teacher/courses/${course.id}/prepare`); + const id = course?.id; + if (id == null || id === 'undefined') { + message.warning('课程信息异常,无法进入备课'); + return; + } + router.push(`/teacher/courses/${id}/prepare`); }; onMounted(() => { diff --git a/reading-platform-frontend/src/views/teacher/courses/PrepareModeView.vue b/reading-platform-frontend/src/views/teacher/courses/PrepareModeView.vue index 6df2ad4..987a006 100644 --- a/reading-platform-frontend/src/views/teacher/courses/PrepareModeView.vue +++ b/reading-platform-frontend/src/views/teacher/courses/PrepareModeView.vue @@ -121,7 +121,7 @@