diff --git a/app/pages/index.vue b/app/pages/index.vue
index 112f793..a71249d 100644
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -173,9 +173,9 @@
loadPackages())
.h-13 {
height: 3.25rem;
}
+
+.home-pricing-card::before {
+ content: '';
+ position: absolute;
+ top: -54px;
+ right: -52px;
+ width: 148px;
+ height: 148px;
+ border-radius: 999px;
+ background: transparent;
+}
+
+.home-pricing-card::after {
+ content: '';
+ position: absolute;
+ right: 28px;
+ bottom: 22px;
+ left: 28px;
+ height: 3px;
+ border-radius: 999px;
+ background: transparent;
+}
+
+.home-pricing-card > * {
+ position: relative;
+ z-index: 1;
+}
+
+.home-pricing-card.is-featured {
+ background:
+ radial-gradient(circle at 82% 10%, rgba(32, 167, 255, 0.28), transparent 32%),
+ linear-gradient(180deg, #dff2ff 0%, #f3fbff 48%, #ffffff 100%);
+ box-shadow:
+ 0 28px 60px rgba(11, 140, 255, 0.22),
+ 0 0 0 6px rgba(11, 140, 255, 0.1),
+ inset 0 1px 0 rgba(255, 255, 255, 0.86);
+}
+
+.home-pricing-card.is-featured::before {
+ background: radial-gradient(circle, rgba(32, 167, 255, 0.3), transparent 68%);
+}
+
+.home-pricing-card.is-featured::after {
+ background: linear-gradient(90deg, transparent, rgba(11, 140, 255, 0.55), transparent);
+ box-shadow: 0 0 16px rgba(11, 140, 255, 0.22);
+}
diff --git a/app/pages/recharge.vue b/app/pages/recharge.vue
index cd4b4a7..7e087b0 100644
--- a/app/pages/recharge.vue
+++ b/app/pages/recharge.vue
@@ -42,23 +42,22 @@
v-for="pkg in packages"
:key="pkg.id"
type="button"
- class="relative flex min-h-[124px] flex-col items-center justify-center gap-2 rounded-2xl border-2 p-4 transition-all"
- :class="current && current.id === pkg.id
- ? 'border-[var(--c-0b8cff)] bg-[var(--c-f4faff)] shadow-[0_0_0_4px_var(--sh-11-140-255-100)]'
- : 'border-transparent bg-[var(--c-f7f9fd)] hover:border-[var(--c-e5edf7)]'"
+ class="recharge-package relative flex min-h-[124px] flex-col items-center justify-center gap-2 rounded-2xl border-2 p-4 transition-all"
+ :class="{ 'is-active': current && current.id === pkg.id, 'is-recommended': isRecommendedPackage(pkg) }"
@click="selectPackage(pkg)"
>
-
-
-
- ¥{{ pkg.old_price_yuan }}
+
+ 日常创作首选
+
+
+ ¥{{ pkg.old_price_yuan }}
@@ -244,6 +243,10 @@ function showMsg(msg, color = 'error') {
toast.add({ title: msg, color })
}
+function isRecommendedPackage(pkg = {}) {
+ return String(pkg.badge || '').includes('推荐')
+}
+
// ==================== 套餐 & 余额 ====================
async function loadPackages() {
loading.value = true
@@ -470,3 +473,122 @@ watch(isLogin, async (loggedIn) => {
onUnmounted(() => clearInterval(pollingTimer))
+
+