84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
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 : ''}`
|
|
}
|
|
}
|
|
}))
|