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