| 
					
					
						
							
						
					
					
				 | 
				@ -21,7 +21,7 @@ const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}"); | 
			
		
		
	
		
			
				 | 
				 | 
				// 动态路由
 | 
				 | 
				 | 
				// 动态路由
 | 
			
		
		
	
		
			
				 | 
				 | 
				import { getAsyncRoutes } from "/@/api/routes"; | 
				 | 
				 | 
				import { getAsyncRoutes } from "/@/api/routes"; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 按照路由中meta下的rank等级升序来排序路由
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 按照路由中meta下的rank等级升序来排序路由 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function ascending(arr: any[]) { | 
				 | 
				 | 
				function ascending(arr: any[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  arr.forEach(v => { | 
				 | 
				 | 
				  arr.forEach(v => { | 
			
		
		
	
		
			
				 | 
				 | 
				    if (v?.meta?.rank === null) v.meta.rank = undefined; | 
				 | 
				 | 
				    if (v?.meta?.rank === null) v.meta.rank = undefined; | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -38,7 +38,7 @@ function ascending(arr: any[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  ); | 
				 | 
				 | 
				  ); | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 过滤meta中showLink为false的路由
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 过滤meta中showLink为false的路由 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function filterTree(data: RouteComponent[]) { | 
				 | 
				 | 
				function filterTree(data: RouteComponent[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  const newTree = cloneDeep(data).filter( | 
				 | 
				 | 
				  const newTree = cloneDeep(data).filter( | 
			
		
		
	
		
			
				 | 
				 | 
				    (v: { meta: { showLink: boolean } }) => v.meta?.showLink !== false | 
				 | 
				 | 
				    (v: { meta: { showLink: boolean } }) => v.meta?.showLink !== false | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -49,7 +49,7 @@ function filterTree(data: RouteComponent[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  return newTree; | 
				 | 
				 | 
				  return newTree; | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 批量删除缓存路由(keepalive)
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 批量删除缓存路由(keepalive) */ | 
			
		
		
	
		
			
				 | 
				 | 
				function delAliveRoutes(delAliveRouteList: Array<RouteConfigs>) { | 
				 | 
				 | 
				function delAliveRoutes(delAliveRouteList: Array<RouteConfigs>) { | 
			
		
		
	
		
			
				 | 
				 | 
				  delAliveRouteList.forEach(route => { | 
				 | 
				 | 
				  delAliveRouteList.forEach(route => { | 
			
		
		
	
		
			
				 | 
				 | 
				    usePermissionStoreHook().cacheOperate({ | 
				 | 
				 | 
				    usePermissionStoreHook().cacheOperate({ | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -59,7 +59,7 @@ function delAliveRoutes(delAliveRouteList: Array<RouteConfigs>) { | 
			
		
		
	
		
			
				 | 
				 | 
				  }); | 
				 | 
				 | 
				  }); | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 通过path获取父级路径
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 通过path获取父级路径 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function getParentPaths(path: string, routes: RouteRecordRaw[]) { | 
				 | 
				 | 
				function getParentPaths(path: string, routes: RouteRecordRaw[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  // 深度遍历查找
 | 
				 | 
				 | 
				  // 深度遍历查找
 | 
			
		
		
	
		
			
				 | 
				 | 
				  function dfs(routes: RouteRecordRaw[], path: string, parents: string[]) { | 
				 | 
				 | 
				  function dfs(routes: RouteRecordRaw[], path: string, parents: string[]) { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -83,7 +83,7 @@ function getParentPaths(path: string, routes: RouteRecordRaw[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  return dfs(routes, path, []); | 
				 | 
				 | 
				  return dfs(routes, path, []); | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 查找对应path的路由信息
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 查找对应path的路由信息 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function findRouteByPath(path: string, routes: RouteRecordRaw[]) { | 
				 | 
				 | 
				function findRouteByPath(path: string, routes: RouteRecordRaw[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  let res = routes.find((item: { path: string }) => item.path == path); | 
				 | 
				 | 
				  let res = routes.find((item: { path: string }) => item.path == path); | 
			
		
		
	
		
			
				 | 
				 | 
				  if (res) { | 
				 | 
				 | 
				  if (res) { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -114,7 +114,7 @@ function addPathMatch() { | 
			
		
		
	
		
			
				 | 
				 | 
				  } | 
				 | 
				 | 
				  } | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 初始化路由
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 初始化路由 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function initRouter(name: string) { | 
				 | 
				 | 
				function initRouter(name: string) { | 
			
		
		
	
		
			
				 | 
				 | 
				  return new Promise(resolve => { | 
				 | 
				 | 
				  return new Promise(resolve => { | 
			
		
		
	
		
			
				 | 
				 | 
				    getAsyncRoutes({ name }).then(({ info }) => { | 
				 | 
				 | 
				    getAsyncRoutes({ name }).then(({ info }) => { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -195,7 +195,7 @@ function formatTwoStageRoutes(routesList: RouteRecordRaw[]) { | 
			
		
		
	
		
			
				 | 
				 | 
				  return newRoutesList; | 
				 | 
				 | 
				  return newRoutesList; | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 处理缓存路由(添加、删除、刷新)
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 处理缓存路由(添加、删除、刷新) */ | 
			
		
		
	
		
			
				 | 
				 | 
				function handleAliveRoute(matched: RouteRecordNormalized[], mode?: string) { | 
				 | 
				 | 
				function handleAliveRoute(matched: RouteRecordNormalized[], mode?: string) { | 
			
		
		
	
		
			
				 | 
				 | 
				  switch (mode) { | 
				 | 
				 | 
				  switch (mode) { | 
			
		
		
	
		
			
				 | 
				 | 
				    case "add": | 
				 | 
				 | 
				    case "add": | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -222,7 +222,7 @@ function handleAliveRoute(matched: RouteRecordNormalized[], mode?: string) { | 
			
		
		
	
		
			
				 | 
				 | 
				  } | 
				 | 
				 | 
				  } | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 过滤后端传来的动态路由 重新生成规范路由
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 过滤后端传来的动态路由 重新生成规范路由 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function addAsyncRoutes(arrRoutes: Array<RouteRecordRaw>) { | 
				 | 
				 | 
				function addAsyncRoutes(arrRoutes: Array<RouteRecordRaw>) { | 
			
		
		
	
		
			
				 | 
				 | 
				  if (!arrRoutes || !arrRoutes.length) return; | 
				 | 
				 | 
				  if (!arrRoutes || !arrRoutes.length) return; | 
			
		
		
	
		
			
				 | 
				 | 
				  const modulesRoutesKeys = Object.keys(modulesRoutes); | 
				 | 
				 | 
				  const modulesRoutesKeys = Object.keys(modulesRoutes); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -251,7 +251,7 @@ function addAsyncRoutes(arrRoutes: Array<RouteRecordRaw>) { | 
			
		
		
	
		
			
				 | 
				 | 
				  return arrRoutes; | 
				 | 
				 | 
				  return arrRoutes; | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 获取路由历史模式 https://next.router.vuejs.org/zh/guide/essentials/history-mode.html
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 获取路由历史模式 https://next.router.vuejs.org/zh/guide/essentials/history-mode.html */ | 
			
		
		
	
		
			
				 | 
				 | 
				function getHistoryMode(): RouterHistory { | 
				 | 
				 | 
				function getHistoryMode(): RouterHistory { | 
			
		
		
	
		
			
				 | 
				 | 
				  const routerHistory = loadEnv().VITE_ROUTER_HISTORY; | 
				 | 
				 | 
				  const routerHistory = loadEnv().VITE_ROUTER_HISTORY; | 
			
		
		
	
		
			
				 | 
				 | 
				  // len为1 代表只有历史模式 为2 代表历史模式中存在base参数 https://next.router.vuejs.org/zh/api/#%E5%8F%82%E6%95%B0-1
 | 
				 | 
				 | 
				  // len为1 代表只有历史模式 为2 代表历史模式中存在base参数 https://next.router.vuejs.org/zh/api/#%E5%8F%82%E6%95%B0-1
 | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -275,7 +275,7 @@ function getHistoryMode(): RouterHistory { | 
			
		
		
	
		
			
				 | 
				 | 
				  } | 
				 | 
				 | 
				  } | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				// 是否有权限
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				/** 是否有权限 */ | 
			
		
		
	
		
			
				 | 
				 | 
				function hasPermissions(value: Array<string>): boolean { | 
				 | 
				 | 
				function hasPermissions(value: Array<string>): boolean { | 
			
		
		
	
		
			
				 | 
				 | 
				  if (value && value instanceof Array && value.length > 0) { | 
				 | 
				 | 
				  if (value && value instanceof Array && value.length > 0) { | 
			
		
		
	
		
			
				 | 
				 | 
				    const roles = usePermissionStoreHook().buttonAuth; | 
				 | 
				 | 
				    const roles = usePermissionStoreHook().buttonAuth; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |