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'
}