修正多处问题,添加骨架屏

This commit is contained in:
2026-06-29 16:41:36 +08:00
parent e85f39ab83
commit 13b99428de
124 changed files with 929 additions and 147 deletions
@@ -1,4 +1,4 @@
<template>
<template>
<view class="course-detail-page">
<!-- 页面头部 -->
<PageHeader title="课程详情" subtitle="团课预约" :show-back="true" />
@@ -64,7 +64,7 @@
<view class="cover-image-wrapper">
<image
v-if="course.coverImage"
:src="course.coverImage"
:src="getCourseCoverUrl(course.coverImage)"
mode="aspectFill"
class="cover-image"
/>
@@ -245,6 +245,7 @@
import { ref, computed } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { getGroupCourseDetail, bookGroupCourse } from '@/api/groupCourse.js'
import { getCourseCoverUrl } from '@/utils/request.js'
import { getPrimaryMemberCard } from '@/api/main.js'
import { getMemberId } from '@/utils/request.js'
import PageHeader from '@/components/index/PageHeader.vue'
@@ -46,8 +46,16 @@
</view>
</view>
<scroll-view
v-if="!pageReady"
class="course-list-skel"
>
<ListSkeleton :count="4" layout="card" :show-tabs="false" />
</scroll-view>
<!-- 团课列表 -->
<scroll-view
v-else
scroll-y
class="course-list"
@scrolltolower="onScrollToLower"
@@ -95,6 +103,7 @@ import FilterSection from '@/components/groupCourse/FilterSection.vue'
import TimePeriodSelector from '@/components/groupCourse/TimePeriodSelector.vue'
import TimeRangePicker from '@/components/groupCourse/TimeRangePicker.vue'
import PageHeader from '@/components/index/PageHeader.vue'
import ListSkeleton from '@/components/Skeleton/ListSkeleton.vue'
import { useGroupCourseList } from '@/composables/useGroupCourseList.js'
import { getTypeLabels, getGroupCourseTypes, getMemberBookings } from '@/api/groupCourse.js'
import { getMemberId } from '@/utils/request.js'
@@ -111,6 +120,9 @@ const courseTypeLabelsCache = ref({})
// 已预约课程ID集合
const bookedCourseIds = ref(new Set())
// 页面加载状态
const pageReady = ref(false)
// 使用组合式函数
const {
// 状态
@@ -162,6 +174,7 @@ onMounted(async () => {
])
// 获取所有团课的类型标签
await fetchAllCourseTypeLabels()
pageReady.value = true
console.log('[list.vue] 可用的搜索参数获取方法:')
console.log(' - searchBarRef.getSearchParams()')
console.log(' - filterSectionRef.getFilterParams()')