完善团课推荐页面

This commit is contained in:
2026-06-15 18:03:42 +08:00
parent 4e69185c48
commit d7961694f9
5 changed files with 540 additions and 174 deletions
+44 -13
View File
@@ -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()
}
})