From 1f45c3dc3f2ef76a07f1e20b86c68d7499694ddb Mon Sep 17 00:00:00 2001 From: richarjiang Date: Sun, 12 Apr 2026 22:27:36 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B1=95=E7=A4=BA=E7=BA=A6=E8=AF=BE=E6=95=B0?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/app/src/components/ProfileMenu.vue | 5 ++ packages/app/src/pages/booking/detail.vue | 92 ++++++++++++++++++++- packages/app/src/pages/profile/index.vue | 14 +++- 3 files changed, 107 insertions(+), 4 deletions(-) diff --git a/packages/app/src/components/ProfileMenu.vue b/packages/app/src/components/ProfileMenu.vue index aa6c537..cbac4c1 100644 --- a/packages/app/src/components/ProfileMenu.vue +++ b/packages/app/src/components/ProfileMenu.vue @@ -48,6 +48,7 @@ const props = defineProps<{ isAdmin: boolean requireAuth?: boolean activeMembershipCount?: number + upcomingBookingCount?: number }>() const emit = defineEmits<{ @@ -60,6 +61,9 @@ const menuItems = computed(() => { const membershipBadge = props.activeMembershipCount && props.activeMembershipCount > 0 ? `${props.activeMembershipCount}张` : undefined + const bookingBadge = props.upcomingBookingCount && props.upcomingBookingCount > 0 + ? `${props.upcomingBookingCount}` + : undefined const items: MenuItem[] = [ { @@ -75,6 +79,7 @@ const menuItems = computed(() => { type: 'item', title: '我的预约', path: '/pages/profile/bookings', + badge: bookingBadge, requireAuth: true, }, { diff --git a/packages/app/src/pages/booking/detail.vue b/packages/app/src/pages/booking/detail.vue index 226101c..f9334d2 100644 --- a/packages/app/src/pages/booking/detail.vue +++ b/packages/app/src/pages/booking/detail.vue @@ -21,9 +21,12 @@