index.js 3.04 KB
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);
import i18n from "@/i18n";

/* Layout */
import Layout from "@/layout";
import store from '@/store'

//业务文件
import * as routeConfig from "@/utils/routeConfig";
import * as perApi from "@/api/systemPermission/userPermission";


/**

 * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
   后续有新增路径配置写在 src\utils routeConfig.js文件,
 */
export const constantRoutes = [
    {
        path: "/login",
        component: () => import("@/views/login/index"),
        hidden: true,
    },
    {
        path: "/",
        component: Layout,
        redirect: "/mainPage",
        children: [
            {
                path: "mainPage",
                name: "mainPage",
                component: () => import("@/views/main/index"),
                meta: {
                    title: "system.mainPage",
                    icon: "el-icon-house",
                    affix: true,
                },
            },
        ],
    },
    {
        path: "/system/index",
        component: Layout,
        hidden: true,
        redirect: "noredirect",
        children: [
            {
                path: "system",
                component: (resolve) => require(["@/views/systemPermission/index"], resolve),
                name: "system",
                meta: { title: "授权", icon: "" },
            },
        ],
    }
];

export const asyncRoutes = [];

const createRouter = () =>
    new Router({
        // mode: 'history', // require service support
        scrollBehavior: () => ({ y: 0 }),
        routes: constantRoutes,
    });

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter () {
    const newRouter = createRouter();
    router.matcher = newRouter.matcher; // reset router
}

export default router;



//获取用户权限,在登入页面登入成功后调用 getPermissionData
export function getPermissionData (callBack) {
    perApi.getPermissions().then((res) => {
        if (res.code !== 'Success') {
            sessionStorage.removeItem('sys_menu_per_data')
            this.$message.error("权限数据读取失败原因:" + res.msg);
            return
        }
        debugger
        // 接口数据转换路由结构数据格式
        const permissionData = routeConfig.generatePermissionRoutes(res, routeConfig.defaultRoutesConfig);
        const result = [
            ...permissionData,
            routeConfig.constantRoutesMapConfig,
            routeConfig.constantRoutes404Config,
            routeConfig.constantRouteslogManage
        ];

        // 重置路由,并重新添加静态和动态路由
        resetRouter();
        router.addRoutes(result);
        //console.log(finalRoutes, "finalRoutes")

        // 存储到Vuex和localStorage
        store.commit('permission/SET_ROUTES_Routes', result);
        localStorage.setItem('sys_menu_per_data', JSON.stringify(result));
        callBack();
    });
}