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 @@