zhangzengfei
2021-11-17 5186227a467bd34dc253e64b23bc96d3a07bb399
src/store/modules/user.js
@@ -3,97 +3,103 @@
 * @description 登录、获取用户信息、退出登录、清除accessToken逻辑,不建议修改
 */
import Vue from 'vue'
import { getUserInfo, login, logout } from '@/api/user'
import Vue from "vue";
import { getUserInfo, login, logout } from "@/api/user";
import {
  getAccessToken,
  removeAccessToken,
  setAccessToken,
} from '@/utils/accessToken'
import { resetRouter } from '@/router'
import { title, tokenName } from '@/config'
} from "@/utils/accessToken";
import { resetRouter } from "@/router";
import { title, tokenName } from "@/config";
const state = () => ({
  accessToken: getAccessToken(),
  username: '',
  avatar: '',
  username: "",
  userId: "",
  avatar: "",
  permissions: [],
})
});
const getters = {
  accessToken: (state) => state.accessToken,
  username: (state) => state.username,
  userId: (state) => state.userId,
  avatar: (state) => state.avatar,
  permissions: (state) => state.permissions,
}
};
const mutations = {
  setAccessToken(state, accessToken) {
    state.accessToken = accessToken
    setAccessToken(accessToken)
    state.accessToken = accessToken;
    setAccessToken(accessToken);
  },
  setUsername(state, username) {
    state.username = username
    state.username = username;
  },
  setUserId(state, id) {
    state.userId = id;
  },
  setAvatar(state, avatar) {
    state.avatar = avatar
    state.avatar = avatar;
  },
  setPermissions(state, permissions) {
    state.permissions = permissions
    state.permissions = permissions;
  },
}
};
const actions = {
  setPermissions({ commit }, permissions) {
    commit('setPermissions', permissions)
    commit("setPermissions", permissions);
  },
  async login({ commit }, userInfo) {
    const { data } = await login(userInfo)
    const accessToken = data[tokenName]
    const { data } = await login(userInfo);
    const accessToken = data[tokenName];
    if (accessToken) {
      commit('setAccessToken', accessToken)
      const hour = new Date().getHours()
      commit("setAccessToken", accessToken);
      const hour = new Date().getHours();
      const thisTime =
        hour < 8
          ? '早上好'
          ? "早上好"
          : hour <= 11
          ? '上午好'
          ? "上午好"
          : hour <= 13
          ? '中午好'
          ? "中午好"
          : hour < 18
          ? '下午好'
          : '晚上好'
      Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
          ? "下午好"
          : "晚上好";
      Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`);
    } else {
      Vue.prototype.$baseMessage(
        `登录接口异常,未正确返回${tokenName}...`,
        'error'
      )
        "error"
      );
    }
  },
  async getUserInfo({ commit, state }) {
    const { data } = await getUserInfo(state.accessToken)
    const { data } = await getUserInfo(state.accessToken);
    if (!data) {
      Vue.prototype.$baseMessage('验证失败,请重新登录...', 'error')
      return false
      Vue.prototype.$baseMessage("验证失败,请重新登录...", "error");
      return false;
    }
    let { permissions, username, avatar } = data
    let { permissions, username, userId, avatar } = data;
    if (permissions && username && Array.isArray(permissions)) {
      commit('setPermissions', permissions)
      commit('setUsername', username)
      commit('setAvatar', avatar)
      return permissions
      commit("setPermissions", permissions);
      commit("setUsername", username);
      commit("setUserId", userId);
      commit("setAvatar", avatar);
      return permissions;
    } else {
      Vue.prototype.$baseMessage('用户信息接口异常', 'error')
      return false
      Vue.prototype.$baseMessage("用户信息接口异常", "error");
      return false;
    }
  },
  async logout({ dispatch }) {
    await logout(state.accessToken)
    await dispatch('resetAccessToken')
    await resetRouter()
    await logout(state.accessToken);
    await dispatch("resetAccessToken");
    await resetRouter();
  },
  resetAccessToken({ commit }) {
    commit('setPermissions', [])
    commit('setAccessToken', '')
    removeAccessToken()
    commit("setPermissions", []);
    commit("setAccessToken", "");
    removeAccessToken();
  },
}
export default { state, getters, mutations, actions }
};
export default { state, getters, mutations, actions };