index.js 9.7 KB
Newer Older
wanli's avatar
wanli committed
1 2 3 4 5 6 7
import Vue from "vue";
import Router from "vue-router";

Vue.use(Router);

/* Layout */
import Layout from "@/layout";
wanli's avatar
wanli committed
8
import StoreLayout from "@/layout/store";
wanli's avatar
wanli committed
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

/**
 * Note: sub-menu only appear when route children.length >= 1
 * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
 *
 * hidden: true                   if set true, item will not show in the sidebar(default is false)
 * alwaysShow: true               if set true, will always show the root menu
 *                                if not set alwaysShow, when item has more than one children route,
 *                                it will becomes nested mode, otherwise not show the root menu
 * redirect: noRedirect           if set noRedirect will no redirect in the breadcrumb
 * name:'router-name'             the name is used by <keep-alive> (must set!!!)
 * meta : {
    roles: ['admin','editor']    control the page roles (you can set multiple roles)
    title: 'title'               the name show in sidebar and breadcrumb (recommend set)
    icon: 'svg-name'             the icon show in the sidebar
    breadcrumb: false            if set false, the item will hidden in breadcrumb(default is true)
    activeMenu: '/example/list'  if set path, the sidebar will highlight the path you set
  }
 */


/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
export const constantRoutes = [
wanli's avatar
wanli committed
36 37
    {
        path: "/login",
wanli's avatar
wanli committed
38
        component: () => import("@/views/system/login"),
wanli's avatar
wanli committed
39 40 41 42
        hidden: true,
    },
    {
        path: "/register",
wanli's avatar
wanli committed
43
        component: () => import("@/views/system/register"),
wanli's avatar
wanli committed
44 45
        hidden: true,
    },
wanli's avatar
wanli committed
46
    {
wanli's avatar
wanli committed
47 48
        path: '/gallery',
        redirect: '/gallery/index',
wanli's avatar
wanli committed
49
        component: StoreLayout,
wanli's avatar
wanli committed
50
        children: [{
wanli's avatar
wanli committed
51
            path: 'index',
wanli's avatar
wanli committed
52 53 54 55 56 57
            name: 'Gallery',
            component: () => import('@/views/app-store/gallery'),
            meta: { title: '商店首页', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
58 59
        path: '/application',
        redirect: '/application/index',
wanli's avatar
wanli committed
60 61
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
62
            path: 'index',
wanli's avatar
wanli committed
63 64 65 66 67 68
            name: 'Application',
            component: () => import('@/views/app-store/app'),
            meta: { title: '应用详情', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
69 70
        path: '/list',
        redirect: '/list/index',
wanli's avatar
wanli committed
71 72
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
73
            path: 'index',
wanli's avatar
wanli committed
74
            name: 'AppList',
wanli's avatar
wanli committed
75
            component: () => import('@/views/app-store/list'),
76
            meta: { title: '游戏', icon: 'home' }
wanli's avatar
wanli committed
77 78
        }]
    },
wanli's avatar
wanli committed
79
    {
wanli's avatar
wanli committed
80 81
        path: '/category',
        redirect: '/category/index',
wanli's avatar
wanli committed
82 83
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
84
            path: 'index',
wanli's avatar
wanli committed
85 86 87 88 89 90
            name: 'AppCategory',
            component: () => import('@/views/app-store/category'),
            meta: { title: '应用分类', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
91 92
        path: '/rank',
        redirect: '/rank/index',
wanli's avatar
wanli committed
93 94
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
95
            path: 'index',
wanli's avatar
wanli committed
96 97 98 99 100 101
            name: 'AppRank',
            component: () => import('@/views/app-store/rank'),
            meta: { title: '应用排行', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
102 103
        path: '/topic',
        redirect: '/topic/index',
wanli's avatar
wanli committed
104 105
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
106
            path: 'index',
wanli's avatar
wanli committed
107 108 109 110 111 112
            name: 'AppTopic',
            component: () => import('@/views/app-store/topic'),
            meta: { title: '应用排行', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
113 114
        path: '/search',
        redirect: '/search/index',
wanli's avatar
wanli committed
115 116
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
117
            path: 'index',
wanli's avatar
wanli committed
118 119 120 121 122
            name: 'AppSearch',
            component: () => import('@/views/app-store/search'),
            meta: { title: '搜索应用', icon: 'home' }
        }]
    },
wanli's avatar
wanli committed
123
    {
wanli's avatar
wanli committed
124 125
        path: '/my',
        redirect: '/my/index',
wanli's avatar
wanli committed
126 127
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
128
            path: 'index',
wanli's avatar
wanli committed
129 130 131 132 133
            name: 'AppProfile',
            component: () => import('@/views/app-store/profile'),
            meta: { title: '个人中心', icon: 'shangcheng' }
        }]
    },
wanli's avatar
wanli committed
134
    {
wanli's avatar
wanli committed
135 136
        path: '/auth',
        redirect: '/auth/index',
wanli's avatar
wanli committed
137 138
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
139
            path: 'index',
wanli's avatar
wanli committed
140 141 142 143 144 145
            name: 'AppAuth',
            component: () => import('@/views/app-store/auth'),
            meta: { title: '账号认证', icon: 'shangcheng' }
        }]
    },
    {
wanli's avatar
wanli committed
146 147
        path: '/developer',
        redirect: '/developer/index',
148
        component: StoreLayout,
wanli's avatar
wanli committed
149
        children: [{
wanli's avatar
wanli committed
150
            path: 'index',
wanli's avatar
wanli committed
151
            name: 'Developer',
152
            component: () => import('@/views/app-store/developer'),
wanli's avatar
wanli committed
153 154 155
            meta: { title: '开发者中心', icon: 'home' }
        }]
    },
wanli's avatar
wanli committed
156
    {
wanli's avatar
wanli committed
157 158
        path: '/docs',
        redirect: '/docs/index',
wanli's avatar
wanli committed
159
        component: Layout,
wanli's avatar
wanli committed
160
        children: [{
wanli's avatar
wanli committed
161
            path: 'index',
wanli's avatar
wanli committed
162
            name: 'Document',
163
            component: () => import('@/views/app-store/docs'),
wanli's avatar
wanli committed
164 165 166
            meta: { title: '开发文档', icon: 'shangcheng' }
        }]
    },
wanli's avatar
wanli committed
167
    {
wanli's avatar
wanli committed
168 169
        path: '/home',
        redirect: '/home/index',
wanli's avatar
wanli committed
170 171
        component: Layout,
        children: [{
wanli's avatar
wanli committed
172
            path: 'index',
wanli's avatar
wanli committed
173
            name: 'AppIndex',
wanli's avatar
wanli committed
174
            component: () => import('@/views/system/apps'),
wanli's avatar
wanli committed
175
            meta: { title: '应用管理', icon: 'home' }
wanli's avatar
wanli committed
176 177
        }]
    },
wanli's avatar
wanli committed
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
    {
        path: '/chart',
        redirect: '/chart/index',
        component: Layout,
        children: [{
            path: 'index',
            name: 'AppChart',
            component: () => import('@/views/system/chart'),
            meta: { title: '实时曲线', icon: 'home' }
        }]
    },
    {
        path: '/history',
        redirect: '/history/index',
        component: Layout,
        children: [{
            path: 'index',
            name: 'AppHistoryChart',
            component: () => import('@/views/system/history'),
            meta: { title: '历史曲线', icon: 'home' }
        }]
    },
wanli's avatar
wanli committed
200
    {
wanli's avatar
wanli committed
201 202
        path: '/tool',
        redirect: '/tool/index',
wanli's avatar
wanli committed
203 204
        component: Layout,
        children: [{
wanli's avatar
wanli committed
205
            path: 'index',
wanli's avatar
wanli committed
206 207 208 209 210
            name: 'AppTool',
            component: () => import('@/views/system/tool'),
            meta: { title: '工具', icon: 'home' }
        }]
    },
wanli's avatar
wanli committed
211
    {
wanli's avatar
wanli committed
212 213
        path: '/build',
        redirect: '/build/index',
wanli's avatar
wanli committed
214 215
        component: Layout,
        children: [{
wanli's avatar
wanli committed
216
            path: 'index',
wanli's avatar
wanli committed
217
            name: 'AppBuild',
wanli's avatar
wanli committed
218
            component: () => import('@/views/system/build'),
wanli's avatar
wanli committed
219 220 221 222
            meta: { title: '打包日志', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
223 224
        path: '/opqcp',
        redirect: '/opqcp/index',
wanli's avatar
wanli committed
225 226
        component: Layout,
        children: [{
wanli's avatar
wanli committed
227 228 229 230
            path: 'index',
            name: 'Opqcp',
            component: () => import('@/views/system/opqcp'),
            meta: { title: 'opqcp', icon: 'home' }
wanli's avatar
wanli committed
231 232
        }]
    },
wanli's avatar
wanli committed
233
    {
wanli's avatar
wanli committed
234 235
        path: '/monitor',
        redirect: '/monitor/index',
wanli's avatar
wanli committed
236 237
        component: Layout,
        children: [{
wanli's avatar
wanli committed
238 239 240
            path: 'index',
            name: 'Monitor',
            component: () => import('@/views/system/monitor'),
wanli's avatar
wanli committed
241
            meta: { title: '资源监视', icon: 'home' }
wanli's avatar
wanli committed
242 243
        }]
    },
wanli's avatar
wanli committed
244
    {
wanli's avatar
wanli committed
245 246
        path: '/device',
        redirect: '/device/index',
wanli's avatar
wanli committed
247 248
        component: Layout,
        children: [{
wanli's avatar
wanli committed
249
            path: 'index',
wanli's avatar
wanli committed
250
            name: 'Device',
wanli's avatar
wanli committed
251
            component: () => import('@/views/system/device'),
wanli's avatar
wanli committed
252
            meta: { title: '设备管理', icon: 'gongzuotai' }
wanli's avatar
wanli committed
253 254 255
        }]
    },
    {
wanli's avatar
wanli committed
256 257
        path: '/profile',
        redirect: '/profile/index',
wanli's avatar
wanli committed
258 259
        component: Layout,
        children: [{
wanli's avatar
wanli committed
260
            path: 'index',
wanli's avatar
wanli committed
261
            name: 'Profile',
wanli's avatar
wanli committed
262
            component: () => import('@/views/system/profile'),
wanli's avatar
wanli committed
263 264 265 266
            meta: { title: '个人中心', icon: 'shangcheng' }
        }]
    },
    {
wanli's avatar
wanli committed
267 268
        path: '/user',
        redirect: '/user/index',
wanli's avatar
wanli committed
269 270
        component: Layout,
        children: [{
wanli's avatar
wanli committed
271
            path: 'index',
wanli's avatar
wanli committed
272
            name: 'UserIndex',
wanli's avatar
wanli committed
273
            component: () => import('@/views/system/users'),
wanli's avatar
wanli committed
274 275 276 277
            meta: { title: '用户管理', icon: 'shangcheng' }
        }]
    },
    {
wanli's avatar
wanli committed
278 279
        path: '/404',
        redirect: '/404/index',
wanli's avatar
wanli committed
280 281
        component: Layout,
        children: [{
wanli's avatar
wanli committed
282
            path: 'index',
wanli's avatar
wanli committed
283 284 285 286 287 288
            name: 'Page404',
            component: () => import('@/views/error-pages/404'),
            meta: { title: '404', icon: 'home' }
        }]
    },
    {
wanli's avatar
wanli committed
289 290
        path: '/403',
        redirect: '/403/index',
wanli's avatar
wanli committed
291 292
        component: Layout,
        children: [{
wanli's avatar
wanli committed
293
            path: 'index',
wanli's avatar
wanli committed
294 295 296 297
            name: 'Page403',
            component: () => import('@/views/error-pages/403'),
            meta: { title: '403', icon: 'home' }
        }]
298 299
    },
    {
wanli's avatar
wanli committed
300 301
        path: '/not-found',
        redirect: '/not-found/index',
302 303
        component: StoreLayout,
        children: [{
wanli's avatar
wanli committed
304
            path: 'index',
305 306 307 308 309 310
            name: 'NotFound',
            component: () => import('@/views/error-pages/not-found'),
            meta: { title: 'not-found', icon: 'home' }
        }]
    },
    { path: '*', redirect: '/404', hidden: true }
wanli's avatar
wanli committed
311 312
];

wanli's avatar
wanli committed
313 314 315
// 404 page must be placed at the end !!!
export const notFound = { path: '*', redirect: '/404', hidden: true }

wanli's avatar
wanli committed
316
const createRouter = () =>
wanli's avatar
wanli committed
317 318 319 320 321 322
    new Router({
        // mode: 'history', // require service support, 后台部署在/static 目录
        // base: "/static", // 应用的基础路径: 默认为'/',修改为'/static'
        scrollBehavior: () => ({ y: 0 }),
        routes: constantRoutes,
    });
wanli's avatar
wanli committed
323 324 325 326 327

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
wanli's avatar
wanli committed
328 329
    const newRouter = createRouter();
    router.matcher = newRouter.matcher; // reset router
wanli's avatar
wanli committed
330 331 332
}

export default router;