Files
ruoyi-plus-soybean/src/store/modules/route/index.ts
2022-01-17 03:42:16 +08:00

39 lines
1.0 KiB
TypeScript

import type { Router } from 'vue-router';
import { defineStore } from 'pinia';
import { fetchUserRoutes } from '@/service';
import { transformAuthRouteToMenu, transformAuthRoutesToVueRoutes } from '@/utils';
import type { GlobalMenuOption } from '@/interface';
interface RouteState {
/** 是否添加过动态路由 */
isAddedDynamicRoute: boolean;
/** 菜单 */
menus: GlobalMenuOption[];
}
export const useRouteStore = defineStore('route-store', {
state: (): RouteState => ({
isAddedDynamicRoute: false,
menus: []
}),
actions: {
/**
* 初始化动态路由
* @param router - 路由实例
*/
async initDynamicRoute(router: Router) {
const { data } = await fetchUserRoutes();
if (data) {
this.menus = transformAuthRouteToMenu(data.routes);
const vueRoutes = transformAuthRoutesToVueRoutes(data.routes);
vueRoutes.forEach(route => {
router.addRoute(route);
});
this.isAddedDynamicRoute = true;
}
}
}
});