Browse Source

feat: 登录时,直接从用户信息中,获取菜单。目的:加快首页的加载速度

main
xingyu 2 years ago
parent
commit
28ae5f793e
  1. 6
      src/api/base/login.ts
  2. 14
      src/api/base/menu.ts
  3. 5
      src/api/base/model/menuModel.ts
  4. 3
      src/api/base/model/userModel.ts
  5. 4
      src/store/modules/permission.ts

6
src/api/base/login.ts

@ -8,7 +8,6 @@ enum Api {
GetTenantIdByName = '/system/tenant/get-id-by-name?name=',
LoginOut = '/system/auth/logout',
GetUserInfo = '/system/auth/get-permission-info',
GetAsyncRoutes = '/system/auth/list-menus',
GetCaptcha = '/system/captcha/get',
CheckCaptcha = '/system/captcha/check'
}
@ -33,11 +32,6 @@ export function getUserInfo() {
return defHttp.get({ url: Api.GetUserInfo })
}
// 路由
export function getAsyncRoutes() {
return defHttp.get({ url: Api.GetAsyncRoutes })
}
// 获取登录验证码
export function sendSmsCode(mobile, scene) {
return defHttp.post({

14
src/api/base/menu.ts

@ -1,14 +0,0 @@
import { defHttp } from '@/utils/http/axios'
import { getMenuListResultModel } from './model/menuModel'
enum Api {
GetMenuList = '/system/auth/list-menus'
}
/**
* @description: Get user menu based on id
*/
export function getMenuList() {
return defHttp.get<getMenuListResultModel>({ url: Api.GetMenuList })
}

5
src/api/base/model/menuModel.ts

@ -9,8 +9,3 @@ export interface RouteItem {
caseSensitive?: boolean
children?: RouteItem[]
}
/**
* @description: Get menu return value
*/
export type getMenuListResultModel = RouteItem[]

3
src/api/base/model/userModel.ts

@ -1,3 +1,5 @@
import { RouteItem } from './menuModel'
/**
* @description: Login interface parameters
*/
@ -31,6 +33,7 @@ export interface LoginResultModel {
export interface GetUserInfoModel {
roles: string[]
permissions: string[]
menus: RouteItem[]
// 用户id
user: userModel
}

4
src/store/modules/permission.ts

@ -16,7 +16,6 @@ import { useI18n } from '@/hooks/web/useI18n'
import { useMessage } from '@/hooks/web/useMessage'
import { filter } from '@/utils/helper/treeHelper'
import projectSetting from '@/settings/projectSetting'
import { getMenuList } from '@/api/base/menu'
import { PageEnum } from '@/enums/pageEnum'
import { PermissionModeEnum } from '@/enums/appEnum'
@ -216,7 +215,7 @@ export const usePermissionStore = defineStore('app-permission', {
// 这个功能可能只需要执行一次,实际项目可以自己放在合适的时间
let routeList: AppRouteRecordRaw[] = []
try {
routeList = (await getMenuList()) as AppRouteRecordRaw[]
routeList = userInfo.menus as AppRouteRecordRaw[]
} catch (error) {
console.error(error)
}
@ -233,7 +232,6 @@ export const usePermissionStore = defineStore('app-permission', {
routeList = routeList.filter(routeRemoveIgnoreFilter)
routeList = flatMultiLevelRoutes(routeList)
routes = [PAGE_NOT_FOUND_ROUTE, dashboard, ...routeList, about]
console.info(routes)
break
}