import Vue from 'vue' import { login, logout } from '@/api/login' import { ACCESS_TOKEN } from '@/store/mutation-types' import { welcome } from '@/utils/util' import VueCookies from 'vue-cookies' const user = { state: { token: '', name: '', welcome: '', avatar: '', roles: { permissionList: [] }, info: {} }, mutations: { SET_TOKEN: (state, token) => { state.token = token sessionStorage.setItem(ACCESS_TOKEN, token) }, SET_NAME: (state, { name, welcome }) => { state.name = name state.welcome = welcome Vue.ls.set('userName', name, 7 * 24 * 60 * 60 * 1000) }, SET_AVATAR: (state, avatar) => { state.avatar = avatar }, SET_ROLES: (state, roles) => { state.roles = roles }, SET_INFO: (state, info) => { state.info = info } }, actions: { // 登录 Login ({ commit }, userInfo) { console.log(userInfo, 'userInfo----') return new Promise((resolve, reject) => { login(userInfo).then(res => { console.log(res, 'login success') if (res.userid) { Vue.ls.set('hasError', 0) commit('SET_TOKEN', res.userid) commit('SET_NAME', { name: res.userNameCN, welcome: welcome() }) commit('SET_AVATAR', res.avatar ? res.avatar : '') Vue.ls.set('rolesAccess', { permissionList: res.permCodes }, 7 * 24 * 60 * 60 * 1000) // 记住密码 if (userInfo.rememberMe) { VueCookies.set('REMEMBER_ME', JSON.stringify(userInfo)) } else { VueCookies.remove('REMEMBER_ME') } } resolve() }).catch(error => { reject(error) }) }) }, // 从本地存储更新用户信息 SetInfo ({ commit }, userInfo) { commit('SET_NAME', { name: userInfo, welcome: '' }) }, // 获取用户信息 GetInfo ({ commit, state }) { const roles = Vue.ls.get('rolesAccess') commit('SET_ROLES', roles) // commit('SET_TOKEN', sessionStorage.getItem(ACCESS_TOKEN) || state.token) commit('SET_NAME', { name: Vue.ls.get('userName'), welcome: '' }) return roles }, // 登出 Logout ({ commit, state }) { console.log(state) return new Promise((resolve) => { logout(state.token).then((res) => { resolve(res.data) }).catch((error) => { resolve(error) }).finally(() => { commit('SET_NAME', { name: '', welcome: '' }) commit('SET_AVATAR', '') commit('SET_TOKEN', '') commit('SET_ROLES', { permissionList: [] }) Vue.ls.remove(ACCESS_TOKEN) Vue.ls.remove('userName') Vue.ls.set('hasError', 0) sessionStorage.clear() }) }) } } } export default user