import { defineStore } from 'pinia' import { store } from '../index' 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' import { getTenantId } from '@/utils/auth' 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 { return new Promise(async (resolve) => { // let names =[{"text":"长春1379","value":1},{"text":"成都1397","value":2},{"text":"长春2379","value":3}] // let tenant = names.find(item=>item.value == getTenantId()) // 获得菜单列表,它在登录的时候,setUserInfoAction 方法中已经进行获取 let res: AppCustomRouteRecordRaw[] = [] if (wsCache.get(CACHE_KEY.ROLE_ROUTERS)) { res = wsCache.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[] // res.forEach(item=>{ // if(item.name == '富维海拉供应商系统'&&tenant){ // item.name = item.name + tenant['text'] // } // }) } console.log('菜单res',res) const routerMap: AppRouteRecordRaw[] = generateRoute(res) // 动态路由,404一定要放到最后面 this.addRouters = routerMap.concat([ { path: '/:path(.*)*', redirect: '/404', name: '404Page', meta: { hidden: true, breadcrumb: false } } ]) // 渲染菜单的所有路由 this.routers = cloneDeep(remainingRouter).concat(routerMap) resolve() }) }, setMenuTabRouters(routers: AppRouteRecordRaw[]): void { this.menuTabRouters = routers } } }) export const usePermissionStoreWithOut = () => { return usePermissionStore(store) }