import Vue from 'vue' import Router from 'vue-router' import Login from '../views/Login.vue' import Welcome from '../views/Welcome' import APIDoc from '../views/APIDoc' import NoPage from '../views/404' import Layout from "../views/Layout/Layout"; const _import = require('@/router/_import_' + process.env.NODE_ENV)//获取组件的方法 import LoginCallbackView from "../views/LoginCallbackView"; Vue.use(Router) const createRouter = () => new Router({ mode: 'history', base: process.env.BASE_URL, routes: [ { path: '/404', component: NoPage, name: 'NoPage', meta: { title: 'NoPage', requireAuth: false, NoTabPage: true, NoNeedHome: true // 添加该字段,表示不需要home模板 }, hidden: true }, { path: '/APIDoc', component: APIDoc, name: 'APIDoc', meta: { title: 'APIDoc', requireAuth: false }, hidden: true }, { path: '/', component: Welcome, name: '首页', iconCls: 'fa-qq',//图标样式class // hidden: true, meta: { title: '首页', requireAuth: true // 添加该字段,表示进入这个路由是需要登录的 } }, { path: '/login', component: Login, name: 'login', iconCls: 'fa-address-card',//图标样式class meta: { title: '登录', NoTabPage: true, NoNeedHome: true // 添加该字段,表示不需要home模板 }, hidden: true }, { path: "/callback", name: "LoginCallbackView", component: LoginCallbackView, meta: { title: '登出', NoTabPage: true, }, hidden: true }, { path: '*', hidden: true, redirect: { path: '/404' } } ] }) const router = createRouter() export function filterAsyncRouter(asyncRouterMap) { //注意这里的 asyncRouterMap 是一个数组 const accessedRouters = asyncRouterMap.filter(route => { if (route.path && !route.IsButton) { if (route.path === '/' || route.path === '-') {//Layout组件特殊处理 route.component = Layout } else { try { route.component = _import(route.path.replace('/:id','')) } catch (e) { try { route.component = () => import('@/views' + route.path.replace('/:id','') + '.vue'); } catch (error) { console.info('%c 当前路由 ' + route.path.replace('/:id','') + '.vue 不存在,因此如法导入组件,请检查接口数据和组件是否匹配,并重新登录,清空缓存!', "color:red") } } } } if (route.children && route.children.length && !route.IsButton) { route.children = filterAsyncRouter(route.children) } return true }) return accessedRouters } export function resetRouter() { const newRouter = createRouter() router.matcher = newRouter.matcher // the relevant part } router.$addRoutes = (params) => { var f = item => { if (item['children']) { item['children'] = item['children'].filter(f); return true; } else if (item['IsButton']) { return item['IsButton']===false; } else { return true; } } var params = params.filter(f); router.addRoutes(params) } export default router;