index.js
3.11 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);
// 解决同一页面,参数不同的路由报错
const VueRouterPush = Router.prototype.push;
Router.prototype.push = function push(to) {
return VueRouterPush.call(this, to).catch((err) => err);
};
/**
* 加载模块
* @param {string | Component} component 路径或组件
* @param {boolean} lazy 是否懒加载
* @returns {Function | object} 懒加载方法或组件对象
*/
const loadComponent = (component, lazy = true) =>
lazy ? () => import(`views/${component}.vue`) : component;
export const constantRouterMap = [
{
path: "/login",
name: "登录",
component: loadComponent("Login/index"),
hidden: true,
},
{
path: "/",
name: "首页",
component: loadComponent("Layout/index"),
redirect: "/home",
icon: "home",
children: [
{ path: "home", component: loadComponent("Home/index"), name: "首页" },
],
},
];
export const asyncRouterMap = [
{
path: "/permission",
name: "权限管理",
meta: { role: ["admin"] },
component: loadComponent("Layout/index"),
redirect: "/permission/list",
requireAuth: true, // 是否需要登录
dropdown: true,
icon: "authority",
children: [
{
path: "list",
component: loadComponent("Permission/list"),
name: "管理员列表",
},
{
path: "add",
component: loadComponent("Permission/add"),
name: "添加管理员",
},
],
},
{
path: "/article",
name: "文章管理",
component: loadComponent("Layout/index"),
redirect: "/article/list",
dropdown: true,
icon: "article",
children: [
{
path: "list",
component: loadComponent("Article/list"),
name: "文章列表",
},
{
path: "edit",
component: loadComponent("Article/edit"),
name: "文章编辑",
hidden: true,
},
{
path: "add",
component: loadComponent("Article/add"),
name: "添加文章",
},
],
},
{
path: "/label",
name: "标签管理",
component: loadComponent("Layout/index"),
redirect: "/label/list",
dropdown: true,
icon: "label",
children: [
{
path: "list",
component: loadComponent("Label/list"),
name: "标签列表",
},
{
path: "add",
component: loadComponent("Label/add"),
name: "添加标签",
},
],
},
{
path: "/message",
name: "留言管理",
component: loadComponent("Layout/index"),
redirect: "/message/list",
dropdown: true,
icon: "message",
children: [
{
path: "list",
component: loadComponent("Message/list"),
name: "留言列表",
},
{
path: "reply",
component: loadComponent("Message/replyList"),
name: "回复列表",
},
],
},
];
export const router = new Router({
// mode: 'history',
routes: constantRouterMap,
});