54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
import Vue from 'vue'
|
|
import Vuex from 'vuex'
|
|
|
|
Vue.use(Vuex)
|
|
|
|
export default new Vuex.Store({
|
|
state: {
|
|
isLoggedIn: false,
|
|
userInfo: null
|
|
},
|
|
getters: {
|
|
isLoggedIn: state => state.isLoggedIn,
|
|
userInfo: state => state.userInfo
|
|
},
|
|
mutations: {
|
|
SET_LOGIN_STATE(state, isLoggedIn) {
|
|
state.isLoggedIn = isLoggedIn
|
|
},
|
|
SET_USER_INFO(state, userInfo) {
|
|
state.userInfo = userInfo
|
|
},
|
|
CLEAR_USER_DATA(state) {
|
|
state.isLoggedIn = false
|
|
state.userInfo = null
|
|
}
|
|
},
|
|
actions: {
|
|
// 退出登录
|
|
async logout({ commit }) {
|
|
try {
|
|
// 清除本地存储
|
|
localStorage.removeItem('token')
|
|
localStorage.removeItem('userEmail')
|
|
localStorage.removeItem('jurisdiction')
|
|
|
|
// 清除 Vuex 状态
|
|
commit('CLEAR_USER_DATA')
|
|
|
|
// 触发全局事件,通知其他组件用户已退出
|
|
if (Vue.prototype.$bus) {
|
|
Vue.prototype.$bus.$emit('user-logged-out')
|
|
}
|
|
|
|
return true
|
|
} catch (error) {
|
|
console.error('退出登录失败:', error)
|
|
return false
|
|
}
|
|
}
|
|
},
|
|
modules: {
|
|
}
|
|
})
|