mirror of
https://github.com/m-xlsea/ruoyi-plus-soybean.git
synced 2025-09-24 07:49:47 +08:00
refactor(projects): 恢复pinia默认写法
This commit is contained in:
@ -1,49 +1,38 @@
|
||||
import { ref } from 'vue';
|
||||
import type { Ref } from 'vue';
|
||||
import type { Router } from 'vue-router';
|
||||
import { defineStore } from 'pinia';
|
||||
import { useBoolean } from '@/hooks';
|
||||
import { fetchUserRoutes } from '@/service';
|
||||
import { transformAuthRouteToMenu, transformAuthRoutesToVueRoutes } from '@/utils';
|
||||
import type { GlobalMenuOption } from '@/interface';
|
||||
|
||||
/** 路由状态 */
|
||||
interface RouteStore {
|
||||
interface RouteState {
|
||||
/** 是否添加过动态路由 */
|
||||
isAddedDynamicRoute: Ref<boolean>;
|
||||
/** 初始化动态路由 */
|
||||
initDynamicRoute(router: Router): Promise<void>;
|
||||
isAddedDynamicRoute: boolean;
|
||||
/** 菜单 */
|
||||
menus: Ref<GlobalMenuOption[]>;
|
||||
menus: GlobalMenuOption[];
|
||||
}
|
||||
|
||||
export const useRouteStore = defineStore('route-store', () => {
|
||||
const menus = ref<GlobalMenuOption[]>([]) as Ref<GlobalMenuOption[]>;
|
||||
function getMenus(data: AuthRoute.Route[]) {
|
||||
const transform = transformAuthRouteToMenu(data);
|
||||
menus.value = transform;
|
||||
}
|
||||
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 { bool: isAddedDynamicRoute, setTrue: setAddedDynamicRoute } = useBoolean();
|
||||
async function initDynamicRoute(router: Router) {
|
||||
const { data } = await fetchUserRoutes();
|
||||
if (data) {
|
||||
getMenus(data.routes);
|
||||
const vueRoutes = transformAuthRoutesToVueRoutes(data.routes);
|
||||
vueRoutes.forEach(route => {
|
||||
router.addRoute(route);
|
||||
});
|
||||
|
||||
const vueRoutes = transformAuthRoutesToVueRoutes(data.routes);
|
||||
vueRoutes.forEach(route => {
|
||||
router.addRoute(route);
|
||||
});
|
||||
|
||||
setAddedDynamicRoute();
|
||||
this.isAddedDynamicRoute = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const routeStore: RouteStore = {
|
||||
isAddedDynamicRoute,
|
||||
initDynamicRoute,
|
||||
menus
|
||||
};
|
||||
|
||||
return routeStore;
|
||||
});
|
||||
|
Reference in New Issue
Block a user