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=', GetTenantIdByName = '/system/tenant/get-id-by-name?name=',
LoginOut = '/system/auth/logout', LoginOut = '/system/auth/logout',
GetUserInfo = '/system/auth/get-permission-info', GetUserInfo = '/system/auth/get-permission-info',
GetAsyncRoutes = '/system/auth/list-menus',
GetCaptcha = '/system/captcha/get', GetCaptcha = '/system/captcha/get',
CheckCaptcha = '/system/captcha/check' CheckCaptcha = '/system/captcha/check'
} }
@ -33,11 +32,6 @@ export function getUserInfo() {
return defHttp.get({ url: Api.GetUserInfo }) return defHttp.get({ url: Api.GetUserInfo })
} }
// 路由
export function getAsyncRoutes() {
return defHttp.get({ url: Api.GetAsyncRoutes })
}
// 获取登录验证码 // 获取登录验证码
export function sendSmsCode(mobile, scene) { export function sendSmsCode(mobile, scene) {
return defHttp.post({ 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 caseSensitive?: boolean
children?: RouteItem[] 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 * @description: Login interface parameters
*/ */
@ -31,6 +33,7 @@ export interface LoginResultModel {
export interface GetUserInfoModel { export interface GetUserInfoModel {
roles: string[] roles: string[]
permissions: string[] permissions: string[]
menus: RouteItem[]
// 用户id // 用户id
user: userModel 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 { useMessage } from '@/hooks/web/useMessage'
import { filter } from '@/utils/helper/treeHelper' import { filter } from '@/utils/helper/treeHelper'
import projectSetting from '@/settings/projectSetting' import projectSetting from '@/settings/projectSetting'
import { getMenuList } from '@/api/base/menu'
import { PageEnum } from '@/enums/pageEnum' import { PageEnum } from '@/enums/pageEnum'
import { PermissionModeEnum } from '@/enums/appEnum' import { PermissionModeEnum } from '@/enums/appEnum'
@ -216,7 +215,7 @@ export const usePermissionStore = defineStore('app-permission', {
// 这个功能可能只需要执行一次,实际项目可以自己放在合适的时间 // 这个功能可能只需要执行一次,实际项目可以自己放在合适的时间
let routeList: AppRouteRecordRaw[] = [] let routeList: AppRouteRecordRaw[] = []
try { try {
routeList = (await getMenuList()) as AppRouteRecordRaw[] routeList = userInfo.menus as AppRouteRecordRaw[]
} catch (error) { } catch (error) {
console.error(error) console.error(error)
} }
@ -233,7 +232,6 @@ export const usePermissionStore = defineStore('app-permission', {
routeList = routeList.filter(routeRemoveIgnoreFilter) routeList = routeList.filter(routeRemoveIgnoreFilter)
routeList = flatMultiLevelRoutes(routeList) routeList = flatMultiLevelRoutes(routeList)
routes = [PAGE_NOT_FOUND_ROUTE, dashboard, ...routeList, about] routes = [PAGE_NOT_FOUND_ROUTE, dashboard, ...routeList, about]
console.info(routes)
break break
} }