From 27d36f797012e33280f36117e86bae84ad1ca06c Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期三, 26 六月 2024 12:02:28 +0800
Subject: [PATCH] !129 feat: 路由name重复检查 Merge pull request !129 from 玲娜贝er/dev
---
src/store/modules/permission.ts | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
index cf12a73..8bab2d8 100644
--- a/src/store/modules/permission.ts
+++ b/src/store/modules/permission.ts
@@ -58,6 +58,8 @@
setSidebarRouters(constantRoutes.concat(sidebarRoutes));
setDefaultRoutes(sidebarRoutes);
setTopbarRoutes(defaultRoutes);
+ // 璺敱name閲嶅妫�鏌�
+ duplicateRouteChecker(asyncRoutes, sidebarRoutes);
return new Promise<RouteRecordRaw[]>((resolve) => resolve(rewriteRoutes));
};
@@ -167,4 +169,48 @@
return usePermissionStore(store);
};
+interface Route {
+ name?: string | symbol;
+ path: string;
+ children?: Route[];
+}
+
+/**
+ * 妫�鏌ヨ矾鐢眓ame鏄惁閲嶅
+ * @param localRoutes 鏈湴璺敱
+ * @param routes 鍔ㄦ�佽矾鐢�
+ */
+function duplicateRouteChecker(localRoutes: Route[], routes: Route[]) {
+ // 灞曞钩
+ function flatRoutes(routes: Route[]) {
+ const res: Route[] = [];
+ routes.forEach((route) => {
+ if (route.children) {
+ res.push(...flatRoutes(route.children));
+ } else {
+ res.push(route);
+ }
+ });
+ return res;
+ }
+
+ const allRoutes = flatRoutes([...localRoutes, ...routes]);
+
+ const nameList: string[] = [];
+ allRoutes.forEach((route) => {
+ const name = route.name.toString();
+ if (name && nameList.includes(name)) {
+ const message = `璺敱鍚嶇О: [${name}] 閲嶅, 浼氶�犳垚 404`;
+ console.error(message);
+ ElNotification({
+ title: '璺敱鍚嶇О閲嶅',
+ message,
+ type: 'error'
+ });
+ return;
+ }
+ nameList.push(route.name.toString());
+ });
+}
+
export default usePermissionStore;
--
Gitblit v1.9.3