ruoyi-plus-soybean/src/store/modules/route/index.ts

39 lines
1.0 KiB
TypeScript
Raw Normal View History

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;
2022-01-11 08:22:31 +08:00
/** 菜单 */
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;
}
}
}
});