|  |  |  | 
|---|
|  |  |  | // import { RouteConfigs } from "@/layout/types"; | 
|---|
|  |  |  | import { constantRoutes, Route } from '@/router'; | 
|---|
|  |  |  | import { addAsyncRoutes, ascending } from '@/router/utils'; | 
|---|
|  |  |  | import * as authServices from '@/services/api/auth'; | 
|---|
|  |  |  | import { myClient } from '@/constants/query'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export interface PermissonState { | 
|---|
|  |  |  | routes: Route[]; | 
|---|
|  |  |  | 
|---|
|  |  |  | getModuleList() { | 
|---|
|  |  |  | return new Promise<Route[]>(async (resolve, reject) => { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // const res = await baseModuleServices.getCurrentUserModuleList({ | 
|---|
|  |  |  | //   showLoading: false, | 
|---|
|  |  |  | // }); | 
|---|
|  |  |  | const res = []; | 
|---|
|  |  |  | const accessedRoutes = ascending(addAsyncRoutes(formatModuleList(res, null))); // createAccessedRoutes(userMenuList, userInfo) | 
|---|
|  |  |  | const params: API.APIgetCurrentLogierMenusParams = {}; | 
|---|
|  |  |  | const res = await myClient.fetchQuery({ | 
|---|
|  |  |  | queryKey: ['authServices/getCurrentLogierMenus', params], | 
|---|
|  |  |  | queryFn: () => { | 
|---|
|  |  |  | return authServices.getCurrentLogierMenus(params, { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | staleTime: Infinity, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const accessedRoutes = ascending(addAsyncRoutes(formatModuleList(res))); // createAccessedRoutes(userMenuList, userInfo) | 
|---|
|  |  |  | //@ts-ignore | 
|---|
|  |  |  | accessedRoutes.push({ path: '/:pathMatch(.*)*', redirect: '/404', hidden: true }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | return usePermissionStore(store); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function formatModuleList(moduleList: API.ModuleDto[], parentId: string | null) { | 
|---|
|  |  |  | const treeModuleList: Route[] = []; | 
|---|
|  |  |  | if (moduleList.length > 0) { | 
|---|
|  |  |  | moduleList.forEach((item) => { | 
|---|
|  |  |  | if (item.parentId === parentId) { | 
|---|
|  |  |  | const isRootModule = !item.parentId && item.isMenu === 1; | 
|---|
|  |  |  | //@ts-ignore | 
|---|
|  |  |  | const asyncRoute: Route = isRootModule | 
|---|
|  |  |  | ? { | 
|---|
|  |  |  | path: formatPath(item.path), | 
|---|
|  |  |  | name: item.enCode, | 
|---|
|  |  |  | redirect: 'noRedirect', | 
|---|
|  |  |  | alwaysShow: true, | 
|---|
|  |  |  | hidden: item.isMenu !== 1, | 
|---|
|  |  |  | meta: { | 
|---|
|  |  |  | title: item.name, | 
|---|
|  |  |  | icon: item.icon, | 
|---|
|  |  |  | moduleId: item.id, | 
|---|
|  |  |  | rank: item?.sortCode, | 
|---|
|  |  |  | rootMenu: true, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | : { | 
|---|
|  |  |  | path: formatPath(item.path), | 
|---|
|  |  |  | name: item.enCode, | 
|---|
|  |  |  | hidden: item.isMenu !== 1, | 
|---|
|  |  |  | alwaysShow: true, | 
|---|
|  |  |  | meta: { | 
|---|
|  |  |  | title: item.name, | 
|---|
|  |  |  | moduleId: item.id, | 
|---|
|  |  |  | noCache: !item.isCache, | 
|---|
|  |  |  | rank: item?.sortCode, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | const children = formatModuleList(moduleList, item.id); | 
|---|
|  |  |  | asyncRoute.children = children; | 
|---|
|  |  |  | treeModuleList.push(asyncRoute); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return treeModuleList; | 
|---|
|  |  |  | function formatModuleList(moduleList: API.GetMenusQueryResultItem[]) { | 
|---|
|  |  |  | return moduleList.map((item) => { | 
|---|
|  |  |  | const isRootModule = !item.parentId && item.type == EnumMenuType.Menu; | 
|---|
|  |  |  | //@ts-ignore | 
|---|
|  |  |  | let asyncRoute: Route = isRootModule | 
|---|
|  |  |  | ? { | 
|---|
|  |  |  | path: formatPath(item.url), | 
|---|
|  |  |  | name: item.code, | 
|---|
|  |  |  | redirect: 'noRedirect', | 
|---|
|  |  |  | alwaysShow: true, | 
|---|
|  |  |  | hidden: item.type != EnumMenuType.Menu, | 
|---|
|  |  |  | meta: { | 
|---|
|  |  |  | title: item.name, | 
|---|
|  |  |  | icon: item.icon, | 
|---|
|  |  |  | moduleId: item.id, | 
|---|
|  |  |  | rank: item?.sort, | 
|---|
|  |  |  | rootMenu: true, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | : { | 
|---|
|  |  |  | path: formatPath(item.url), | 
|---|
|  |  |  | name: item.code, | 
|---|
|  |  |  | hidden: item.type != EnumMenuType.Menu, | 
|---|
|  |  |  | alwaysShow: true, | 
|---|
|  |  |  | meta: { | 
|---|
|  |  |  | title: item.name, | 
|---|
|  |  |  | moduleId: item.id, | 
|---|
|  |  |  | noCache: !item.isCache, | 
|---|
|  |  |  | rank: item?.sort, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | const children = formatModuleList(item.children); | 
|---|
|  |  |  | asyncRoute.children = children; | 
|---|
|  |  |  | return asyncRoute; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function formatPath(path: string) { | 
|---|