原理:

1.后台同学返回一个json格式的路由表,再这个实例中,我们使用的是文件动态路由的形式;
2.动态路由,每个路由根据自己的权限字段,设定好权限字段。
3.利用vue-router的beforeEach、addRoutes、localStorage来配合上边两步实现效果;
4.左侧菜单栏根据拿到转换好的路由列表进行展示;
大体步骤:拦截路由->后台取到路由->保存路由到localStorage(用户登录进来只会从后台取一次,其余都从本地取,所以用户,只有退出在登录路由才会更新)
1、首先定义我们的路由文件:
import Login from './views/Login.vue'
import NotFound from './views/404.vue'
import Home from './views/Home.vue'
import Main from './views/Main.vue'
import Table from './views/nav1/Table.vue'
import Form from './views/nav1/Form.vue'
import user from './views/nav1/user.vue'
import Page4 from './views/nav2/Page4.vue'
import Page5 from './views/nav2/Page5.vue'
import Page6 from './views/nav3/Page6.vue'
import echarts from './views/charts/echarts.vue'
import UserManager from './views/users/UserManager'
import Permission from './views/users/Permission'
import Role from './views/users/Role'

let routes = [
    {
        path: '/login',
        component: Login,
        name: '',
        hidden: true
    },
    {
        path: '/404',
        component: NotFound,
        name: '',
        hidden: true
    },
    //{ path: '/main', component: Main },
];
export default routes;

export const powerRouter = [
    {
        path: '/',
        component: Home,
        name: '系统管理',
        iconCls: 'fa el-icon-message',//图标样式class
        role:['role'],
        children: [
            { path: '/main', component: Main, name: '主页', hidden: true }, // 子菜单列表
            // { path: '/table', component: Table, name: 'Table' },
            //{ path: '/form', component: Form, name: 'Form' },
            // { path: '/permission', component: Permission, name: '权限管理' },
            { path: '/role', component: Role, name: '角色管理' },
            { path: '/user', component: UserManager, name: '用户管理' },
        ]
    },
    {
        path: '/',
        component: Home,
        name: '导航二',
        iconCls: 'fa fa-id-card-o',
        role:['role'],
        children: [
            { path: '/page4', component: Page4, name: '页面4' },
            { path: '/page5', component: Page5, name: '页面5' }
        ]
    },
    {
        path: '/',
        component: Home,
        name: '',
        iconCls: 'fa fa-address-card',
        leaf: true,//只有一个节点
        // role:['cmdb','role','user'],
        children: [
            { path: '/page6', component: Page6, name: '导航三' }
        ]
    },
    {
        path: '/',
        component: Home,
        name: 'Charts',
        iconCls: 'fa fa-bar-chart',
        // role:['cmdb','role','user'],
        children: [
            { path: '/echarts', component: echarts, name: 'echarts' }
        ]
    },
    {
        path: '*',
        hidden: true,
        // role:['role','user'],
        redirect: { path: '/404' }
    }
];
router.js

相关文章:

  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2020-02-07
  • 2022-12-23
  • 2022-01-20
猜你喜欢
  • 2021-12-24
  • 2022-03-05
  • 2021-11-09
  • 2021-10-02
  • 2021-09-14
  • 2021-09-04
  • 2021-09-17
相关资源
相似解决方案