83 lines
1.9 KiB
JavaScript
83 lines
1.9 KiB
JavaScript
// pages/course-detail/course-detail.js
|
|
const { coursesData } = require('../../utils/data.js')
|
|
const { showSuccess, showError } = require('../../utils/util.js')
|
|
const learningTracker = require('../../utils/learningTracker.js')
|
|
|
|
Page({
|
|
data: {
|
|
course: null,
|
|
isFavorite: false,
|
|
activeTab: 0,
|
|
tabs: ['课程信息', '教学大纲', '课程评价']
|
|
},
|
|
|
|
onLoad(options) {
|
|
const { id } = options
|
|
this.loadCourseDetail(id)
|
|
},
|
|
|
|
onShow() {
|
|
// 开始跟踪学习时间
|
|
learningTracker.onPageShow('course')
|
|
},
|
|
|
|
onHide() {
|
|
// 停止跟踪学习时间
|
|
learningTracker.onPageHide()
|
|
},
|
|
|
|
onUnload() {
|
|
// 记录学习时长
|
|
learningTracker.onPageUnload()
|
|
},
|
|
|
|
// 加载课程详情
|
|
loadCourseDetail(id) {
|
|
const course = coursesData.find(c => c.id === parseInt(id))
|
|
if (course) {
|
|
const favorites = wx.getStorageSync('favoriteCourses') || []
|
|
this.setData({
|
|
course,
|
|
isFavorite: favorites.includes(course.id)
|
|
})
|
|
} else {
|
|
showError('课程不存在')
|
|
setTimeout(() => {
|
|
wx.navigateBack()
|
|
}, 1500)
|
|
}
|
|
},
|
|
|
|
// 切换标签
|
|
onTabChange(e) {
|
|
const { index } = e.currentTarget.dataset
|
|
this.setData({ activeTab: index })
|
|
},
|
|
|
|
// 收藏/取消收藏
|
|
onToggleFavorite() {
|
|
const { course, isFavorite } = this.data
|
|
let favorites = wx.getStorageSync('favoriteCourses') || []
|
|
|
|
if (isFavorite) {
|
|
favorites = favorites.filter(id => id !== course.id)
|
|
showSuccess('取消收藏')
|
|
} else {
|
|
favorites.push(course.id)
|
|
showSuccess('收藏成功')
|
|
}
|
|
|
|
wx.setStorageSync('favoriteCourses', favorites)
|
|
this.setData({ isFavorite: !isFavorite })
|
|
},
|
|
|
|
// 分享课程
|
|
onShareAppMessage() {
|
|
const { course } = this.data
|
|
return {
|
|
title: `推荐课程:${course.name}`,
|
|
path: `/pages/course-detail/course-detail?id=${course.id}`
|
|
}
|
|
}
|
|
})
|