import { RouteRecordRaw } from 'vue-router'; /** * 路由meta对象参数说明 * meta: { * title: 菜单栏及 tagsView 栏、菜单搜索名称(国际化) * isLink: 是否超链接菜单,开启外链条件,`1、isLink: 链接地址不为空` * isHide: 是否隐藏此路由 * isKeepAlive: 是否缓存组件状态 * isAffix: 是否固定在 tagsView 栏上 * isIframe: 是否内嵌窗口,开启条件,`1、isIframe:true 2、isLink:链接地址不为空` * roles: 当前路由权限标识,取角色管理。控制路由显示、隐藏。超级管理员:admin 普通角色:common * icon: 菜单、tagsView 图标,阿里:加 `iconfont xxx`,fontawesome:加 `fa xxx` * } */ /** * 定义动态路由 * 前端添加路由,请在顶级节点的 `children 数组` 里添加 * @description 未开启 isRequestRoutes 为 true 时使用(前端控制路由),开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据 * @description 各字段请查看 `/@/views/system/menu/component/addMenu.vue 下的 ruleForm` * @returns 返回路由菜单数据 */ export const dynamicRoutes: Array = [ { path: '/', name: '/', component: () => import('/@/layout/index.vue'), redirect: '/home', meta: { isKeepAlive: true, }, children: [ { path: '/home', name: 'home', component: () => import('/@/views/system/home/index.vue'), meta: { title: 'message.router.home', isLink: '', isHide: false, isKeepAlive: true, isAffix: true, isIframe: false, roles: ['admin', 'common'], icon: 'iconfont icon-shouye', }, }, { path: '/system', name: 'system', component: () => import('/@/layout/routerView/parent.vue'), redirect: '/system', meta: { title: 'message.router.system', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-xitongshezhi', }, children: [ { path: '/system/menu', name: 'systemMenu', component: () => import('/@/views/system/menu/index.vue'), meta: { title: 'message.router.systemMenu', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-caidan', }, }, { path: '/system/role', name: 'systemRole', component: () => import('/@/views/system/role/index.vue'), meta: { title: 'message.router.systemRole', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'ele-ColdDrink', }, }, { path: '/system/user', name: 'systemUser', component: () => import('/@/views/system/user/index.vue'), meta: { title: 'message.router.systemUser', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-icon-', }, }, { path: '/system/dept', name: 'systemDept', component: () => import('/@/views/system/dept/index.vue'), meta: { title: 'message.router.systemDept', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'ele-OfficeBuilding', }, }, { path: '/system/apiWhiteList', name: 'apiWhiteList', component: () => import('/@/views/system/apiWhiteList/index.vue'), meta: { title: 'message.router.systemApiWhiteList', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'ele-SetUp', }, }, ], }, { path: '/config', name: 'config', component: () => import('/@/layout/routerView/parent.vue'), redirect: '/config/menu', meta: { title: 'message.router.config', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-configure', }, children: [ { path: '/system/configSystem', name: 'configSystem', component: () => import('/@/views/system/dept/index.vue'), meta: { title: 'message.router.configSystem', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-system', }, }, { path: '/system/dict', name: 'configDict', component: () => import('/@/views/system/dic/index.vue'), meta: { title: 'message.router.configDict', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-dict', }, }, { path: '/system/area', name: 'configArea', component: () => import('/@/views/system/dic/index.vue'), meta: { title: 'message.router.configArea', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-Area', }, }, { path: '/system/file', name: 'configFile', component: () => import('/@/views/system/dic/index.vue'), meta: { title: 'message.router.configFile', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-file', }, }, ], }, { path: '/log', name: 'log', component: () => import('/@/layout/routerView/parent.vue'), redirect: '/log/loginLog', meta: { title: 'message.router.log', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-rizhi', }, children: [ { path: '/log/loginLog', name: 'loginLog', component: () => import('/@/views/system/dic/index.vue'), meta: { title: 'message.router.loginLog', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-guanlidenglurizhi', }, }, { path: '/log/operationLog', name: 'operationLog', component: () => import('/@/views/system/dic/index.vue'), meta: { title: 'message.router.operationLog', isLink: '', isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, roles: ['admin'], icon: 'iconfont icon-caozuorizhi', }, }, ], }, ], }, ]; /** * 定义404、401界面 * @link 参考:https://next.router.vuejs.org/zh/guide/essentials/history-mode.html#netlify */ export const notFoundAndNoPower = [ { path: '/:path(.*)*', name: 'notFound', component: () => import('/@/views/system/error/404.vue'), meta: { title: 'message.staticRoutes.notFound', isHide: true, }, }, { path: '/401', name: 'noPower', component: () => import('/@/views/system/error/401.vue'), meta: { title: 'message.staticRoutes.noPower', isHide: true, }, }, ]; /** * 定义静态路由(默认路由) * 此路由不要动,前端添加路由的话,请在 `dynamicRoutes 数组` 中添加 * @description 前端控制直接改 dynamicRoutes 中的路由,后端控制不需要修改,请求接口路由数据时,会覆盖 dynamicRoutes 第一个顶级 children 的内容(全屏,不包含 layout 中的路由出口) * @returns 返回路由菜单数据 */ export const staticRoutes: Array = [ { path: '/login', name: 'login', component: () => import('/@/views/system/login/index.vue'), meta: { title: '登录', }, }, ];