/**
 * 动态路由表：一般情况下你不需要改动此文件，因为所有动态路由都是由 menu-list 转化生成的
 */
import {homeRoute} from "./home";
import Layout from '../layout/index.vue';
import {pathToComponent} from "./async-import";
import {menuToRouter} from "./router-util";
import router from "./index";

// Layout 主视图路由 
export const layoutRoute = {
    name: 'layout',
    path: '/',
    redirect: homeRoute.path,
    component: Layout,
    children: [homeRoute]
};

// 动态路由表
export const dynamicRoutes = [layoutRoute];


/**
 * 根据菜单信息，把组件动态添加到路由表，用于从后端加载菜单信息的场景
 */
export const addRoutesByMenuList = function (menuList) {
    // 补上缺少的菜单属性
    pathToComponent(menuList);

    // 将菜单指向的 route 添加到 vue-router 路由表中 
    menuToRouter(menuList, route => {
        // console.log('--- 追加 route: ', route)
        router.addRoute('layout', route);
    });

    // 安装 404 路由
    const whole404 = {
        name: 'whole404',
        path: "/:pathMatch(.*)*",
        // redirect: '/404',   // 使用 redirect 方式，会导致浏览器path也变成404，不方便调试，所以改为 component 显示方式 
        component: () => import('/@/layout/view/404'),
    }
    router.addRoute(whole404);

    // 刷新一下页面，新添加的路由才会及时显示出来 
    const route = router.currentRoute.value;
    router.replace(route.fullPath);
}
