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.
 
 
 
 
 
 

94 lines
2.7 KiB

import store from '@/store'
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/token'
const user = {
state: {
token: getToken(),
userInfo: storage.get(constant.userInfo),
loginInfo: storage.get(constant.loginInfo),
name: storage.get(constant.name),
avatar: storage.get(constant.avatar)
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_USER_INFO: (state, userInfo) => {
state.userInfo = userInfo
storage.set(constant.userInfo, userInfo)
},
SET_LOGIN_INFO: (state, loginInfo) => {
state.loginInfo = loginInfo
storage.set(constant.loginInfo, loginInfo)
},
SET_NAME: (state, name) => {
state.name = name
storage.set(constant.name, name)
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
storage.set(constant.avatar, avatar)
}
},
actions: {
// 登录
Login({ commit }, userInfo) {
const loginType = userInfo.loginType
const userName = userInfo.userName
const password = userInfo.password
const smsCode = userInfo.smsCode
const registerFlag = userInfo.registerFlag
const code = userInfo.code
const uuid = userInfo.uuid
return new Promise((resolve, reject) => {
login(loginType, userName, password, smsCode, registerFlag, code, uuid).then(res => {
setToken(res.data.token)
commit('SET_TOKEN', res.data.token)
commit('SET_LOGIN_INFO', userInfo) // 保存登录信息,后续可以自动登录
resolve()
}).catch(error => {
reject(error)
})
})
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.data.user
const avatar = (user == null || user.avatar == "" || user.avatar == null) ? "/static/image/user/yy.png" : user.avatar
const userName = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
commit('SET_USER_INFO', user)
commit('SET_NAME', userName)
commit('SET_AVATAR', avatar)
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 退出系统
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_USER_INFO', {})
removeToken()
storage.clean()
resolve()
}).catch(error => {
reject(error)
})
})
}
}
}
export default user