diff --git a/src/api/modules/course.ts b/src/api/modules/course.ts index 1b85a31..717c146 100644 --- a/src/api/modules/course.ts +++ b/src/api/modules/course.ts @@ -781,6 +781,21 @@ export class CourseApi { return ApiRequest.get(`/courses/${courseId}/progress`) } + // 获取课程学习进度 - 新接口 + static async getCourseProgress(courseId: string): Promise> { + try { + console.log('🚀 调用课程学习进度API,课程ID:', courseId) + + const response = await ApiRequest.get(`/aiol/aiolCourse/${courseId}/progress`) + console.log('🔍 课程学习进度API响应:', response) + + return response + } catch (error) { + console.error('❌ 获取课程学习进度失败:', error) + throw error + } + } + // 更新学习进度 static updateLearningProgress(data: { courseId: number diff --git a/src/views/CourseExchanged.vue b/src/views/CourseExchanged.vue index 4c9d789..94a9548 100644 --- a/src/views/CourseExchanged.vue +++ b/src/views/CourseExchanged.vue @@ -1072,6 +1072,9 @@ const videoProgress = ref(0) const exerciseProgress = ref(0) const examProgress = ref(0) +// 进度数据 +const progressData = ref(null) + // 处理记笔记点击事件 // const handleNotesClick = () => { // if (isUserEnrolled.value) { @@ -1591,6 +1594,9 @@ const loadCourseDetail = async () => { console.log('课程数据设置成功:', course.value) console.log('课程AI模式:', (course.value as any)?.izAi) + // 加载课程学习进度 + await loadCourseProgress() + // 确保讲师和时长信息正确显示 if (course.value) { if (!course.value.instructor?.name) { @@ -2047,6 +2053,70 @@ const handleUpload = ({ file, onFinish }: any) => { }, 1000) } +// 加载课程学习进度 +const loadCourseProgress = async () => { + try { + console.log('🚀 开始加载课程学习进度,课程ID:', courseId.value) + const response = await CourseApi.getCourseProgress(courseId.value) + console.log('📊 课程学习进度响应:', response) + + // 检查响应数据结构 + if (response.data && response.data.code === 200 && response.data.result) { + console.log('✅ 课程学习进度加载成功:', response.data.result) + progressData.value = response.data.result + + // 计算各项进度百分比 + calculateProgress() + } else { + console.warn('⚠️ 课程学习进度API返回异常:', response) + } + } catch (error) { + console.error('❌ 加载课程学习进度失败:', error) + } +} + +// 计算进度百分比 +const calculateProgress = () => { + if (!progressData.value) { + console.log('⚠️ 进度数据为空,无法计算') + return + } + + const data = progressData.value + console.log('🔍 原始进度数据:', data) + + // 计算视频进度百分比 + videoProgress.value = data.video?.total > 0 ? + (data.video.completed / data.video.total) * 100 : 0 + + // 计算作业进度百分比 + exerciseProgress.value = data.homework?.total > 0 ? + (data.homework.completed / data.homework.total) * 100 : 0 + + // 计算考试进度百分比 + examProgress.value = data.exam?.total > 0 ? + (data.exam.completed / data.exam.total) * 100 : 0 + + // 更新完成的课程数 + completedLessons.value = data.total?.completed || 0 + + console.log('📊 进度计算结果:', { + 原始数据: data, + 视频进度: `${data.video?.completed}/${data.video?.total} = ${videoProgress.value.toFixed(1)}%`, + 作业进度: `${data.homework?.completed}/${data.homework?.total} = ${exerciseProgress.value.toFixed(1)}%`, + 考试进度: `${data.exam?.completed}/${data.exam?.total} = ${examProgress.value.toFixed(1)}%`, + 总体进度: `${completedLessons.value}/${totalSections.value} = ${overallProgress.value.toFixed(1)}%`, + 计算后的值: { + video: videoProgress.value, + exercise: exerciseProgress.value, + exam: examProgress.value, + overall: overallProgress.value, + completed: completedLessons.value, + total: totalSections.value + } + }) +} + // 发送聊天消息 const sendMessage = () => { if (chatMessage.value.trim()) {