diff --git a/packages/app/src/components/ProfileMenu.vue b/packages/app/src/components/ProfileMenu.vue index 33234f6..aa6c537 100644 --- a/packages/app/src/components/ProfileMenu.vue +++ b/packages/app/src/components/ProfileMenu.vue @@ -47,6 +47,7 @@ interface MenuItem { const props = defineProps<{ isAdmin: boolean requireAuth?: boolean + activeMembershipCount?: number }>() const emit = defineEmits<{ @@ -56,12 +57,17 @@ const emit = defineEmits<{ }>() const menuItems = computed(() => { + const membershipBadge = props.activeMembershipCount && props.activeMembershipCount > 0 + ? `${props.activeMembershipCount}张` + : undefined + const items: MenuItem[] = [ { key: 'membership', type: 'item', title: '我的会员卡', path: '/pages/profile/membership', + badge: membershipBadge, requireAuth: true, }, { @@ -346,11 +352,17 @@ function handleTap(item: MenuItem) { &__badge { font-size: 22rpx; - color: #ffffff; - background: $error-color; - border-radius: 20rpx; - padding: 2rpx 12rpx; + line-height: 1; + font-weight: 600; + color: #496578; + background: linear-gradient(135deg, rgba(239, 247, 251, 0.98), rgba(218, 234, 243, 0.96)); + border-radius: 999rpx; + padding: 9rpx 18rpx; margin-right: $spacing-sm; + border: 1rpx solid rgba(123, 165, 190, 0.18); + box-shadow: + inset 0 1rpx 0 rgba(255, 255, 255, 0.92), + 0 6rpx 16rpx rgba(123, 165, 190, 0.16); } &__arrow { diff --git a/packages/app/src/components/SlotCard.vue b/packages/app/src/components/SlotCard.vue index cf2b27c..a48d195 100644 --- a/packages/app/src/components/SlotCard.vue +++ b/packages/app/src/components/SlotCard.vue @@ -68,7 +68,7 @@