添加登录、注册、重置密码、谷歌验证码处理中
This commit is contained in:
@@ -75,7 +75,9 @@ export default {
|
||||
cartServerCount: 0,
|
||||
navigation: mainNavigation,
|
||||
// 用户邮箱
|
||||
userEmail: ''
|
||||
userEmail: '',
|
||||
// 登录状态(改为 data 属性,支持响应式更新)
|
||||
isLoggedIn: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -87,15 +89,12 @@ export default {
|
||||
// 计算面包屑导航
|
||||
breadcrumbs() {
|
||||
return getBreadcrumb(this.$route.path)
|
||||
},
|
||||
// 判断是否已登录(检查localStorage中是否有token)
|
||||
isLoggedIn() {
|
||||
const token = JSON.parse(localStorage.getItem('leasToken'))
|
||||
return !!token // 有token就是已登录,没有就是未登录
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
mounted() {
|
||||
// 初始化登录状态
|
||||
this.updateLoginStatus()
|
||||
this.loadCart()
|
||||
// 监听购物车变化
|
||||
window.addEventListener('storage', this.handleStorageChange)
|
||||
@@ -103,12 +102,15 @@ export default {
|
||||
this.loadServerCartCount()
|
||||
// 监听应用内购物车更新事件
|
||||
window.addEventListener('cart-updated', this.handleCartUpdated)
|
||||
// 监听登录状态变化事件(当 token 被清除时触发)
|
||||
window.addEventListener('login-status-changed', this.handleLoginStatusChanged)
|
||||
// 加载用户信息(邮箱)
|
||||
this.loadUserEmail()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('storage', this.handleStorageChange)
|
||||
window.removeEventListener('cart-updated', this.handleCartUpdated)
|
||||
window.removeEventListener('login-status-changed', this.handleLoginStatusChanged)
|
||||
},
|
||||
methods: {
|
||||
loadCart() {
|
||||
@@ -151,6 +153,38 @@ export default {
|
||||
if (event.key === 'power_leasing_cart_v1') {
|
||||
this.loadCart()
|
||||
this.loadServerCartCount()
|
||||
} else if (event.key === 'leasToken') {
|
||||
// 当 token 变化时,更新登录状态
|
||||
this.updateLoginStatus()
|
||||
// 如果 token 被清除,同时清除用户信息
|
||||
if (!event.newValue) {
|
||||
this.userEmail = ''
|
||||
} else {
|
||||
this.loadUserEmail()
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 处理登录状态变化事件
|
||||
*/
|
||||
handleLoginStatusChanged() {
|
||||
this.updateLoginStatus()
|
||||
// 如果未登录,清除用户信息
|
||||
if (!this.isLoggedIn) {
|
||||
this.userEmail = ''
|
||||
} else {
|
||||
this.loadUserEmail()
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 更新登录状态
|
||||
*/
|
||||
updateLoginStatus() {
|
||||
try {
|
||||
const token = localStorage.getItem('leasToken')
|
||||
this.isLoggedIn = !!token && token !== 'null' && token !== 'undefined'
|
||||
} catch (e) {
|
||||
this.isLoggedIn = false
|
||||
}
|
||||
},
|
||||
handleCartUpdated(event) {
|
||||
@@ -207,11 +241,17 @@ export default {
|
||||
localStorage.removeItem('userId')
|
||||
localStorage.removeItem('username')
|
||||
|
||||
// 更新登录状态
|
||||
this.updateLoginStatus()
|
||||
|
||||
// 清空购物车
|
||||
this.user = null
|
||||
this.cart = []
|
||||
this.userEmail = ''
|
||||
|
||||
// 触发登录状态变化事件
|
||||
window.dispatchEvent(new CustomEvent('login-status-changed'))
|
||||
|
||||
// 提示用户
|
||||
this.$message.success('退出登录成功')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user