# 功能描述

从服务器拿路由信息、以及路由遍历和按照用户要求增加路由等。
源码路径: node_modules/sei-ui/src/router/index.js。

# 方法Methods

名称 类型 描述
menuCallBack function 从服务器获得菜单数据后的回调
menuEachRowCallBack function 从服务器获得菜单后对每行数据遍历的回调
addCustomRoutes(login, routers, parentName, isSub) login:true/false 是否不需要登录验证
routers: 路由数据或单条路由,注意路由中要有name属性
parentName: 可选, 父路由名称,当将当前路由作为子路由的时候使用
isSub: true/false,当为true时,所有路由都使用parentName最为父路由,否则根据树形结构将当前节点的父节点名称作为父路由,例如添加后台管理菜单则为: addCustomRoutes(true, 要添加的路由, 'manager', true)
添加路由

# 引用方式

import {router} from 'sei-ui';
1

# 方法Methods

export default {
    /** 默认的路由配置(JSON格式) */
    routeConfig,
    
    /** 设置拦截,用于判断是否登录等 */
    setBeforeEach(router);
    
    /**
     * 路由实例化前添加路由(必须在路由实例化之前调用)
     * @param parentName: 父节点nam值
     * @param router: 要添加的路由
     * @param sort: 排序位置
     */
    addCustomMangerRoute(parentName, router);
    
    /**
     路由实例化后添加路由(必须在路由实例化之后调用)
     @param myRouter: 路由实例
     @param login: true/false 是否不需要登录验证
     @param routerConfig: 路由数据或单条路由,注意路由中要有name属性
     @param parentName: 可选, 父路由名称,当将当前路由作为子路由的时候使用
     @param isSub: true/false,当为true时,所有路由都使用parentName最为父路由,否则根据树形结构将当前节点的父节点名称作为父路由,例如添加后台管理菜单则为: addCustomRoutes(true, 要添加的路由, "manager", true)
     */
    addCustomRoutes(myRouter, login, routerConfig, parentName, isSub);

    /** 从服务器获得菜单数组数据后还未对数据进行组装前的回调函数(服务器原始数据) */
    menuDataCallBack(rows);
    
    /** 从服务器获得菜单数组数据后对数据进行组装后的回调函数(对服务器原始数据组装为树形结构后的数据) */
    menuCallBack(rows);
    
    /** 从服务器获得菜单数组数据后遍历数组的回调函数 */
    menuEachRowCallBack(row);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 系统默认路由

let login = () => Vue.prototype.$routerCall("views/manager/login");
let managerIndex = () => Vue.prototype.$routerCall("views/manager/index");
let err404 = () => Vue.prototype.$routerCall("views/manager/err404");
let noPrivilege = () => Vue.prototype.$routerCall("views/manager/noPrivilege");
let routeConfig = [
    {
        path: "/",
        name: "index",
        component: login,
        meta: {title: "登录"}
    },
    {
        path: "/login",
        name: "login",
        component: login,
        meta: {title: "登录"}
    },
    {
        path: "/manager/login",
        name: "managerLogin",
        component: login,
        meta: {title: "登录"}
    }, {
        path: "*",
        name: "err404",
        component: err404,
        meta: {title: "页面丢失"}
    }, {
        path: "/manager",
        name: "manager",
        component: managerIndex,
        meta: {login: true, title: "后台菜单"},
        children: [{
            path: "/manager/noPrivilege",
            name: "noPrivilege",
            component: noPrivilege,
            meta: {login: true, title: "无权限"}
        }, {
            path: "/manager/_seiEmpty",
            name: "manager_seiEmpty",
            component: {template: "<span/>", name: "ManagerSeiEmpty", mounted() {this.$nextTick(() => {store.state.app.cacheView.push(this.$route.query.name); this.$router.push(this.$route.query.redirect)})}},
            meta: {login: true, title: "跳转"}
            }]
    }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 例1: 添加不需要登录的路由及菜单

不需要登录的路由不以/manager/开头

router.addCustomRoutes(false, //不登录验证
      {
          name: '菜单1',
          path: '/x',
          component: () => import('@/views/web/x')
      })
1
2
3
4
5
6

# 例2: 添加要登录的路由及菜单

要登录的路由及菜单路由以/manager/开头,或者设置路由的meta中的login选项为true

 router.addCustomRoutes(true, //要登录验证
       {
           name: '菜单1',
           path: '/manager/x',
           isShow: false,  //路由中有了,但不在菜单中显示
           component: () => import('@/views/manager/x')
       }, 'manager', true)
1
2
3
4
5
6
7