Files
device-voice-h5/components/ExpiryReminderBanner.vue
luo da95a914e3
All checks were successful
构建并部署前端到生产环境 / build-and-deploy (push) Successful in 2m59s
fix: some
2026-10-13 14:53:19 +08:00

32 lines
1.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="card expiry-banner" :class="`expiry-${reminder.level}`" role="status">
<view class="banner-heading">
<view class="banner-title">{{ reminder.level_name || '套餐临期提醒' }}</view>
<button class="banner-close" aria-label="关闭临期提醒" @tap="$emit('close')">关闭</button>
</view>
<view class="banner-body">当前资产套餐剩余 {{ reminder.remaining_days }} 天,请及时续费。</view>
<view class="banner-expiry">预计到期:{{ formatShanghaiExpiry(reminder.expires_at) }}</view>
</view>
</template>
<script setup>
import { formatShanghaiExpiry } from '@/utils/expiry-reminder.js';
defineProps({ reminder: { type: Object, required: true } });
defineEmits(['close']);
</script>
<style scoped lang="scss">
.expiry-banner {
border-left: 8rpx solid var(--reminder-color);
.banner-heading { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; }
.banner-title { color: var(--reminder-color); font-size: 30rpx; font-weight: 600; }
.banner-close { margin: 0; padding: 8rpx 16rpx; font-size: 24rpx; line-height: 1.5; color: var(--text-secondary); background: var(--gray-100); }
.banner-close::after { border: none; }
.banner-body { margin-top: 12rpx; font-size: 28rpx; line-height: 1.6; color: var(--text-primary); }
.banner-expiry { margin-top: 8rpx; font-size: 24rpx; color: var(--text-secondary); }
}
.expiry-red { --reminder-color: var(--danger); }
.expiry-purple { --reminder-color: var(--purple); }
.expiry-pink { --reminder-color: var(--pink); }
</style>