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