From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/store/modules/permission.ts |   71 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
new file mode 100644
index 0000000..2ff8111
--- /dev/null
+++ b/src/store/modules/permission.ts
@@ -0,0 +1,71 @@
+import { defineStore } from 'pinia'
+import { store } from '@/store'
+import { cloneDeep } from 'lodash-es'
+import remainingRouter from '@/router/modules/remaining'
+import { flatMultiLevelRoutes, generateRoute } from '@/utils/routerHelper'
+import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
+
+const { wsCache } = useCache()
+
+export interface PermissionState {
+  routers: AppRouteRecordRaw[]
+  addRouters: AppRouteRecordRaw[]
+  menuTabRouters: AppRouteRecordRaw[]
+}
+
+export const usePermissionStore = defineStore('permission', {
+  state: (): PermissionState => ({
+    routers: [],
+    addRouters: [],
+    menuTabRouters: []
+  }),
+  getters: {
+    getRouters(): AppRouteRecordRaw[] {
+      return this.routers
+    },
+    getAddRouters(): AppRouteRecordRaw[] {
+      return flatMultiLevelRoutes(cloneDeep(this.addRouters))
+    },
+    getMenuTabRouters(): AppRouteRecordRaw[] {
+      return this.menuTabRouters
+    }
+  },
+  actions: {
+    async generateRoutes(): Promise<unknown> {
+      return new Promise<void>(async (resolve) => {
+        // 鑾峰緱鑿滃崟鍒楄〃锛屽畠鍦ㄧ櫥褰曠殑鏃跺�欙紝setUserInfoAction 鏂规硶涓凡缁忚繘琛岃幏鍙�
+        let res: AppCustomRouteRecordRaw[] = []
+        const roleRouters = wsCache.get(CACHE_KEY.ROLE_ROUTERS)
+        if (roleRouters) {
+          res = roleRouters as AppCustomRouteRecordRaw[]
+        }
+        const routerMap: AppRouteRecordRaw[] = generateRoute(res)
+        // 鍔ㄦ�佽矾鐢憋紝404涓�瀹氳鏀惧埌鏈�鍚庨潰
+        // preschooler锛歷ue-router@4浠ュ悗宸叉敮鎸侀潤鎬�404璺敱锛屾澶勫彲涓嶅啀杩藉姞
+        this.addRouters = routerMap.concat([
+          {
+            path: '/:path(.*)*',
+            // redirect: '/404',
+            component: () => import('@/views/Error/404.vue'),
+            name: '404Page',
+            meta: {
+              hidden: true,
+              breadcrumb: false
+            }
+          }
+        ])
+        // 娓叉煋鑿滃崟鐨勬墍鏈夎矾鐢�
+        this.routers = cloneDeep(remainingRouter).concat(routerMap)
+        resolve()
+      })
+    },
+    setMenuTabRouters(routers: AppRouteRecordRaw[]): void {
+      this.menuTabRouters = routers
+    }
+  },
+  persist: false
+})
+
+export const usePermissionStoreWithOut = () => {
+  return usePermissionStore(store)
+}

--
Gitblit v1.8.0