hookehuyr

feat(recall): 添加老客户召回引导页及相关资源

- 新增引导页路由配置和页面组件
- 更新登录页背景图和标题图引用方式
- 添加引导页所需的图片资源
1 /* 1 /*
2 * @Date: 2025-03-20 20:36:36 2 * @Date: 2025-03-20 20:36:36
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-10-20 17:37:47 4 + * @LastEditTime: 2025-12-23 11:40:33
5 * @FilePath: /mlaj/src/router/routes.js 5 * @FilePath: /mlaj/src/router/routes.js
6 * @Description: 路由地址映射配置 6 * @Description: 路由地址映射配置
7 */ 7 */
...@@ -109,6 +109,12 @@ export const routes = [ ...@@ -109,6 +109,12 @@ export const routes = [
109 meta: { title: '召回老客户-登录页' }, 109 meta: { title: '召回老客户-登录页' },
110 }, 110 },
111 { 111 {
112 + path: '/recall/boot',
113 + name: 'RecallBoot',
114 + component: () => import('../views/recall/boot.vue'),
115 + meta: { title: '召回老客户-引导页' },
116 + },
117 + {
112 path: '/checkout', 118 path: '/checkout',
113 name: 'CheckoutPage', 119 name: 'CheckoutPage',
114 component: () => import('../views/checkout/CheckoutPage.vue'), 120 component: () => import('../views/checkout/CheckoutPage.vue'),
......
1 +<template>
2 + <div class="recall-boot w-full min-h-screen relative overflow-hidden flex flex-col items-center">
3 + <!-- Starry Background Effect -->
4 + <StarryBackground :bg-image="bgImg" />
5 +
6 + <!-- Title Section -->
7 + <div class="mt-16 flex flex-col items-center z-10 w-full px-8">
8 + <img :src="titleImg" class="w-full max-w-[300px] mb-8 object-contain" alt="title" />
9 + </div>
10 +
11 + <!-- Content Card -->
12 + <div class="w-full px-6 mt-4 z-10">
13 + <FrostedGlass class="p-6 !rounded-2xl !border-white/20 !shadow-none" :bg-opacity="10" blur-level="md">
14 + <div class="space-y-4 py-2">
15 + <!-- Item 1 -->
16 + <div class="flex items-start">
17 + <img :src="starImg" class="w-5 h-5 mt-1 mr-3 flex-shrink-0" alt="star" />
18 + <div class="flex-1">
19 + <h3 class="text-white text-xl font-bold mb-2 tracking-wide">星球新纪元已开启</h3>
20 + <p class="text-white/90 text-sm font-medium">定制成长线 + 学习社区 + 星球币福利体系</p>
21 + </div>
22 + </div>
23 +
24 + <!-- Item 2 -->
25 + <div class="flex items-center !mt-10">
26 + <img :src="starImg" class="w-5 h-5 mr-3 flex-shrink-0" alt="star" />
27 + <p class="text-white font-bold text-base tracking-wide">老玩家一键迁档,荣耀延续;</p>
28 + </div>
29 +
30 + <!-- Item 3 -->
31 + <div class="flex items-center">
32 + <img :src="starImg" class="w-5 h-5 mr-3 flex-shrink-0" alt="star" />
33 + <p class="text-white font-bold text-base tracking-wide">新玩家注册即领星光启航礼!</p>
34 + </div>
35 + </div>
36 + </FrostedGlass>
37 + </div>
38 +
39 + <!-- Action Button -->
40 + <div class="w-full px-6 mt-auto z-10 mb-8">
41 + <van-button block
42 + class="submit-btn !rounded-lg !bg-[#3B82F6] !border-[#FFDD01] !text-[#FFDD01] !font-bold !text-lg !h-[48px]"
43 + @click="handleNext">
44 + 完善个人信息
45 + </van-button>
46 + <p class="text-white text-center text-xs mt-4 tracking-wide">您的历史数据将自动同步至新星球</p>
47 + </div>
48 +
49 + </div>
50 +</template>
51 +
52 +<script setup>
53 +import { useRouter, useRoute } from 'vue-router'
54 +import { useTitle } from '@vueuse/core'
55 +import titleImg from '@/assets/images/recall/title02@2x.png'
56 +import bgImg from '@/assets/images/recall/bg01@2x.png'
57 +import starImg from '@/assets/images/recall/xing@2x.png'
58 +
59 +const router = useRouter()
60 +const route = useRoute()
61 +useTitle(route.meta.title)
62 +
63 +const handleNext = () => {
64 + router.push({ name: 'RecallLogin' })
65 +}
66 +</script>
67 +
68 +<style lang="less" scoped>
69 +.submit-btn {
70 + // Add a subtle gradient for better visual
71 + background: linear-gradient(180deg, rgba(59, 130, 246, 0.9) 0%, rgba(37, 99, 235, 0.9) 100%) !important;
72 + backdrop-filter: blur(4px);
73 + box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
74 +
75 + &:active {
76 + transform: scale(0.99);
77 + }
78 +}
79 +</style>
1 <template> 1 <template>
2 <div class="recall-login w-full min-h-screen relative overflow-hidden flex flex-col items-center"> 2 <div class="recall-login w-full min-h-screen relative overflow-hidden flex flex-col items-center">
3 <!-- Starry Background Effect --> 3 <!-- Starry Background Effect -->
4 - <StarryBackground bg-image="https://cdn.ipadbiz.cn/mlaj/images/test-bgg03.jpg" /> 4 + <!-- <StarryBackground bg-image="https://cdn.ipadbiz.cn/mlaj/images/test-bgg03.jpg" /> -->
5 + <StarryBackground :bg-image="bgImg" />
5 6
6 <!-- Title Section --> 7 <!-- Title Section -->
7 <div class="mt-10 flex flex-col items-center z-10 w-full px-8"> 8 <div class="mt-10 flex flex-col items-center z-10 w-full px-8">
8 - <img src="@/assets/images/recall/title01@2x.png" class="w-full max-w-[300px] mb-8 object-contain" alt="title" /> 9 + <img :src="titleImg" class="w-full max-w-[300px] mb-8 object-contain" alt="title" />
9 10
10 <div class="text-white text-center space-y-3 tracking-wider text-shadow-md"> 11 <div class="text-white text-center space-y-3 tracking-wider text-shadow-md">
11 <p class="text-sm">请验证身份</p> 12 <p class="text-sm">请验证身份</p>
...@@ -78,19 +79,18 @@ ...@@ -78,19 +79,18 @@
78 </template> 79 </template>
79 80
80 <script setup> 81 <script setup>
81 -/**
82 - * @description 召回老客户-登录页
83 - * @author hookehuyr
84 - * @date 2025-12-23
85 - */
86 import { ref, computed } from 'vue' 82 import { ref, computed } from 'vue'
87 import { useRouter } from 'vue-router' 83 import { useRouter } from 'vue-router'
88 import { showToast } from 'vant' 84 import { showToast } from 'vant'
89 -// FrostedGlass is auto-imported by unplugin-vue-components? 85 +import { useTitle } from '@vueuse/core'
90 -// If not, explicit import might be needed but based on components.d.ts it should be available. 86 +
91 -// Just in case, if it fails, I'll add import. For now, assuming auto-import works as per components.d.ts. 87 +import titleImg from '@/assets/images/recall/title01@2x.png'
88 +import bgImg from '@/assets/images/recall/bg01@2x.png'
92 89
93 -const router = useRouter() 90 +// 路由相关
91 +const $route = useRoute()
92 +const $router = useRouter()
93 +useTitle($route.meta.title)
94 94
95 // Form Data 95 // Form Data
96 const phone = ref('') 96 const phone = ref('')
...@@ -146,7 +146,7 @@ const handleLogin = () => { ...@@ -146,7 +146,7 @@ const handleLogin = () => {
146 146
147 showToast('登录成功') 147 showToast('登录成功')
148 // Navigate to next page (Index or whatever is next flow) 148 // Navigate to next page (Index or whatever is next flow)
149 - router.push('/recall') 149 + $router.push('/recall')
150 } 150 }
151 151
152 // Agreement Content 152 // Agreement Content
......