完善团课推荐页面
This commit is contained in:
@@ -44,6 +44,7 @@ import RecommendCourses from '@/components/index/RecommendCourses.vue'
|
||||
import PageHeader from '@/components/index/PageHeader.vue'
|
||||
import TabBar from '@/components/TabBar.vue'
|
||||
import { PAGE, navigateToPage } from '@/common/constants/routes.js'
|
||||
import { getActiveRecommendCourses } from '@/api/groupCourse.js'
|
||||
|
||||
const loading = ref(true)
|
||||
const courseData = ref(null)
|
||||
@@ -53,41 +54,71 @@ function loadFromCache() {
|
||||
try {
|
||||
const cached = uni.getStorageSync('course_cache')
|
||||
if (cached && Date.now() - cached.time < 5 * 60 * 1000) {
|
||||
console.log('[Course Page] 从缓存加载数据,缓存时间:', new Date(cached.time).toLocaleString())
|
||||
courseData.value = cached.data
|
||||
loading.value = false
|
||||
return true
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('读取缓存失败', e)
|
||||
console.error('[Course Page] 读取缓存失败', e)
|
||||
}
|
||||
console.log('[Course Page] 缓存不存在或已过期,准备从网络加载')
|
||||
return false
|
||||
}
|
||||
|
||||
// 从网络加载数据
|
||||
async function loadFromNetwork() {
|
||||
loading.value = true
|
||||
console.log('[Course Page] 开始从后端获取团课推荐数据...')
|
||||
|
||||
try {
|
||||
// 模拟 API 请求
|
||||
const res = await new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve({ code: 0, data: { list: [] } })
|
||||
}, 500)
|
||||
})
|
||||
// 获取启用的团课推荐列表(按优先级从高到低排序)
|
||||
console.log('[Course Page] 发起 API 请求: GET /groupCourse/recommend/active')
|
||||
const res = await getActiveRecommendCourses()
|
||||
|
||||
if (res.code === 0) {
|
||||
courseData.value = res.data
|
||||
console.log('[Course Page] API 响应数据:', res)
|
||||
|
||||
if (res && Array.isArray(res)) {
|
||||
console.log('[Course Page] 获取到', res.length, '条团课推荐数据')
|
||||
|
||||
// 取优先级最高的5个团课
|
||||
const top5Courses = res.slice(0, 5).map(recommend => ({
|
||||
id: recommend.groupCourse.id,
|
||||
courseName: recommend.groupCourse.courseName,
|
||||
courseType: recommend.groupCourse.courseType,
|
||||
startTime: recommend.groupCourse.startTime,
|
||||
endTime: recommend.groupCourse.endTime,
|
||||
maxMembers: recommend.groupCourse.maxMembers,
|
||||
currentMembers: recommend.groupCourse.currentMembers,
|
||||
status: recommend.groupCourse.status,
|
||||
coverImage: recommend.groupCourse.coverImage,
|
||||
description: recommend.groupCourse.description,
|
||||
recommendTitle: recommend.recommendTitle,
|
||||
recommendContent: recommend.recommendContent,
|
||||
recommendReason: recommend.recommendReason,
|
||||
priority: recommend.priority
|
||||
}))
|
||||
|
||||
console.log('[Course Page] 筛选出前5个优先级最高的团课:', top5Courses)
|
||||
courseData.value = { list: top5Courses }
|
||||
|
||||
// 更新缓存
|
||||
uni.setStorageSync('course_cache', {
|
||||
data: res.data,
|
||||
data: courseData.value,
|
||||
time: Date.now()
|
||||
})
|
||||
console.log('[Course Page] 数据已缓存')
|
||||
} else {
|
||||
console.log('[Course Page] API 响应为空或格式不正确')
|
||||
courseData.value = { list: [] }
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('加载失败', err)
|
||||
console.error('[Course Page] 加载失败:', err)
|
||||
uni.showToast({ title: '加载失败', icon: 'none' })
|
||||
courseData.value = { list: [] }
|
||||
} finally {
|
||||
loading.value = false
|
||||
console.log('[Course Page] 数据加载完成,loading:', loading.value)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,8 +144,8 @@ onLoad(() => {
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
// 每次显示时确保加载完成
|
||||
if (loading.value && !courseData.value) {
|
||||
// 每次显示时尝试刷新数据(后台静默更新)
|
||||
if (!loading.value) {
|
||||
loadFromNetwork()
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user