perf: 优化路由 rank,当rank 不存在时,根据顺序自动创建,首页路由永远在第一位

This commit is contained in:
xiaoxian521 2022-12-06 21:08:41 +08:00
parent 152a2f8f56
commit 7987a18c70
5 changed files with 24 additions and 16 deletions

View File

@ -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
View File

@ -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: "*"

View File

@ -6,6 +6,7 @@ export default {
redirect: "/error/403",
meta: {
icon: "informationLine",
// showLink: false,
title: $t("menus.hsabnormal"),
rank: error
},

View File

@ -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;

View File

@ -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>