You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.8 KiB
83 lines
1.8 KiB
import { Message } from 'element-ui'
|
|
import { login, getUser, updateUserProfile, logout } from '~/api/user'
|
|
export const user = {
|
|
namespaced: true,
|
|
state: {
|
|
user: {
|
|
id: 0,
|
|
username: '',
|
|
realname: '',
|
|
email: '',
|
|
mobile: '',
|
|
avatar: '',
|
|
address: '',
|
|
signature: '',
|
|
},
|
|
token: '',
|
|
},
|
|
mutations: {
|
|
setUser(state, user) {
|
|
state.user = user
|
|
},
|
|
mergeUser(state, user) {
|
|
state.user = Object.assign(state.user, user)
|
|
},
|
|
setToken(state, token) {
|
|
state.token = token
|
|
},
|
|
logout(state) {
|
|
state.user = {}
|
|
state.token = ''
|
|
localStorage.clear()
|
|
},
|
|
},
|
|
actions: {
|
|
// 获取用户信息
|
|
async getUser({ commit }) {
|
|
const res = await getUser()
|
|
if (res.status === 200) {
|
|
commit('setUser', res.data.user)
|
|
}
|
|
return res
|
|
},
|
|
async updateUserProfile({ commit }, profile) {
|
|
const res = await updateUserProfile(profile)
|
|
if (res.status === 200) {
|
|
commit('mergeUser', profile)
|
|
} else {
|
|
Message({
|
|
type: 'error',
|
|
message: res.data.message || '修改失败',
|
|
})
|
|
}
|
|
return res
|
|
},
|
|
async login({ commit }, loginInfo) {
|
|
const res = await login(loginInfo)
|
|
if (res.status === 200) {
|
|
commit('setUser', res.data.user)
|
|
commit('setToken', res.data.token)
|
|
} else {
|
|
Message({
|
|
type: 'error',
|
|
message: res.data.message || '登录失败',
|
|
})
|
|
}
|
|
return res
|
|
},
|
|
async logout({ commit }) {
|
|
const res = await logout()
|
|
commit('logout')
|
|
return res
|
|
},
|
|
},
|
|
getters: {
|
|
user(state) {
|
|
return state.user
|
|
},
|
|
token(state) {
|
|
return state.token
|
|
},
|
|
},
|
|
}
|