Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Springboot Plus
Commits
32fa2af7
Commit
32fa2af7
authored
Sep 08, 2019
by
trumansdo
Browse files
开始进行登录逻辑和用户权限部分修改
加入jwt登录控制,取消配置文件中userid和orgid配置
parent
18144407
Changes
15
Hide whitespace changes
Inline
Side-by-side
plus-admin/admin-console/pom.xml
View file @
32fa2af7
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
admin-console
</artifactId>
<packaging>
jar
</packaging>
<parent>
<groupId>
com.ibeetl
</groupId>
<artifactId>
admin
</artifactId>
<version>
1.3.2
</version>
<relativePath>
../pom.xml
</relativePath>
</parent>
<properties>
<mysql.version>
8.0.17
</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>
com.ibeetl
</groupId>
<artifactId>
admin-core
</artifactId>
<version>
1.3.2
</version>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
${mysql.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-log4j2
</artifactId>
<version>
2.1.7.RELEASE
</version>
</dependency>
</dependencies>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
admin-console
</artifactId>
<packaging>
jar
</packaging>
<parent>
<groupId>
com.ibeetl
</groupId>
<artifactId>
admin
</artifactId>
<version>
1.3.2
</version>
<relativePath>
../pom.xml
</relativePath>
</parent>
<properties>
<mysql.version>
8.0.17
</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>
com.ibeetl
</groupId>
<artifactId>
admin-core
</artifactId>
<version>
1.3.2
</version>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
${mysql.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-log4j2
</artifactId>
</dependency>
</dependencies>
</project>
plus-admin/admin-core/pom.xml
View file @
32fa2af7
...
...
@@ -111,5 +111,11 @@
<artifactId>
poi-ooxml
</artifactId>
<version>
3.17
</version>
</dependency>
<!-- jwt 的Java库,根据JSON Web Token 官网推荐 -->
<dependency>
<groupId>
org.bitbucket.b_c
</groupId>
<artifactId>
jose4j
</artifactId>
<version>
0.6.5
</version>
</dependency>
</dependencies>
</project>
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/MVCConf.java
View file @
32fa2af7
package
com.ibeetl.admin.core.conf
;
import
org.beetl.core.Context
;
import
org.beetl.core.Function
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
com.ibeetl.admin.core.util.HttpRequestLocal
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.beetl.core.GroupTemplate
;
import
org.beetl.ext.spring.BeetlGroupUtilConfiguration
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.env.Environment
;
import
org.springframework.format.FormatterRegistry
;
import
org.springframework.format.datetime.DateFormatter
;
import
org.springframework.http.converter.HttpMessageConverter
;
import
org.springframework.validation.MessageCodesResolver
;
import
org.springframework.validation.Validator
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.method.support.HandlerMethodReturnValueHandler
;
import
org.springframework.web.servlet.HandlerExceptionResolver
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer
;
import
org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.PathMatchConfigurer
;
import
org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
;
import
org.springframework.web.servlet.config.annotation.ViewControllerRegistry
;
import
org.springframework.web.servlet.config.annotation.ViewResolverRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
com.ibeetl.admin.core.util.HttpRequestLocal
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Configuration
public
class
MVCConf
implements
WebMvcConfigurer
,
InitializingBean
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/FunctionLocal.java
View file @
32fa2af7
...
...
@@ -3,7 +3,7 @@ package com.ibeetl.admin.core.util;
import
javax.servlet.http.HttpSession
;
/**
* 用户Controller对应的功能 {@link MVCConf}
* 用户Controller对应的功能 {@link
com.ibeetl.admin.core.conf.
MVCConf}
*
* @author lijiazhi
*/
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/JoseJwtUtil.java
0 → 100644
View file @
32fa2af7
package
com.ibeetl.admin.core.util
;
import
org.jose4j.lang.JoseException
;
/**
* 基于jose4j的jwt库工具类。
* 包括:生成,反生成
* @author 一日看尽长安花
* */
public
class
JoseJwtUtil
{
public
Object
generateJwtJson
()
throws
JoseException
{
return
null
;
}
public
Object
degenerateJwtJson
()
throws
JoseException
{
return
null
;
}
}
plus-admin/pom.xml
View file @
32fa2af7
...
...
@@ -57,6 +57,12 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-quartz
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.8
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
<build>
<plugins>
...
...
ve-admin/admin-web/.eslintrc.js
View file @
32fa2af7
...
...
@@ -30,6 +30,7 @@ module.exports = {
'
no-debugger
'
:
'
off
'
,
'
no-unused-vars
'
:
'
off
'
,
'
vue/no-unused-vars
'
:
'
off
'
,
'
no-useless-escape
'
:
'
off
'
,
quotes
:
[
2
,
'
single
'
,
...
...
ve-admin/admin-web/mock/role/routes.js
View file @
32fa2af7
// Just a mock data,模拟后台发送的路由表
/*
后端路由表中单个路由应该具有的信息
{
"path": "/profile",
"name": "router-name",
"meta": {
"title": "Profile",
"roles": ["admin", "editor"],
"icon": "user"
},
"children": []
}
*/
export
const
constantRoutes
=
[]
export
const
asyncRoutes
=
[
{
path
:
'
/permission
'
,
name
:
'
Permission
'
,
meta
:
{
title
:
'
Permission
'
,
icon
:
'
lock
'
,
roles
:
[
'
admin
'
,
'
editor
'
]
// you can set roles in root nav
},
children
:
[
{
path
:
'
page
'
,
name
:
'
PagePermission
'
,
meta
:
{
title
:
'
Page Permission
'
,
roles
:
[
'
admin
'
]
// or you can only set roles in sub nav
}
},
{
path
:
'
directive
'
,
name
:
'
DirectivePermission
'
,
meta
:
{
title
:
'
Directive Permission
'
// if do not set roles, means: this page does not require permission
}
},
{
path
:
'
role
'
,
name
:
'
RolePermission
'
,
meta
:
{
title
:
'
Role Permission
'
,
roles
:
[
'
admin
'
]
}
}
]
},
{
path
:
'
/icon
'
,
children
:
[
{
path
:
'
index
'
,
name
:
'
Icons
'
,
meta
:
{
title
:
'
Icons
'
,
icon
:
'
icon
'
}
}
]
},
{
path
:
'
/components
'
,
name
:
'
ComponentDemo
'
,
meta
:
{
title
:
'
Components
'
,
icon
:
'
component
'
},
children
:
[
{
path
:
'
tinymce
'
,
name
:
'
TinymceDemo
'
,
meta
:
{
title
:
'
Tinymce
'
}
},
{
path
:
'
markdown
'
,
name
:
'
MarkdownDemo
'
,
meta
:
{
title
:
'
Markdown
'
}
},
{
path
:
'
json-editor
'
,
name
:
'
JsonEditorDemo
'
,
meta
:
{
title
:
'
JSON Editor
'
}
},
{
path
:
'
split-pane
'
,
name
:
'
SplitpaneDemo
'
,
meta
:
{
title
:
'
SplitPane
'
}
},
{
path
:
'
avatar-upload
'
,
name
:
'
AvatarUploadDemo
'
,
meta
:
{
title
:
'
Upload
'
}
},
{
path
:
'
dropzone
'
,
name
:
'
DropzoneDemo
'
,
meta
:
{
title
:
'
Dropzone
'
}
},
{
path
:
'
sticky
'
,
name
:
'
StickyDemo
'
,
meta
:
{
title
:
'
Sticky
'
}
},
{
path
:
'
count-to
'
,
name
:
'
CountToDemo
'
,
meta
:
{
title
:
'
Count To
'
}
},
{
path
:
'
mixin
'
,
name
:
'
ComponentMixinDemo
'
,
meta
:
{
title
:
'
Component Mixin
'
}
},
{
path
:
'
back-to-top
'
,
name
:
'
BackToTopDemo
'
,
meta
:
{
title
:
'
Back To Top
'
}
},
{
path
:
'
drag-dialog
'
,
name
:
'
DragDialogDemo
'
,
meta
:
{
title
:
'
Drag Dialog
'
}
},
{
path
:
'
drag-select
'
,
name
:
'
DragSelectDemo
'
,
meta
:
{
title
:
'
Drag Select
'
}
},
{
path
:
'
dnd-list
'
,
name
:
'
DndListDemo
'
,
meta
:
{
title
:
'
Dnd List
'
}
},
{
path
:
'
drag-kanban
'
,
name
:
'
DragKanbanDemo
'
,
meta
:
{
title
:
'
Drag Kanban
'
}
}
]
},
{
path
:
'
/charts
'
,
name
:
'
Charts
'
,
meta
:
{
title
:
'
Charts
'
,
icon
:
'
chart
'
},
children
:
[
{
path
:
'
keyboard
'
,
name
:
'
KeyboardChart
'
,
meta
:
{
title
:
'
Keyboard Chart
'
}
},
{
path
:
'
line
'
,
name
:
'
LineChart
'
,
meta
:
{
title
:
'
Line Chart
'
}
},
{
path
:
'
mix-chart
'
,
name
:
'
MixChart
'
,
meta
:
{
title
:
'
Mix Chart
'
}
}
]
},
{
path
:
'
/nested
'
,
name
:
'
Nested
'
,
meta
:
{
title
:
'
Nested Routes
'
,
icon
:
'
nested
'
},
children
:
[
{
path
:
'
menu1
'
,
name
:
'
Menu1
'
,
meta
:
{
title
:
'
Menu 1
'
},
children
:
[
{
path
:
'
menu1-1
'
,
name
:
'
Menu1-1
'
,
meta
:
{
title
:
'
Menu 1-1
'
}
},
{
path
:
'
menu1-2
'
,
name
:
'
Menu1-2
'
,
meta
:
{
title
:
'
Menu 1-2
'
},
children
:
[
{
path
:
'
menu1-2-1
'
,
name
:
'
Menu1-2-1
'
,
meta
:
{
title
:
'
Menu 1-2-1
'
}
},
{
path
:
'
menu1-2-2
'
,
name
:
'
Menu1-2-2
'
,
meta
:
{
title
:
'
Menu 1-2-2
'
}
}
]
},
{
path
:
'
menu1-3
'
,
name
:
'
Menu1-3
'
,
meta
:
{
title
:
'
Menu 1-3
'
}
}
]
},
{
path
:
'
menu2
'
,
name
:
'
Menu2
'
,
meta
:
{
title
:
'
Menu 2
'
}
}
]
},
{
path
:
'
/table
'
,
name
:
'
Table
'
,
...
...
@@ -11,11 +227,191 @@ export const asyncRoutes = [
icon
:
'
table
'
},
children
:
[
{
path
:
'
dynamic-table
'
,
name
:
'
DynamicTable
'
,
meta
:
{
title
:
'
Dynamic Table
'
}
},
{
path
:
'
drag-table
'
,
name
:
'
DragTable
'
,
meta
:
{
title
:
'
Drag Table
'
}
},
{
path
:
'
inline-edit-table
'
,
name
:
'
InlineEditTable
'
,
meta
:
{
title
:
'
Inline Edit
'
}
},
{
path
:
'
complex-table
'
,
name
:
'
ComplexTable
'
,
meta
:
{
title
:
'
Complex Table
'
}
}
]
}
},
{
path
:
'
/example
'
,
name
:
'
Example
'
,
meta
:
{
title
:
'
Example
'
,
icon
:
'
example
'
},
children
:
[
{
path
:
'
create
'
,
name
:
'
CreateArticle
'
,
meta
:
{
title
:
'
Create Article
'
,
icon
:
'
edit
'
}
},
{
path
:
'
edit/:id(
\\
d+)
'
,
name
:
'
EditArticle
'
,
meta
:
{
title
:
'
Edit Article
'
,
}
},
{
path
:
'
list
'
,
name
:
'
ArticleList
'
,
meta
:
{
title
:
'
Article List
'
,
icon
:
'
list
'
}
}
]
},
{
path
:
'
/tab
'
,
children
:
[
{
path
:
'
index
'
,
name
:
'
Tab
'
,
meta
:
{
title
:
'
Tab
'
,
icon
:
'
tab
'
}
}
]
},
{
path
:
'
/error
'
,
name
:
'
ErrorPages
'
,
meta
:
{
title
:
'
Error Pages
'
,
icon
:
'
404
'
},
children
:
[
{
path
:
'
401
'
,
name
:
'
Page401
'
,
meta
:
{
title
:
'
401
'
}
},
{
path
:
'
404
'
,
name
:
'
Page404
'
,
meta
:
{
title
:
'
404
'
}
}
]
},
{
path
:
'
/error-log
'
,
children
:
[
{
path
:
'
log
'
,
name
:
'
ErrorLog
'
,
meta
:
{
title
:
'
Error Log
'
,
icon
:
'
bug
'
}
}
]
},
{
path
:
'
/excel
'
,
name
:
'
Excel
'
,
meta
:
{
title
:
'
Excel
'
,
icon
:
'
excel
'
},
children
:
[
{
path
:
'
export-excel
'
,
name
:
'
ExportExcel
'
,
meta
:
{
title
:
'
Export Excel
'
}
},
{
path
:
'
export-selected-excel
'
,
name
:
'
SelectExcel
'
,
meta
:
{
title
:
'
Export Selected
'
}
},
{
path
:
'
export-merge-header
'
,
name
:
'
MergeHeader
'
,
meta
:
{
title
:
'
Merge Header
'
}
},
{
path
:
'
upload-excel
'
,
name
:
'
UploadExcel
'
,
meta
:
{
title
:
'
Upload Excel
'
}
}
]
},
{
path
:
'
/zip
'
,
name
:
'
Zip
'
,
meta
:
{
title
:
'
Zip
'
,
icon
:
'
zip
'
},
children
:
[
{
path
:
'
download
'
,
name
:
'
ExportZip
'
,
meta
:
{
title
:
'
Export Zip
'
}
}
]
},
{
path
:
'
/pdf
'
,
children
:
[
{
path
:
'
index
'
,
name
:
'
PDF
'
,
meta
:
{
title
:
'
PDF
'
,
icon
:
'
pdf
'
}
}
]
},
{
path
:
'
/pdf/download
'
,
hidden
:
true
},
{
path
:
'
/theme
'
,
children
:
[
{
path
:
'
index
'
,
name
:
'
Theme
'
,
meta
:
{
title
:
'
Theme
'
,
icon
:
'
theme
'
}
}
]
},
{
path
:
'
/clipboard
'
,
children
:
[
{
path
:
'
index
'
,
name
:
'
ClipboardDemo
'
,
meta
:
{
title
:
'
Clipboard
'
,
icon
:
'
clipboard
'
}
}
]
},
{
path
:
'
external-link
'
,
children
:
[
{
path
:
'
https://github.com/PanJiaChen/vue-element-admin
'
,
meta
:
{
title
:
'
External Link
'
,
icon
:
'
link
'
}
}
]
},
// 404 page must be placed at the end !!!
{
path
:
'
*
'
,
redirect
:
'
/404
'
,
hidden
:
true
}
]
ve-admin/admin-web/src/router/index.js
View file @
32fa2af7
...
...
@@ -66,7 +66,7 @@ export const constantRoutes = [
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/documentation/index
'
),
name
:
'
Documentation
'
,
meta
:
{
title
:
'
Documentation
'
,
icon
:
'
documentation
'
,
affix
:
tru
e
}
meta
:
{
title
:
'
Documentation
'
,
icon
:
'
documentation
'
,
affix
:
fals
e
}
}
]
},
...
...
ve-admin/admin-web/src/router/maps/charts.js
0 → 100644
View file @
32fa2af7
/** When your routing table is too long, you can split it into small modules**/
import
Layout
from
'
@/layout
'
const
chartsRouter
=
{
path
:
'
/charts
'
,
component
:
Layout
,
redirect
:
'
noRedirect
'
,
name
:
'
Charts
'
,
children
:
[
{
path
:
'
keyboard
'
,
component
:
()
=>
import
(
'
@/views/charts/keyboard
'
),
name
:
'
KeyboardChart
'
,
meta
:
{
noCache
:
true
}
},
{
path
:
'
line
'
,
component
:
()
=>
import
(
'
@/views/charts/line
'
),
name
:
'
LineChart
'
,
meta
:
{
noCache
:
true
}
},
{
path
:
'
mix-chart
'
,
component
:
()
=>
import
(
'
@/views/charts/mix-chart
'
),
name
:
'
MixChart
'
,
meta
:
{
noCache
:
true
}
}
]
}
export
default
chartsRouter
ve-admin/admin-web/src/router/maps/components.js
0 → 100644
View file @
32fa2af7
/** When your routing table is too long, you can split it into small modules **/
import
Layout
from
'
@/layout
'
const
componentsRouter
=
{
path
:
'
/components
'
,
component
:
Layout
,
redirect
:
'
noRedirect
'
,
name
:
'
ComponentDemo
'
,
children
:
[
{
path
:
'
tinymce
'
,
component
:
()
=>
import
(
'
@/views/components-demo/tinymce
'
),
name
:
'
TinymceDemo
'
},
{
path
:
'
markdown
'
,
component
:
()
=>
import
(
'
@/views/components-demo/markdown
'
),
name
:
'
MarkdownDemo
'
},
{
path
:
'
json-editor
'
,
component
:
()
=>
import
(
'
@/views/components-demo/json-editor
'
),
name
:
'
JsonEditorDemo
'
},
{
path
:
'
split-pane
'
,
component
:
()
=>
import
(
'
@/views/components-demo/split-pane
'
),
name
:
'
SplitpaneDemo
'
},
{
path
:
'
avatar-upload
'
,
component
:
()
=>
import
(
'
@/views/components-demo/avatar-upload
'
),
name
:
'
AvatarUploadDemo
'
},
{
path
:
'
dropzone
'
,
component
:
()
=>
import
(
'
@/views/components-demo/dropzone
'
),
name
:
'
DropzoneDemo
'
},
{
path
:
'
sticky
'
,
component
:
()
=>
import
(
'
@/views/components-demo/sticky
'
),
name
:
'
StickyDemo
'
},
{
path
:
'
count-to
'
,
component
:
()
=>
import
(
'
@/views/components-demo/count-to
'
),
name
:
'
CountToDemo
'
},
{
path
:
'
mixin
'
,
component
:
()
=>
import
(
'
@/views/components-demo/mixin
'
),
name
:
'
ComponentMixinDemo
'
},
{
path
:
'
back-to-top
'
,
component
:
()
=>
import
(
'
@/views/components-demo/back-to-top
'
),
name
:
'
BackToTopDemo
'
},
{
path
:
'
drag-dialog
'
,
component
:
()
=>
import
(
'
@/views/components-demo/drag-dialog
'
),
name
:
'
DragDialogDemo
'
},
{
path
:
'
drag-select
'
,
component
:
()
=>
import
(
'
@/views/components-demo/drag-select
'
),
name
:
'
DragSelectDemo
'
},
{
path
:
'
dnd-list
'
,
component
:
()
=>
import
(
'
@/views/components-demo/dnd-list
'
),
name
:
'
DndListDemo
'
},
{
path
:
'
drag-kanban
'
,
component
:
()
=>
import
(
'
@/views/components-demo/drag-kanban
'
),
name
:
'
DragKanbanDemo
'
}
]
}
export
default
componentsRouter
ve-admin/admin-web/src/router/
route_map
.js
→
ve-admin/admin-web/src/router/
maps/index
.js
View file @
32fa2af7
...
...
@@ -6,11 +6,11 @@
/* Layout */
import
Layout
from
'
@/layout
'
/* Router Modules */
//
import componentsRouter from './
modules/
components'
//
import chartsRouter from './
modules/
charts'
//
import tableRouter from './
modules/
table'
//
import nestedRouter from './
modules/
nested'
/* Router
Map
Modules */
import
componentsRouter
from
'
./components
'
import
chartsRouter
from
'
./charts
'
import
tableRouter
from
'
./table
'
import
nestedRouter
from
'
./nested
'
/**
* Note: sub-menu only appear when route children.length >= 1
...
...
@@ -40,21 +40,211 @@ import Layout from '@/layout'
*/
export
const
asyncRoutesMap
=
[
{
path
:
'
/
table
'
,
path
:
'
/
permission
'
,
component
:
Layout
,
redirect
:
'
/table/complex-table
'
,
redirect
:
'
/permission/page
'
,
alwaysShow
:
true
,
// will always show the root menu
name
:
'
Permission
'
,
children
:
[
{
path
:
'
page
'
,
component
:
()
=>
import
(
'
@/views/permission/page
'
),
name
:
'
PagePermission
'
},
{
path
:
'
directive
'
,
component
:
()
=>
import
(
'
@/views/permission/directive
'
),
name
:
'
DirectivePermission
'
},
{
path
:
'
role
'
,
component
:
()
=>
import
(
'
@/views/permission/role
'
),
name
:
'
RolePermission
'
}
]
},
{
path
:
'
/icon
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/icons/index
'
),
name
:
'
Icons
'
,
meta
:
{
noCache
:
true
}
}
]
},
/** when your routing map is too long, you can split it into small modules **/
componentsRouter
,
chartsRouter
,
nestedRouter
,
tableRouter
,
{
path
:
'
/example
'
,
component
:
Layout
,
redirect
:
'
/example/list
'
,
name
:
'
Example
'
,
children
:
[
{
path
:
'
create
'
,
component
:
()
=>
import
(
'
@/views/example/create
'
),
name
:
'
CreateArticle
'
},
{
path
:
'
edit/:id(
\\
d+)
'
,
component
:
()
=>
import
(
'
@/views/example/edit
'
),
name
:
'
EditArticle
'
,
meta
:
{
noCache
:
true
,
activeMenu
:
'
/example/list
'
},
hidden
:
true
},
{
path
:
'
list
'
,
component
:
()
=>
import
(
'
@/views/example/list
'
),
name
:
'
ArticleList
'
}
]
},
{
path
:
'
/tab
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/tab/index
'
),
name
:
'
Tab
'
}
]
},
{
path
:
'
/error
'
,
component
:
Layout
,
redirect
:
'
noRedirect
'
,
name
:
'
ErrorPages
'
,
children
:
[
{
path
:
'
401
'
,
component
:
()
=>
import
(
'
@/views/error-page/401
'
),
name
:
'
Page401
'
,
meta
:
{
noCache
:
true
}
},
{
path
:
'
404
'
,
component
:
()
=>
import
(
'
@/views/error-page/404
'
),
name
:
'
Page404
'
,
meta
:
{
noCache
:
true
}
}
]
},
{
path
:
'
/error-log
'
,
component
:
Layout
,
children
:
[
{
path
:
'
log
'
,
component
:
()
=>
import
(
'
@/views/error-log/index
'
),
name
:
'
ErrorLog
'
}
]
},
{
path
:
'
/excel
'
,
component
:
Layout
,
redirect
:
'
/excel/export-excel
'
,
name
:
'
Excel
'
,
children
:
[
{
path
:
'
export-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/export-excel
'
),
name
:
'
ExportExcel
'
},
{
path
:
'
export-selected-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/select-excel
'
),
name
:
'
SelectExcel
'
},
{
path
:
'
export-merge-header
'
,
component
:
()
=>
import
(
'
@/views/excel/merge-header
'
),
name
:
'
MergeHeader
'
},
{
path
:
'
upload-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/upload-excel
'
),
name
:
'
UploadExcel
'
}
]
},
{
path
:
'
/zip
'
,
component
:
Layout
,
redirect
:
'
/zip/download
'
,
alwaysShow
:
true
,
name
:
'
Table
'
,
meta
:
{
noCache
:
true
,
affix
:
false
,
breadcrumb
:
false
},
name
:
'
Zip
'
,
children
:
[
{
path
:
'
complex-table
'
,
component
:
()
=>
import
(
'
@/views/table/complex-table
'
),
name
:
'
ComplexTable
'
path
:
'
download
'
,
component
:
()
=>
import
(
'
@/views/zip/index
'
),
name
:
'
ExportZip
'
}
]
},
{
path
:
'
/pdf
'
,
component
:
Layout
,
redirect
:
'
/pdf/index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/pdf/index
'
),
name
:
'
PDF
'
}
]
},
{
path
:
'
/pdf/download
'
,
component
:
()
=>
import
(
'
@/views/pdf/download
'
),
hidden
:
true
},
{
path
:
'
/theme
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/theme/index
'
),
name
:
'
Theme
'
}
]
},
{
path
:
'
/clipboard
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/clipboard/index
'
),
name
:
'
ClipboardDemo
'
}
]
},
{
path
:
'
external-link
'
,
component
:
Layout
,
children
:
[
{
path
:
'
https://github.com/PanJiaChen/vue-element-admin
'
}
]
},
...
...
@@ -63,7 +253,7 @@ export const asyncRoutesMap = [
{
path
:
'
*
'
,
redirect
:
'
/404
'
,
hidden
:
true
}
]
/*
前端路由表中单个路由映射全部具有的信息
前端路由
映射
表中单个路由映射全部具有的信息
{
"path": "/profile",
"component": "Layout",
...
...
@@ -90,8 +280,4 @@ export const asyncRoutesMap = [
},
"children": []
}
*/
ve-admin/admin-web/src/router/maps/nested.js
0 → 100644
View file @
32fa2af7
/** When your routing table is too long, you can split it into small modules **/
import
Layout
from
'
@/layout
'
const
nestedRouter
=
{
path
:
'
/nested
'
,
component
:
Layout
,
redirect
:
'
/nested/menu1/menu1-1
'
,
name
:
'
Nested
'
,
children
:
[
{
path
:
'
menu1
'
,
component
:
()
=>
import
(
'
@/views/nested/menu1/index
'
),
// Parent router-view
name
:
'
Menu1
'
,
redirect
:
'
/nested/menu1/menu1-1
'
,
children
:
[
{
path
:
'
menu1-1
'
,
component
:
()
=>
import
(
'
@/views/nested/menu1/menu1-1
'
),
name
:
'
Menu1-1
'
},
{
path
:
'
menu1-2
'
,
component
:
()
=>
import
(
'
@/views/nested/menu1/menu1-2
'
),
name
:
'
Menu1-2
'
,
redirect
:
'
/nested/menu1/menu1-2/menu1-2-1
'
,
children
:
[
{
path
:
'
menu1-2-1
'
,
component
:
()
=>
import
(
'
@/views/nested/menu1/menu1-2/menu1-2-1
'
),
name
:
'
Menu1-2-1
'
},
{
path
:
'
menu1-2-2
'
,
component
:
()
=>
import
(
'
@/views/nested/menu1/menu1-2/menu1-2-2
'
),
name
:
'
Menu1-2-2
'
}
]
},
{
path
:
'
menu1-3
'
,
component
:
()
=>
import
(
'
@/views/nested/menu1/menu1-3
'
),
name
:
'
Menu1-3
'
}
]
},
{
path
:
'
menu2
'
,
name
:
'
Menu2
'
,
component
:
()
=>
import
(
'
@/views/nested/menu2/index
'
)
}
]
}
export
default
nestedRouter
ve-admin/admin-web/src/router/maps/table.js
0 → 100644
View file @
32fa2af7
/** When your routing table is too long, you can split it into small modules **/
import
Layout
from
'
@/layout
'
const
tableRouter
=
{
path
:
'
/table
'
,
component
:
Layout
,
redirect
:
'
/table/complex-table
'
,
name
:
'
Table
'
,
children
:
[
{
path
:
'
dynamic-table
'
,
component
:
()
=>
import
(
'
@/views/table/dynamic-table/index
'
),
name
:
'
DynamicTable
'
},
{
path
:
'
drag-table
'
,
component
:
()
=>
import
(
'
@/views/table/drag-table
'
),
name
:
'
DragTable
'
},
{
path
:
'
inline-edit-table
'
,
component
:
()
=>
import
(
'
@/views/table/inline-edit-table
'
),
name
:
'
InlineEditTable
'
},
{
path
:
'
complex-table
'
,
component
:
()
=>
import
(
'
@/views/table/complex-table
'
),
name
:
'
ComplexTable
'
}
]
}
export
default
tableRouter
ve-admin/admin-web/src/store/modules/permission.js
View file @
32fa2af7
import
{
constantRoutes
}
from
'
@/router
'
import
{
getRoutes
}
from
'
@/api/role
'
import
{
asyncRoutesMap
}
from
'
@/router/
route_map
'
import
{
asyncRoutesMap
}
from
'
@/router/
maps/index
'
import
{
deepClone
,
objectMerge
}
from
'
@/utils/index
'
/**
...
...
@@ -30,11 +30,11 @@ export function filterAsyncRoutes(routesMap, routes, roles) {
let
tempRoute
=
{
...
route
}
let
tempRouteMap
for
(
let
rm
of
routesMap
)
{
if
(
!
rm
.
name
||
!
route
.
name
|
!
rm
.
path
|
!
route
.
path
)
{
console
.
error
(
`检查路由表中
${
rm
.
name
}
信息
`
)
if
(
!
rm
.
path
|
|
!
route
.
path
)
{
console
.
error
(
`检查路由表中
${
rm
.
name
}
的path信息,path必须在同级唯一
`
)
continue
}
if
(
rm
.
name
===
route
.
name
)
{
if
(
rm
.
path
===
route
.
path
)
{
tempRouteMap
=
{
...
rm
}
break
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment