mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	perf: 优化路由 rank,当rank 不存在时,根据顺序自动创建,首页路由永远在第一位
				
					
				
			This commit is contained in:
		
							parent
							
								
									152a2f8f56
								
							
						
					
					
						commit
						7987a18c70
					
				@ -36,7 +36,7 @@
 | 
			
		||||
    "@logicflow/extension": "^1.1.30",
 | 
			
		||||
    "@pureadmin/descriptions": "^1.1.0",
 | 
			
		||||
    "@pureadmin/table": "^1.8.3",
 | 
			
		||||
    "@pureadmin/utils": "^1.7.4",
 | 
			
		||||
    "@pureadmin/utils": "^1.7.5",
 | 
			
		||||
    "@vueuse/core": "^9.6.0",
 | 
			
		||||
    "@vueuse/motion": "2.0.0-beta.12",
 | 
			
		||||
    "@wangeditor/editor": "^5.1.21",
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							@ -16,7 +16,7 @@ specifiers:
 | 
			
		||||
  "@pureadmin/descriptions": ^1.1.0
 | 
			
		||||
  "@pureadmin/table": ^1.8.3
 | 
			
		||||
  "@pureadmin/theme": ^2.4.0
 | 
			
		||||
  "@pureadmin/utils": ^1.7.4
 | 
			
		||||
  "@pureadmin/utils": ^1.7.5
 | 
			
		||||
  "@types/element-resize-detector": 1.1.3
 | 
			
		||||
  "@types/intro.js": ^5.1.0
 | 
			
		||||
  "@types/js-cookie": ^3.0.1
 | 
			
		||||
@ -124,7 +124,7 @@ dependencies:
 | 
			
		||||
  "@logicflow/extension": 1.1.31
 | 
			
		||||
  "@pureadmin/descriptions": 1.1.1_element-plus@2.2.26
 | 
			
		||||
  "@pureadmin/table": 1.8.3_element-plus@2.2.26
 | 
			
		||||
  "@pureadmin/utils": 1.7.4_aotapuqn7htzdjltsyimavekky
 | 
			
		||||
  "@pureadmin/utils": 1.7.5_aotapuqn7htzdjltsyimavekky
 | 
			
		||||
  "@vueuse/core": 9.6.0_vue@3.2.45
 | 
			
		||||
  "@vueuse/motion": 2.0.0-beta.12_vue@3.2.45
 | 
			
		||||
  "@wangeditor/editor": 5.1.23
 | 
			
		||||
@ -1294,10 +1294,10 @@ packages:
 | 
			
		||||
      string-hash: 1.1.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@pureadmin/utils/1.7.4_aotapuqn7htzdjltsyimavekky:
 | 
			
		||||
  /@pureadmin/utils/1.7.5_aotapuqn7htzdjltsyimavekky:
 | 
			
		||||
    resolution:
 | 
			
		||||
      {
 | 
			
		||||
        integrity: sha512-uJNHcb2sO7R2avALf+v4TGyuZtJix0Wpw/kMb6eO4C003ZQImuGGi9WlxHaOlESrMyFHZ1AjWm5AqLwJLnpVlw==
 | 
			
		||||
        integrity: sha512-WqjtvMD67egsIJuPYx9V9aaXG3iYOTMj48XPfYxBzWTuUSvGkEj9M+3P1IrgG6GZQlK8dCPqaog8B0vujLjYJA==
 | 
			
		||||
      }
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      dayjs: "*"
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ export default {
 | 
			
		||||
  redirect: "/error/403",
 | 
			
		||||
  meta: {
 | 
			
		||||
    icon: "informationLine",
 | 
			
		||||
    // showLink: false,
 | 
			
		||||
    title: $t("menus.hsabnormal"),
 | 
			
		||||
    rank: error
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ import { useTimeoutFn } from "@vueuse/core";
 | 
			
		||||
import { RouteConfigs } from "@/layout/types";
 | 
			
		||||
import {
 | 
			
		||||
  isString,
 | 
			
		||||
  isAllEmpty,
 | 
			
		||||
  storageSession,
 | 
			
		||||
  isIncludeAllChildren
 | 
			
		||||
} from "@pureadmin/utils";
 | 
			
		||||
@ -28,19 +29,21 @@ const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}");
 | 
			
		||||
// 动态路由
 | 
			
		||||
import { getAsyncRoutes } from "@/api/routes";
 | 
			
		||||
 | 
			
		||||
function handRank(ramk: number, name: string, path: string) {
 | 
			
		||||
  return isAllEmpty(ramk) || (ramk === 0 && name !== "Home" && path !== "/")
 | 
			
		||||
    ? true
 | 
			
		||||
    : false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 按照路由中meta下的rank等级升序来排序路由 */
 | 
			
		||||
function ascending(arr: any[]) {
 | 
			
		||||
  arr.forEach(v => {
 | 
			
		||||
    if (v?.meta?.rank === null) v.meta.rank = undefined;
 | 
			
		||||
    if (v?.meta?.rank === 0) {
 | 
			
		||||
      if (v.name !== "Home" && v.path !== "/") {
 | 
			
		||||
        console.warn("rank only the home page can be 0");
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  arr.forEach((v, index) => {
 | 
			
		||||
    // 当rank不存在时,根据顺序自动创建,首页路由永远在第一位
 | 
			
		||||
    if (handRank(v?.meta?.rank, v.name, v.path)) v.meta.rank = index + 2;
 | 
			
		||||
  });
 | 
			
		||||
  return arr.sort(
 | 
			
		||||
    (a: { meta: { rank: number } }, b: { meta: { rank: number } }) => {
 | 
			
		||||
      return a?.meta?.rank - b?.meta?.rank;
 | 
			
		||||
      return a?.meta.rank - b?.meta.rank;
 | 
			
		||||
    }
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
@ -252,7 +255,7 @@ function formatTwoStageRoutes(routesList: RouteRecordRaw[]) {
 | 
			
		||||
        children: []
 | 
			
		||||
      });
 | 
			
		||||
    } else {
 | 
			
		||||
      newRoutesList[0].children.push({ ...v });
 | 
			
		||||
      newRoutesList[0]?.children.push({ ...v });
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
  return newRoutesList;
 | 
			
		||||
 | 
			
		||||
@ -7,8 +7,12 @@ defineOptions({
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="back" title="返回上一页" @click="$router.go(-1)">
 | 
			
		||||
    <back class="w-[80px] h-[80px]" />
 | 
			
		||||
  <div class="w-full h-full text-center">
 | 
			
		||||
    <h1>业务内容模块</h1>
 | 
			
		||||
    <p>使用场景:需要外嵌平台某个页面,不需要展示菜单导航以及额外模块</p>
 | 
			
		||||
    <div class="back" title="返回上一页" @click="$router.go(-1)">
 | 
			
		||||
      <back class="w-[80px] h-[80px]" />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user