feat:学习进度对接和逻辑计算

This commit is contained in:
小张 2025-09-02 18:04:22 +08:00
parent f0320a021d
commit adeaf086c4
2 changed files with 85 additions and 0 deletions

View File

@ -781,6 +781,21 @@ export class CourseApi {
return ApiRequest.get(`/courses/${courseId}/progress`)
}
// 获取课程学习进度 - 新接口
static async getCourseProgress(courseId: string): Promise<ApiResponse<any>> {
try {
console.log('🚀 调用课程学习进度API课程ID:', courseId)
const response = await ApiRequest.get<any>(`/aiol/aiolCourse/${courseId}/progress`)
console.log('🔍 课程学习进度API响应:', response)
return response
} catch (error) {
console.error('❌ 获取课程学习进度失败:', error)
throw error
}
}
// 更新学习进度
static updateLearningProgress(data: {
courseId: number

View File

@ -1072,6 +1072,9 @@ const videoProgress = ref(0)
const exerciseProgress = ref(0)
const examProgress = ref(0)
//
const progressData = ref<any>(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()) {