'init'
This commit is contained in:
		
							
								
								
									
										98
									
								
								mock/role/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								mock/role/index.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
import Mock from 'mockjs'
 | 
			
		||||
import { deepClone } from '../../src/utils/index.js'
 | 
			
		||||
import { asyncRoutes, constantRoutes } from './routes.js'
 | 
			
		||||
 | 
			
		||||
const routes = deepClone([...constantRoutes, ...asyncRoutes])
 | 
			
		||||
 | 
			
		||||
const roles = [
 | 
			
		||||
  {
 | 
			
		||||
    key: 'admin',
 | 
			
		||||
    name: 'admin',
 | 
			
		||||
    description: 'Super Administrator. Have access to view all pages.',
 | 
			
		||||
    routes: routes
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    key: 'editor',
 | 
			
		||||
    name: 'editor',
 | 
			
		||||
    description: 'Normal Editor. Can see all pages except permission page',
 | 
			
		||||
    routes: routes.filter(i => i.path !== '/permission')// just a mock
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    key: 'visitor',
 | 
			
		||||
    name: 'visitor',
 | 
			
		||||
    description: 'Just a visitor. Can only see the home page and the document page',
 | 
			
		||||
    routes: [{
 | 
			
		||||
      path: '',
 | 
			
		||||
      redirect: 'dashboard',
 | 
			
		||||
      children: [
 | 
			
		||||
        {
 | 
			
		||||
          path: 'dashboard',
 | 
			
		||||
          name: 'Dashboard',
 | 
			
		||||
          meta: { title: 'dashboard', icon: 'dashboard' }
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    }]
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
export default [
 | 
			
		||||
  // mock get all routes form server
 | 
			
		||||
  {
 | 
			
		||||
    url: '/vue-element-admin/routes',
 | 
			
		||||
    type: 'get',
 | 
			
		||||
    response: _ => {
 | 
			
		||||
      return {
 | 
			
		||||
        code: 20000,
 | 
			
		||||
        data: routes
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  // mock get all roles form server
 | 
			
		||||
  {
 | 
			
		||||
    url: '/vue-element-admin/roles',
 | 
			
		||||
    type: 'get',
 | 
			
		||||
    response: _ => {
 | 
			
		||||
      return {
 | 
			
		||||
        code: 20000,
 | 
			
		||||
        data: roles
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  // add role
 | 
			
		||||
  {
 | 
			
		||||
    url: '/vue-element-admin/role',
 | 
			
		||||
    type: 'post',
 | 
			
		||||
    response: {
 | 
			
		||||
      code: 20000,
 | 
			
		||||
      data: {
 | 
			
		||||
        key: Mock.mock('@integer(300, 5000)')
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  // update role
 | 
			
		||||
  {
 | 
			
		||||
    url: '/vue-element-admin/role/[A-Za-z0-9]',
 | 
			
		||||
    type: 'put',
 | 
			
		||||
    response: {
 | 
			
		||||
      code: 20000,
 | 
			
		||||
      data: {
 | 
			
		||||
        status: 'success'
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  // delete role
 | 
			
		||||
  {
 | 
			
		||||
    url: '/vue-element-admin/role/[A-Za-z0-9]',
 | 
			
		||||
    type: 'delete',
 | 
			
		||||
    response: {
 | 
			
		||||
      code: 20000,
 | 
			
		||||
      data: {
 | 
			
		||||
        status: 'success'
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										525
									
								
								mock/role/routes.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										525
									
								
								mock/role/routes.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,525 @@
 | 
			
		||||
// Just a mock data
 | 
			
		||||
 | 
			
		||||
export const constantRoutes = [
 | 
			
		||||
  {
 | 
			
		||||
    path: '/redirect',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    hidden: true,
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: '/redirect/:path*',
 | 
			
		||||
        component: 'views/redirect/index'
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/login',
 | 
			
		||||
    component: 'views/login/index',
 | 
			
		||||
    hidden: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/auth-redirect',
 | 
			
		||||
    component: 'views/login/auth-redirect',
 | 
			
		||||
    hidden: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/404',
 | 
			
		||||
    component: 'views/error-page/404',
 | 
			
		||||
    hidden: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/401',
 | 
			
		||||
    component: 'views/error-page/401',
 | 
			
		||||
    hidden: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'dashboard',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'dashboard',
 | 
			
		||||
        component: 'views/dashboard/index',
 | 
			
		||||
        name: 'Dashboard',
 | 
			
		||||
        meta: { title: 'Dashboard', icon: 'dashboard', affix: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/documentation',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/documentation/index',
 | 
			
		||||
        name: 'Documentation',
 | 
			
		||||
        meta: { title: 'Documentation', icon: 'documentation', affix: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/guide',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/guide/index',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/guide/index',
 | 
			
		||||
        name: 'Guide',
 | 
			
		||||
        meta: { title: 'Guide', icon: 'guide', noCache: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
export const asyncRoutes = [
 | 
			
		||||
  {
 | 
			
		||||
    path: '/permission',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/permission/index',
 | 
			
		||||
    alwaysShow: true,
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Permission',
 | 
			
		||||
      icon: 'lock',
 | 
			
		||||
      roles: ['admin', 'editor']
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'page',
 | 
			
		||||
        component: 'views/permission/page',
 | 
			
		||||
        name: 'PagePermission',
 | 
			
		||||
        meta: {
 | 
			
		||||
          title: 'Page Permission',
 | 
			
		||||
          roles: ['admin']
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'directive',
 | 
			
		||||
        component: 'views/permission/directive',
 | 
			
		||||
        name: 'DirectivePermission',
 | 
			
		||||
        meta: {
 | 
			
		||||
          title: 'Directive Permission'
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'role',
 | 
			
		||||
        component: 'views/permission/role',
 | 
			
		||||
        name: 'RolePermission',
 | 
			
		||||
        meta: {
 | 
			
		||||
          title: 'Role Permission',
 | 
			
		||||
          roles: ['admin']
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/icon',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/icons/index',
 | 
			
		||||
        name: 'Icons',
 | 
			
		||||
        meta: { title: 'Icons', icon: 'icon', noCache: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/components',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'noRedirect',
 | 
			
		||||
    name: 'ComponentDemo',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Components',
 | 
			
		||||
      icon: 'component'
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'tinymce',
 | 
			
		||||
        component: 'views/components-demo/tinymce',
 | 
			
		||||
        name: 'TinymceDemo',
 | 
			
		||||
        meta: { title: 'Tinymce' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'markdown',
 | 
			
		||||
        component: 'views/components-demo/markdown',
 | 
			
		||||
        name: 'MarkdownDemo',
 | 
			
		||||
        meta: { title: 'Markdown' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'json-editor',
 | 
			
		||||
        component: 'views/components-demo/json-editor',
 | 
			
		||||
        name: 'JsonEditorDemo',
 | 
			
		||||
        meta: { title: 'Json Editor' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'split-pane',
 | 
			
		||||
        component: 'views/components-demo/split-pane',
 | 
			
		||||
        name: 'SplitpaneDemo',
 | 
			
		||||
        meta: { title: 'SplitPane' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'avatar-upload',
 | 
			
		||||
        component: 'views/components-demo/avatar-upload',
 | 
			
		||||
        name: 'AvatarUploadDemo',
 | 
			
		||||
        meta: { title: 'Avatar Upload' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'dropzone',
 | 
			
		||||
        component: 'views/components-demo/dropzone',
 | 
			
		||||
        name: 'DropzoneDemo',
 | 
			
		||||
        meta: { title: 'Dropzone' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'sticky',
 | 
			
		||||
        component: 'views/components-demo/sticky',
 | 
			
		||||
        name: 'StickyDemo',
 | 
			
		||||
        meta: { title: 'Sticky' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'count-to',
 | 
			
		||||
        component: 'views/components-demo/count-to',
 | 
			
		||||
        name: 'CountToDemo',
 | 
			
		||||
        meta: { title: 'Count To' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'mixin',
 | 
			
		||||
        component: 'views/components-demo/mixin',
 | 
			
		||||
        name: 'ComponentMixinDemo',
 | 
			
		||||
        meta: { title: 'componentMixin' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'back-to-top',
 | 
			
		||||
        component: 'views/components-demo/back-to-top',
 | 
			
		||||
        name: 'BackToTopDemo',
 | 
			
		||||
        meta: { title: 'Back To Top' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'drag-dialog',
 | 
			
		||||
        component: 'views/components-demo/drag-dialog',
 | 
			
		||||
        name: 'DragDialogDemo',
 | 
			
		||||
        meta: { title: 'Drag Dialog' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'drag-select',
 | 
			
		||||
        component: 'views/components-demo/drag-select',
 | 
			
		||||
        name: 'DragSelectDemo',
 | 
			
		||||
        meta: { title: 'Drag Select' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'dnd-list',
 | 
			
		||||
        component: 'views/components-demo/dnd-list',
 | 
			
		||||
        name: 'DndListDemo',
 | 
			
		||||
        meta: { title: 'Dnd List' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'drag-kanban',
 | 
			
		||||
        component: 'views/components-demo/drag-kanban',
 | 
			
		||||
        name: 'DragKanbanDemo',
 | 
			
		||||
        meta: { title: 'Drag Kanban' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/charts',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'noRedirect',
 | 
			
		||||
    name: 'Charts',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Charts',
 | 
			
		||||
      icon: 'chart'
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'keyboard',
 | 
			
		||||
        component: 'views/charts/keyboard',
 | 
			
		||||
        name: 'KeyboardChart',
 | 
			
		||||
        meta: { title: 'Keyboard Chart', noCache: true }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'line',
 | 
			
		||||
        component: 'views/charts/line',
 | 
			
		||||
        name: 'LineChart',
 | 
			
		||||
        meta: { title: 'Line Chart', noCache: true }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'mixchart',
 | 
			
		||||
        component: 'views/charts/mixChart',
 | 
			
		||||
        name: 'MixChart',
 | 
			
		||||
        meta: { title: 'Mix Chart', noCache: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/nested',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/nested/menu1/menu1-1',
 | 
			
		||||
    name: 'Nested',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Nested',
 | 
			
		||||
      icon: 'nested'
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'menu1',
 | 
			
		||||
        component: 'views/nested/menu1/index',
 | 
			
		||||
        name: 'Menu1',
 | 
			
		||||
        meta: { title: 'Menu1' },
 | 
			
		||||
        redirect: '/nested/menu1/menu1-1',
 | 
			
		||||
        children: [
 | 
			
		||||
          {
 | 
			
		||||
            path: 'menu1-1',
 | 
			
		||||
            component: 'views/nested/menu1/menu1-1',
 | 
			
		||||
            name: 'Menu1-1',
 | 
			
		||||
            meta: { title: 'Menu1-1' }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            path: 'menu1-2',
 | 
			
		||||
            component: 'views/nested/menu1/menu1-2',
 | 
			
		||||
            name: 'Menu1-2',
 | 
			
		||||
            redirect: '/nested/menu1/menu1-2/menu1-2-1',
 | 
			
		||||
            meta: { title: 'Menu1-2' },
 | 
			
		||||
            children: [
 | 
			
		||||
              {
 | 
			
		||||
                path: 'menu1-2-1',
 | 
			
		||||
                component: 'views/nested/menu1/menu1-2/menu1-2-1',
 | 
			
		||||
                name: 'Menu1-2-1',
 | 
			
		||||
                meta: { title: 'Menu1-2-1' }
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                path: 'menu1-2-2',
 | 
			
		||||
                component: 'views/nested/menu1/menu1-2/menu1-2-2',
 | 
			
		||||
                name: 'Menu1-2-2',
 | 
			
		||||
                meta: { title: 'Menu1-2-2' }
 | 
			
		||||
              }
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            path: 'menu1-3',
 | 
			
		||||
            component: 'views/nested/menu1/menu1-3',
 | 
			
		||||
            name: 'Menu1-3',
 | 
			
		||||
            meta: { title: 'Menu1-3' }
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'menu2',
 | 
			
		||||
        name: 'Menu2',
 | 
			
		||||
        component: 'views/nested/menu2/index',
 | 
			
		||||
        meta: { title: 'Menu2' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/example',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/example/list',
 | 
			
		||||
    name: 'Example',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Example',
 | 
			
		||||
      icon: 'example'
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'create',
 | 
			
		||||
        component: 'views/example/create',
 | 
			
		||||
        name: 'CreateArticle',
 | 
			
		||||
        meta: { title: 'Create Article', icon: 'edit' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'edit/:id(\\d+)',
 | 
			
		||||
        component: 'views/example/edit',
 | 
			
		||||
        name: 'EditArticle',
 | 
			
		||||
        meta: { title: 'Edit Article', noCache: true },
 | 
			
		||||
        hidden: true
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'list',
 | 
			
		||||
        component: 'views/example/list',
 | 
			
		||||
        name: 'ArticleList',
 | 
			
		||||
        meta: { title: 'Article List', icon: 'list' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/tab',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/tab/index',
 | 
			
		||||
        name: 'Tab',
 | 
			
		||||
        meta: { title: 'Tab', icon: 'tab' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/error',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'noRedirect',
 | 
			
		||||
    name: 'ErrorPages',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Error Pages',
 | 
			
		||||
      icon: '404'
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: '401',
 | 
			
		||||
        component: 'views/error-page/401',
 | 
			
		||||
        name: 'Page401',
 | 
			
		||||
        meta: { title: 'Page 401', noCache: true }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: '404',
 | 
			
		||||
        component: 'views/error-page/404',
 | 
			
		||||
        name: 'Page404',
 | 
			
		||||
        meta: { title: 'Page 404', noCache: true }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/error-log',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'noRedirect',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'log',
 | 
			
		||||
        component: 'views/error-log/index',
 | 
			
		||||
        name: 'ErrorLog',
 | 
			
		||||
        meta: { title: 'Error Log', icon: 'bug' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/excel',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/excel/export-excel',
 | 
			
		||||
    name: 'Excel',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: 'Excel',
 | 
			
		||||
      icon: 'excel'
 | 
			
		||||
    },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'export-excel',
 | 
			
		||||
        component: 'views/excel/export-excel',
 | 
			
		||||
        name: 'ExportExcel',
 | 
			
		||||
        meta: { title: 'Export Excel' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'export-selected-excel',
 | 
			
		||||
        component: 'views/excel/select-excel',
 | 
			
		||||
        name: 'SelectExcel',
 | 
			
		||||
        meta: { title: 'Select Excel' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'export-merge-header',
 | 
			
		||||
        component: 'views/excel/merge-header',
 | 
			
		||||
        name: 'MergeHeader',
 | 
			
		||||
        meta: { title: 'Merge Header' }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        path: 'upload-excel',
 | 
			
		||||
        component: 'views/excel/upload-excel',
 | 
			
		||||
        name: 'UploadExcel',
 | 
			
		||||
        meta: { title: 'Upload Excel' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/zip',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/zip/download',
 | 
			
		||||
    alwaysShow: true,
 | 
			
		||||
    meta: { title: 'Zip', icon: 'zip' },
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'download',
 | 
			
		||||
        component: 'views/zip/index',
 | 
			
		||||
        name: 'ExportZip',
 | 
			
		||||
        meta: { title: 'Export Zip' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/pdf',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: '/pdf/index',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/pdf/index',
 | 
			
		||||
        name: 'PDF',
 | 
			
		||||
        meta: { title: 'PDF', icon: 'pdf' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/pdf/download',
 | 
			
		||||
    component: 'views/pdf/download',
 | 
			
		||||
    hidden: true
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/theme',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'noRedirect',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/theme/index',
 | 
			
		||||
        name: 'Theme',
 | 
			
		||||
        meta: { title: 'Theme', icon: 'theme' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/clipboard',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    redirect: 'noRedirect',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/clipboard/index',
 | 
			
		||||
        name: 'ClipboardDemo',
 | 
			
		||||
        meta: { title: 'Clipboard Demo', icon: 'clipboard' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: '/i18n',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'index',
 | 
			
		||||
        component: 'views/i18n-demo/index',
 | 
			
		||||
        name: 'I18n',
 | 
			
		||||
        meta: { title: 'I18n', icon: 'international' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    path: 'external-link',
 | 
			
		||||
    component: 'layout/Layout',
 | 
			
		||||
    children: [
 | 
			
		||||
      {
 | 
			
		||||
        path: 'https://github.com/PanJiaChen/vue-element-admin',
 | 
			
		||||
        meta: { title: 'External Link', icon: 'link' }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  { path: '*', redirect: '/404', hidden: true }
 | 
			
		||||
]
 | 
			
		||||
		Reference in New Issue
	
	Block a user