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

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
},
},
}