# 功能描述
从服务器拿路由信息、以及路由遍历和按照用户要求增加路由等。
源码路径: 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
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
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
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
2
3
4
5
6
7