import { injectPage } from '@jdmini/api' const { getCourseById } = require('../../utils/data.js') const storage = require('../../utils/storage.js') Page(injectPage()({ data: { course: null, currentStepIndex: 0, totalSteps: 0, currentStep: null, isLastStep: false, progressPercent: 0 }, onLoad(options) { const courseId = options.courseId const stepIndex = parseInt(options.stepIndex) || 0 const course = getCourseById(courseId) if (!course) { wx.showToast({ title: '课程不存在', icon: 'none' }) setTimeout(() => wx.navigateBack(), 1500) return } wx.setNavigationBarTitle({ title: course.title }) this.setCourse(course, stepIndex) }, setCourse(course, stepIndex) { const total = course.steps.length const safeIndex = Math.max(0, Math.min(stepIndex, total - 1)) const percent = Math.round((safeIndex / total) * 100) this.setData({ course, totalSteps: total, currentStepIndex: safeIndex, currentStep: course.steps[safeIndex], isLastStep: safeIndex === total - 1, progressPercent: percent }) // 保存进度 storage.saveProgress(course.id, safeIndex, false) // 更新最近记录 storage.addRecentHistory({ courseId: course.id, courseTitle: course.title, coverEmoji: course.coverEmoji, coverColor: course.coverColor, stepIndex: safeIndex }) }, onPrevStep() { const { currentStepIndex, course } = this.data if (currentStepIndex <= 0) return this.setCourse(course, currentStepIndex - 1) }, onNextStep() { const { currentStepIndex, course, isLastStep } = this.data if (isLastStep) { this.onFinishCourse() return } this.setCourse(course, currentStepIndex + 1) }, onFinishCourse() { const { course } = this.data // 标记完成 storage.saveProgress(course.id, course.steps.length - 1, true) wx.navigateTo({ url: `/pages/work-submit/work-submit?courseId=${course.id}` }) }, onShareAppMessage() { const { course } = this.data return { title: `我在学:${course ? course.title : ''}`, path: `/pages/course-detail/course-detail?courseId=${course ? course.id : ''}` } } }))