..
This commit is contained in:
@@ -3,13 +3,15 @@
|
||||
<view class="title-area">
|
||||
<div class="tech-animation">
|
||||
<svg preserveAspectRatio="xMidYMid slice" viewBox="0 0 300 100">
|
||||
<pattern id="pattern-hex" x="0" y="0" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="scale(0.8)">
|
||||
<pattern id="pattern-hex" x="0" y="0" width="10" height="10" patternUnits="userSpaceOnUse"
|
||||
patternTransform="scale(0.8)">
|
||||
<rect x="0" y="0" width="10" height="10" fill="none"/>
|
||||
<path d="M0,5 L2.5,0 L7.5,0 L10,5 L7.5,10 L2.5,10 Z" stroke-width="0.5" stroke="rgba(244, 90, 90, 0.2)" fill="rgba(244, 90, 90, 0.1)">
|
||||
<animate attributeName="stroke-opacity" values="0.1;0.3;0.1" dur="3s" repeatCount="indefinite" />
|
||||
<path d="M0,5 L2.5,0 L7.5,0 L10,5 L7.5,10 L2.5,10 Z" stroke-width="0.5" stroke="rgba(244, 90, 90, 0.2)"
|
||||
fill="rgba(244, 90, 90, 0.1)">
|
||||
<animate attributeName="stroke-opacity" values="0.1;0.3;0.1" dur="3s" repeatCount="indefinite"/>
|
||||
</path>
|
||||
</pattern>
|
||||
<rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-hex)" />
|
||||
<rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-hex)"/>
|
||||
|
||||
<g fill="none" stroke-width="0.5">
|
||||
<path d="M20,50 Q60,20 100,50 T180,50 T260,50" stroke="rgba(244, 90, 90, 0.6)">
|
||||
@@ -17,7 +19,7 @@
|
||||
values="M20,50 Q60,20 100,50 T180,50 T260,50;
|
||||
M20,50 Q60,80 100,50 T180,50 T260,50;
|
||||
M20,50 Q60,20 100,50 T180,50 T260,50"
|
||||
dur="10s" repeatCount="indefinite" />
|
||||
dur="10s" repeatCount="indefinite"/>
|
||||
</path>
|
||||
|
||||
<path d="M20,70 Q60,40 100,70 T180,70 T260,70" stroke="rgba(244, 90, 90, 0.4)">
|
||||
@@ -25,26 +27,26 @@
|
||||
values="M20,70 Q60,40 100,70 T180,70 T260,70;
|
||||
M20,70 Q60,100 100,70 T180,70 T260,70;
|
||||
M20,70 Q60,40 100,70 T180,70 T260,70"
|
||||
dur="12s" repeatCount="indefinite" />
|
||||
dur="12s" repeatCount="indefinite"/>
|
||||
</path>
|
||||
</g>
|
||||
|
||||
<circle cx="50" cy="50" r="1" fill="rgba(244, 90, 90, 0.8)">
|
||||
<animate attributeName="cx" values="50;250;50" dur="20s" repeatCount="indefinite" />
|
||||
<animate attributeName="cy" values="50;30;80;50" dur="16s" repeatCount="indefinite" />
|
||||
<animate attributeName="r" values="1;1.5;1" dur="5s" repeatCount="indefinite" />
|
||||
<animate attributeName="cx" values="50;250;50" dur="20s" repeatCount="indefinite"/>
|
||||
<animate attributeName="cy" values="50;30;80;50" dur="16s" repeatCount="indefinite"/>
|
||||
<animate attributeName="r" values="1;1.5;1" dur="5s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
|
||||
<circle cx="150" cy="30" r="1" fill="rgba(244, 90, 90, 0.8)">
|
||||
<animate attributeName="cx" values="150;100;200;150" dur="25s" repeatCount="indefinite" />
|
||||
<animate attributeName="cy" values="30;60;20;30" dur="18s" repeatCount="indefinite" />
|
||||
<animate attributeName="r" values="1;1.8;1" dur="6s" repeatCount="indefinite" />
|
||||
<animate attributeName="cx" values="150;100;200;150" dur="25s" repeatCount="indefinite"/>
|
||||
<animate attributeName="cy" values="30;60;20;30" dur="18s" repeatCount="indefinite"/>
|
||||
<animate attributeName="r" values="1;1.8;1" dur="6s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
|
||||
<circle cx="250" cy="70" r="1" fill="rgba(244, 90, 90, 0.8)">
|
||||
<animate attributeName="cx" values="250;150;250" dur="22s" repeatCount="indefinite" />
|
||||
<animate attributeName="cy" values="70;40;70" dur="15s" repeatCount="indefinite" />
|
||||
<animate attributeName="r" values="1;1.2;1" dur="4s" repeatCount="indefinite" />
|
||||
<animate attributeName="cx" values="250;150;250" dur="22s" repeatCount="indefinite"/>
|
||||
<animate attributeName="cy" values="70;40;70" dur="15s" repeatCount="indefinite"/>
|
||||
<animate attributeName="r" values="1;1.2;1" dur="4s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
</svg>
|
||||
</div>
|
||||
@@ -77,7 +79,7 @@
|
||||
<view class="form-container">
|
||||
<!-- 手机号码输入框 -->
|
||||
<view class="input-box">
|
||||
<t-icon name="mobile" size="20px" class="input-icon" />
|
||||
<t-icon name="mobile" size="20px" class="input-icon"/>
|
||||
<input
|
||||
class="input"
|
||||
type="tel"
|
||||
@@ -89,7 +91,7 @@
|
||||
|
||||
<!-- 验证码输入框 -->
|
||||
<view class="input-box">
|
||||
<t-icon name="shield-error" size="20px" class="input-icon" />
|
||||
<t-icon name="shield-error" size="20px" class="input-icon"/>
|
||||
<input
|
||||
class="input"
|
||||
type="number"
|
||||
@@ -107,11 +109,11 @@
|
||||
立即登录
|
||||
</view>
|
||||
|
||||
<!-- <!– 注册链接 –>-->
|
||||
<!-- <view class="register-link">-->
|
||||
<!-- <text>没有账号?</text>-->
|
||||
<!-- <text class="link">去注册</text>-->
|
||||
<!-- </view>-->
|
||||
<!-- <!– 注册链接 –>-->
|
||||
<!-- <view class="register-link">-->
|
||||
<!-- <text>没有账号?</text>-->
|
||||
<!-- <text class="link">去注册</text>-->
|
||||
<!-- </view>-->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -121,8 +123,10 @@
|
||||
import {ref, reactive, computed, onMounted, onBeforeUnmount} from 'vue'
|
||||
import {Toast} from 'tdesign-mobile-vue';
|
||||
import {useRequest} from "@/utils/request";
|
||||
import {useUserStore} from "@/store";
|
||||
|
||||
const request = useRequest()
|
||||
const userStore = useUserStore()
|
||||
const activeMethod = ref('phone')
|
||||
|
||||
const loginForm = reactive({
|
||||
@@ -167,15 +171,15 @@ const saveCountdownState = (seconds, phone) => {
|
||||
const restoreCountdownState = () => {
|
||||
const endTime = uni.getStorageSync(SMS_COUNTDOWN_KEY)
|
||||
const savedPhone = uni.getStorageSync(SMS_PHONE_KEY)
|
||||
|
||||
|
||||
if (endTime && savedPhone) {
|
||||
const now = Date.now()
|
||||
const remainingSeconds = Math.floor((endTime - now) / 1000)
|
||||
|
||||
|
||||
if (remainingSeconds > 0) {
|
||||
countdown.value = remainingSeconds
|
||||
startCountDownTimer() // 重新启动定时器
|
||||
|
||||
|
||||
// 如果用户还没输入手机号,填入保存的手机号
|
||||
if (!loginForm.phone) {
|
||||
loginForm.phone = savedPhone
|
||||
@@ -267,33 +271,47 @@ async function handleLogin() {
|
||||
}
|
||||
|
||||
try {
|
||||
const {data, code, msg} = await request.post('/client/auth/sms-login', loginForm)
|
||||
if (code === 0) {
|
||||
Toast({message: '登录成功', theme: 'success'})
|
||||
// 保存token
|
||||
uni.setStorageSync('token', data)
|
||||
userStore.smsLogin(loginForm).then(() => {
|
||||
userStore.getUserInfo().then(() => {
|
||||
Toast({message: '登录成功', theme: 'success'})
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}).catch(e => {
|
||||
Toast({message: e.message, theme: 'error'})
|
||||
})
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
Toast({message: e.message, theme: 'error'})
|
||||
})
|
||||
|
||||
// 获取之前保存的重定向URL
|
||||
const redirectUrl = uni.getStorageSync('REDIRECT_URL') || '/pages/index/index'
|
||||
uni.removeStorageSync('REDIRECT_URL') // 使用后删除
|
||||
|
||||
// 延迟跳转,让用户看到成功提示
|
||||
setTimeout(() => {
|
||||
if (redirectUrl.startsWith('/pages/index/') || redirectUrl.startsWith('/pages/profile/')) {
|
||||
// 主页和个人中心,使用switchTab
|
||||
uni.switchTab({
|
||||
url: redirectUrl
|
||||
})
|
||||
} else {
|
||||
// 其他页面使用reLaunch
|
||||
uni.reLaunch({
|
||||
url: redirectUrl
|
||||
})
|
||||
}
|
||||
}, 1000)
|
||||
} else {
|
||||
Toast({message: msg, theme: 'error'})
|
||||
}
|
||||
// const {data, code, msg} = await request.post('/client/auth/sms-login', loginForm)
|
||||
// if (code === 0) {
|
||||
// Toast({message: '登录成功', theme: 'success'})
|
||||
// // 保存token
|
||||
// uni.setStorageSync('token', data)
|
||||
//
|
||||
// // 获取之前保存的重定向URL
|
||||
// const redirectUrl = uni.getStorageSync('REDIRECT_URL') || '/pages/index/index'
|
||||
// uni.removeStorageSync('REDIRECT_URL') // 使用后删除
|
||||
//
|
||||
// // 延迟跳转,让用户看到成功提示
|
||||
// setTimeout(() => {
|
||||
// if (redirectUrl.startsWith('/pages/index/') || redirectUrl.startsWith('/pages/profile/')) {
|
||||
// // 主页和个人中心,使用switchTab
|
||||
// uni.switchTab({
|
||||
// url: redirectUrl
|
||||
// })
|
||||
// } else {
|
||||
// // 其他页面使用reLaunch
|
||||
// uni.reLaunch({
|
||||
// url: redirectUrl
|
||||
// })
|
||||
// }
|
||||
// }, 1000)
|
||||
// } else {
|
||||
// Toast({message: msg, theme: 'error'})
|
||||
// }
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
Toast({message: e.message, theme: 'error'})
|
||||
|
||||
Reference in New Issue
Block a user