Ben Lin
2024-06-27 dfd2d0218bbcea93b4bfb0e7ca7ac9b1cc1cc7da
src/store/modules/user.ts
@@ -1,23 +1,22 @@
import type { UserInfo } from '/#/store';
import type { ErrorMessageMode } from '/#/axios';
import type { UserInfo } from '#/store';
import type { ErrorMessageMode } from '#/axios';
import { defineStore } from 'pinia';
import { store } from '/@/store';
import { RoleEnum } from '/@/enums/roleEnum';
import { PageEnum } from '/@/enums/pageEnum';
import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum';
import { getAuthCache, setAuthCache } from '/@/utils/auth';
import { GetUserInfoModel, LoginParams } from '/@/api/sys/model/userModel';
import { doLogout, getTgUserInfo, getUserInfo, loginApi } from '/@/api/sys/user';
import { useI18n } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
import { router } from '/@/router';
import { usePermissionStore } from '/@/store/modules/permission';
import { store } from '@/store';
import { RoleEnum } from '@/enums/roleEnum';
import { PageEnum } from '@/enums/pageEnum';
import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '@/enums/cacheEnum';
import { getAuthCache, setAuthCache } from '@/utils/auth';
import { GetUserInfoModel, LoginParams } from '@/api/sys/model/userModel';
import { doLogout, getTgUserInfo, getUserInfo, loginApi } from '@/api/sys/user';
import { useI18n } from '@/hooks/web/useI18n';
import { useMessage } from '@/hooks/web/useMessage';
import { router } from '@/router';
import { usePermissionStore } from '@/store/modules/permission';
import { RouteRecordRaw } from 'vue-router';
import { PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic';
import { isArray, isEmpty } from '/@/utils/is';
import { AccountInfo } from '/@/api/tigerapi/model/systemModel';
import { PAGE_NOT_FOUND_ROUTE } from '@/router/routes/basic';
import { isArray } from '@/utils/is';
import { h } from 'vue';
import { AccountInfo } from '/@/api/tigerapi/model/systemModel';
import { getMenuAuthList } from '/@/api/sys/menu';
import { iV_USER_MENU } from '/@/api/tigerapi/model/vModel';
@@ -90,7 +89,6 @@
      params: AccountInfo & {
        goHome?: boolean;
        mode?: ErrorMessageMode;
      },
    ): Promise<GetUserInfoModel | null> {
      try {
@@ -100,15 +98,17 @@
        if (!data.IsSuccessed) {
          return Promise.reject(data.LocaleMsg);
        }
        // save token
        this.setToken(data.Data?.TOKEN);
        return this.afterLoginAction(goHome,loginParams.data.password==='000000');
        return this.afterLoginAction(goHome, loginParams.data.password === '000000');
      } catch (error) {
        return Promise.reject(error);
      }
    },
    async afterLoginAction(goHome?: boolean,changepwd?:boolean): Promise<GetUserInfoModel | null> {
    async afterLoginAction(
      goHome?: boolean,
      changepwd?: boolean,): Promise<GetUserInfoModel | null> {
      if (!this.getToken) return null;
      // get user info
      const userInfo = await this.getTgUserInfoAction(changepwd);
@@ -118,28 +118,32 @@
        this.setSessionTimeout(false);
      } else {
        // const permissionStore = usePermissionStore();
        // // 动态路由加载(首次)
        // if (!permissionStore.isDynamicAddedRoute) {
        //   const routes = await permissionStore.buildRoutesAction();
        //   routes.forEach((route) => {
        //   [...routes, PAGE_NOT_FOUND_ROUTE].forEach((route) => {
        //     router.addRoute(route as unknown as RouteRecordRaw);
        //   });
        //   router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw);
        //   // 记录动态路由加载完成
        //   permissionStore.setDynamicAddedRoute(true);
        // }
        goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME));
      }
      return userInfo;
    },
    async getUserInfoAction(changepwd:boolean): Promise<UserInfo | null> {
    async getUserInfoAction(changepwd?: boolean): Promise<UserInfo | null> {
      if (!this.getToken) return null;
      const data = await getTgUserInfo();
      const vUserMenu = await getMenuAuthList(data.USER_ID);
      const userInfo: UserInfo = {
        userId: data.USER_ID,
        changepwd:changepwd,
        changepwd: changepwd,
        username: data.USER_NAME,
        realName: data.USER_NAME,
        orgCode: data.ORG_CODE,
        orgCode: '', //globSetting.useOrg == 'Y' ? data.ORG_CODE : '',
        prodCode: data.FTY_CODE, //globSetting.useOrg == 'N' ? data.ORG_CODE : '',
        avatar: '',
        roles: vUserMenu.Data.Items as unknown as iV_USER_MENU[],
      };
@@ -152,23 +156,6 @@
        this.setRoleList([]);
      }
      this.setUserInfo(userInfo);
      return userInfo;
    },
    async getTgUserInfoAction(changepwd:boolean,orgCode?: string): Promise<UserInfo | null> {
      if (!this.getToken) return null;
      const data = await getTgUserInfo();
      const vUserMenu = await getMenuAuthList(data.USER_ID);
      const userInfo: UserInfo = {
        userId: data.USER_ID,
        username: data.USER_NAME,
        changepwd:changepwd,
        realName: data.USER_NAME,
        orgCode: data.ORG_CODE,
        avatar: '',
        roles: vUserMenu.Data.Items as unknown as iV_USER_MENU[],
      };
      this.setUserInfo(userInfo);
      //console.log(data[0].LOGINNAME);
      return userInfo;
    },
    /**
@@ -185,9 +172,37 @@
      this.setToken(undefined);
      this.setSessionTimeout(false);
      this.setUserInfo(null);
      goLogin && router.push(PageEnum.BASE_LOGIN);
      if (goLogin) {
        // 直接回登陆页
        router.replace(PageEnum.BASE_LOGIN);
      } else {
        // 回登陆页带上当前路由地址
        router.replace({
          path: PageEnum.BASE_LOGIN,
          query: {
            redirect: encodeURIComponent(router.currentRoute.value.fullPath),
          },
        });
      }
    },
    async getTgUserInfoAction(changepwd?: boolean, orgCode?: string): Promise<UserInfo | null> {
      if (!this.getToken) return null;
      const data = await getTgUserInfo();
      const vUserMenu = await getMenuAuthList(data.USER_ID);
      const userInfo: UserInfo = {
        userId: data.USER_ID,
        username: data.USER_NAME,
        changepwd: changepwd,
        realName: data.USER_NAME,
        orgCode: '', //globSetting.useOrg == 'Y' ? data.ORG_CODE : '',
        prodCode: data.FTY_CODE, //globSetting.useOrg == 'N' ? data.FTY_CODE : '',
        avatar: '',
        roles: vUserMenu.Data.Items as unknown as iV_USER_MENU[],
      };
      this.setUserInfo(userInfo);
      //console.log(data[0].LOGINNAME);
      return userInfo;
    },
    /**
     * @description: Confirm before logging out
     */
@@ -199,6 +214,7 @@
        title: () => h('span', t('sys.app.logoutTip')),
        content: () => h('span', t('sys.app.logoutMessage')),
        onOk: async () => {
          // 主动登出,不带redirect地址
          await this.logout(true);
        },
      });