兰宝车间质量管理系统-前端
疯狂的狮子Li
2023-04-03 1595cb282aab5399862fac6406b5de550863e3b6
src/store/modules/user.ts
@@ -6,78 +6,78 @@
import { LoginData } from '@/api/types';
export const useUserStore = defineStore('user', () => {
   const token = ref(getToken());
   const name = ref('');
   const nickname = ref('');
   const userId = ref<string | number>('');
   const avatar = ref('');
   const roles = ref<Array<string>>([]); // 用户角色编码集合 → 判断路由权限
   const permissions = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
  const token = ref(getToken());
  const name = ref('');
  const nickname = ref('');
  const userId = ref<string | number>('');
  const avatar = ref('');
  const roles = ref<Array<string>>([]); // 用户角色编码集合 → 判断路由权限
  const permissions = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
   /**
    * 登录
    * @param userInfo
    * @returns
    */
   const login = async (userInfo: LoginData): Promise<void> => {
      const [err, res] = await to(loginApi(userInfo));
      if (res) {
         const data = res.data;
         setToken(data.token);
         token.value = data.token;
         return Promise.resolve();
      }
      return Promise.reject(err);
   };
  /**
   * 登录
   * @param userInfo
   * @returns
   */
  const login = async (userInfo: LoginData): Promise<void> => {
    const [err, res] = await to(loginApi(userInfo));
    if (res) {
      const data = res.data;
      setToken(data.token);
      token.value = data.token;
      return Promise.resolve();
    }
    return Promise.reject(err);
  };
   // 获取用户信息
   const getInfo = async (): Promise<void> => {
      const [err, res] = await to(getUserInfo());
      if (res) {
         const data = res.data;
         const user = data.user;
         const profile = user.avatar == '' || user.avatar == null ? defAva : user.avatar;
  // 获取用户信息
  const getInfo = async (): Promise<void> => {
    const [err, res] = await to(getUserInfo());
    if (res) {
      const data = res.data;
      const user = data.user;
      const profile = user.avatar == '' || user.avatar == null ? defAva : user.avatar;
         if (data.roles && data.roles.length > 0) {
            // 验证返回的roles是否是一个非空数组
            roles.value = data.roles;
            permissions.value = data.permissions;
         } else {
            roles.value = ['ROLE_DEFAULT'];
         }
         name.value = user.userName;
         nickname.value = user.nickName;
         avatar.value = profile;
         userId.value = user.userId;
         return Promise.resolve();
      }
      return Promise.reject(err);
   };
      if (data.roles && data.roles.length > 0) {
        // 验证返回的roles是否是一个非空数组
        roles.value = data.roles;
        permissions.value = data.permissions;
      } else {
        roles.value = ['ROLE_DEFAULT'];
      }
      name.value = user.userName;
      nickname.value = user.nickName;
      avatar.value = profile;
      userId.value = user.userId;
      return Promise.resolve();
    }
    return Promise.reject(err);
  };
   // 注销
   const logout = async (): Promise<void> => {
      await logoutApi();
      token.value = '';
      roles.value = [];
      permissions.value = [];
      removeToken();
   };
  // 注销
  const logout = async (): Promise<void> => {
    await logoutApi();
    token.value = '';
    roles.value = [];
    permissions.value = [];
    removeToken();
  };
   return {
      userId,
      token,
      nickname,
      avatar,
      roles,
      permissions,
      login,
      getInfo,
      logout
   };
  return {
    userId,
    token,
    nickname,
    avatar,
    roles,
    permissions,
    login,
    getInfo,
    logout
  };
});
export default useUserStore;
// 非setup
export function useUserStoreHook() {
   return useUserStore(store);
  return useUserStore(store);
}