diff --git a/miniprogram/src/pages/comprehensive/bookings/index.vue b/miniprogram/src/pages/comprehensive/bookings/index.vue index c32aa6d..b60d37e 100644 --- a/miniprogram/src/pages/comprehensive/bookings/index.vue +++ b/miniprogram/src/pages/comprehensive/bookings/index.vue @@ -28,7 +28,7 @@ {{ getItemDesc(item) }} {{ isMembershipCourse ? '次卡预约' : '订单金额' }} - 次卡预约 + {{ item.card?.plan_name || '次卡预约' }} ¥{{ item.order?.amount || '--' }} @@ -70,7 +70,7 @@ const courseSubTabs = [ const isMembershipCourse = computed(() => businessType.value === 'course' && courseSubType.value === 'membership') const bookedItems = computed(() => { - return items.value.filter((item) => ['booked', 'available'].includes(item.status)) + return items.value.filter((item) => ['booked', 'available', 'checked_in'].includes(item.status)) }) onMounted(async () => { @@ -269,4 +269,13 @@ const goDetail = (item) => { font-size: 30rpx; font-weight: 900; } + +.tag-amount { + font-size: 24rpx; + font-weight: 800; + padding: 4rpx 16rpx; + border-radius: $border-radius-base; + background: $color-primary-light; + color: $color-primary; +} diff --git a/miniprogram/src/pages/comprehensive/membership/available-sessions.vue b/miniprogram/src/pages/comprehensive/membership/available-sessions.vue index dfa6db2..672873a 100644 --- a/miniprogram/src/pages/comprehensive/membership/available-sessions.vue +++ b/miniprogram/src/pages/comprehensive/membership/available-sessions.vue @@ -101,7 +101,11 @@ const loadSessions = async (reset) => { items = items.filter((item) => item.available_card_ids.includes(Number(preselectedCardId.value))) } sessions.value = reset ? items : [...sessions.value, ...items] - total.value = data.total + if (preselectedCardId.value && data.items.length < data.page_size) { + total.value = sessions.value.length + } else { + total.value = data.total + } } finally { isLoading.value = false isLoadingMore.value = false @@ -110,7 +114,7 @@ const loadSessions = async (reset) => { const loadCards = async () => { const data = await membershipApi.getCards({ page: 1, pageSize: 50 }) - cards.value = data.items.filter((card) => card.status === 'active' && card.remaining_count > 0) + cards.value = data.items.filter((card) => card.status === 'available' && card.remaining_count > 0) } const onSessionTap = (session) => { diff --git a/miniprogram/src/pages/comprehensive/membership/booking-detail.vue b/miniprogram/src/pages/comprehensive/membership/booking-detail.vue index bb29024..df49f9b 100644 --- a/miniprogram/src/pages/comprehensive/membership/booking-detail.vue +++ b/miniprogram/src/pages/comprehensive/membership/booking-detail.vue @@ -104,6 +104,8 @@ onPullDownRefresh(() => { const loadBooking = async () => { try { booking.value = await membershipApi.getCardBookingDetail(bookingId.value) + } catch { + // request layer already shows toast; ensure loaded state is set } finally { loaded.value = true } diff --git a/miniprogram/src/pages/comprehensive/membership/card-detail.vue b/miniprogram/src/pages/comprehensive/membership/card-detail.vue index 823fa3b..6849ed9 100644 --- a/miniprogram/src/pages/comprehensive/membership/card-detail.vue +++ b/miniprogram/src/pages/comprehensive/membership/card-detail.vue @@ -159,9 +159,8 @@ const goBooking = () => { } const statusBadgeClass = (status) => { - if (status === 'active') return 'success' + if (status === 'available') return 'success' if (status === 'exhausted') return 'warning' - if (status === 'expired') return 'muted' return 'muted' } diff --git a/miniprogram/src/pages/comprehensive/membership/cards.vue b/miniprogram/src/pages/comprehensive/membership/cards.vue index 94b9a44..d95b9a8 100644 --- a/miniprogram/src/pages/comprehensive/membership/cards.vue +++ b/miniprogram/src/pages/comprehensive/membership/cards.vue @@ -93,9 +93,8 @@ const goDetail = (id) => { } const statusBadgeClass = (status) => { - if (status === 'active') return 'success' + if (status === 'available') return 'success' if (status === 'exhausted') return 'warning' - if (status === 'expired') return 'muted' return 'muted' }