/** * @copyright chuzhixin 1204505056@qq.com * @description 登录、获取用户信息、退出登录、清除accessToken逻辑,不建议修改 */ import Vue from "vue" import { login, getUserCurrent, logout, getFeedBackNumber } from "@/api/user" import { getAccessToken, removeAccessToken, setAccessToken, } from "@/utils/accessToken" import { resetRouter } from "@/router" import { tokenName } from "@/config/settings" const state = { accessToken: getAccessToken(), userInfo: null, roles: [], menuList: [], group: "", feedBackNumber: 0, } const getters = { accessToken: (state) => state.accessToken, userInfo: (state) => state.userInfo, group: (state) => state.group, roles: (state) => state.roles, menuList: (state) => state.menuList, feedBackNumber: (state) => state.feedBackNumber, } const mutations = { setAccessToken(state, accessToken) { state.accessToken = accessToken setAccessToken(accessToken) }, setUserInfo(state, userInfo) { state.userInfo = userInfo }, setGroup(state, group) { state.group = group }, setRoles(state, roles) { state.roles = roles }, setMenuList(state, menuList) { state.menuList = menuList }, setFeedBackNumber(state, feedBackNumber) { state.feedBackNumber = feedBackNumber }, } const actions = { async login({ commit }, userInfo) { const data = await login(userInfo) const accessToken = data[tokenName] if (accessToken) { commit("setAccessToken", accessToken) const hour = new Date().getHours() const thisTime = hour < 8 ? "早上好" : hour <= 11 ? "上午好" : hour <= 13 ? "中午好" : hour < 18 ? "下午好" : "晚上好" } else { Vue.prototype.$baseMessage( `登录接口异常,未正确返回${tokenName}...`, "error" ) } }, async getInfo({ commit, state, dispatch }) { const { data } = await getUserCurrent() if (!data) { Vue.prototype.$baseMessage("验证失败,请重新登录...", "error") return false } let { menuList, user, roleList, group } = data if (menuList && user) { dispatch("getFeedBackNumber", user.id) commit("setMenuList", menuList) commit("setUserInfo", user) commit("setRoles", roleList) commit("setGroup", group) return menuList } else { Vue.prototype.$baseMessage("获取用户信息接口异常", "error") return false } }, async getFeedBackNumber({ commit }, id) { const { data } = await getFeedBackNumber(id) commit("setFeedBackNumber", data) }, async logout({ dispatch }) { await logout() await dispatch("tagsBar/delAllRoutes", null, { root: true, }) await dispatch("resetAccessToken") await resetRouter() }, resetAccessToken({ commit }) { commit("setMenuList", []) commit("setUserInfo", "") commit("setAccessToken", "") commit("setGroup", "") commit( "dict/setDictData", {}, { root: true, } ) removeAccessToken() }, } export default { state, getters, mutations, actions, }