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
afdf4eec
"vscode:/vscode.git/clone" did not exist on "afdf4eec12985b845a61dea4e793a84ca3d1ff00"
Commit
afdf4eec
authored
Sep 03, 2019
by
trumansdo
Browse files
确定路由表应该由后端生成,前端应该存有一份路由名的映射关系
parent
f2544d0e
Changes
17
Show whitespace changes
Inline
Side-by-side
admin-console/pom.xml
View file @
afdf4eec
...
@@ -15,12 +15,26 @@
...
@@ -15,12 +15,26 @@
<artifactId>
admin-core
</artifactId>
<artifactId>
admin-core
</artifactId>
<version>
1.3.2
</version>
<version>
1.3.2
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
mysql
</groupId>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.17
</version>
<version>
8.0.17
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<exclusions>
<exclusion>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-logging
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-log4j2
</artifactId>
<version>
2.1.7.RELEASE
</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
admin-console/src/main/java/com/ibeetl/admin/console/web/UserConsoleController.java
View file @
afdf4eec
...
@@ -236,8 +236,7 @@ public class UserConsoleController {
...
@@ -236,8 +236,7 @@ public class UserConsoleController {
/**
/**
* 用户所有授权角色列表
* 用户所有授权角色列表
*
*
* @param id
* @param id 用户id
* 用户id
* @return
* @return
*/
*/
@PostMapping
(
MODEL
+
"/role/list.json"
)
@PostMapping
(
MODEL
+
"/role/list.json"
)
...
@@ -284,17 +283,17 @@ public class UserConsoleController {
...
@@ -284,17 +283,17 @@ public class UserConsoleController {
@PostMapping
(
MODEL
+
"/excel/export.json"
)
@PostMapping
(
MODEL
+
"/excel/export.json"
)
@Function
(
"user.export"
)
@Function
(
"user.export"
)
@ResponseBody
@ResponseBody
public
JsonResult
<
String
>
export
(
HttpServletResponse
response
,
UserQuery
condtion
)
{
public
JsonResult
<
String
>
export
(
HttpServletResponse
response
,
UserQuery
condtion
)
{
String
excelTemplate
=
"excelTemplates/admin/user/user_collection_template.xls"
;
String
excelTemplate
=
"excelTemplates/admin/user/user_collection_template.xls"
;
PageQuery
<
CoreUser
>
page
=
condtion
.
getPageQuery
();
PageQuery
<
CoreUser
>
page
=
condtion
.
getPageQuery
();
//取出全部符合条件的
//取出全部符合条件的
page
.
setPageSize
(
Integer
.
MAX_VALUE
);
page
.
setPageSize
(
Integer
.
MAX_VALUE
);
page
.
setPageNumber
(
1
);
page
.
setPageNumber
(
1
);
page
.
setTotalRow
(
Integer
.
MAX_VALUE
);
page
.
setTotalRow
(
Integer
.
MAX_VALUE
);
List
<
UserExcelExportData
>
users
=
userConsoleService
.
queryExcel
(
page
);
List
<
UserExcelExportData
>
users
=
userConsoleService
.
queryExcel
(
page
);
try
(
InputStream
is
=
Thread
.
currentThread
().
getContextClassLoader
().
getResourceAsStream
(
excelTemplate
))
{
try
(
InputStream
is
=
Thread
.
currentThread
().
getContextClassLoader
().
getResourceAsStream
(
excelTemplate
))
{
if
(
is
==
null
)
{
if
(
is
==
null
)
{
throw
new
PlatformException
(
"模板资源不存在:"
+
excelTemplate
);
throw
new
PlatformException
(
"模板资源不存在:"
+
excelTemplate
);
}
}
FileItem
item
=
fileService
.
createFileTemp
(
"user_collection.xls"
);
FileItem
item
=
fileService
.
createFileTemp
(
"user_collection.xls"
);
OutputStream
os
=
item
.
openOutpuStream
();
OutputStream
os
=
item
.
openOutpuStream
();
...
@@ -310,8 +309,4 @@ public class UserConsoleController {
...
@@ -310,8 +309,4 @@ public class UserConsoleController {
}
}
}
}
admin-core/pom.xml
View file @
afdf4eec
...
@@ -70,10 +70,10 @@
...
@@ -70,10 +70,10 @@
<groupId>
com.zaxxer
</groupId>
<groupId>
com.zaxxer
</groupId>
<artifactId>
HikariCP
</artifactId>
<artifactId>
HikariCP
</artifactId>
</dependency>
</dependency>
<dependency>
<!--
<dependency>
<groupId>mysql</groupId>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependency>
-->
<!-- <dependency>
<!-- <dependency>
<groupId>com.oracle</groupId>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<artifactId>ojdbc6</artifactId>
...
...
admin-core/src/main/java/com/ibeetl/admin/core/conf/CustomErrorController.java
View file @
afdf4eec
...
@@ -64,8 +64,8 @@ public class CustomErrorController extends AbstractErrorController {
...
@@ -64,8 +64,8 @@ public class CustomErrorController extends AbstractErrorController {
//后台打印日志信息方方便查错
//后台打印日志信息方方便查错
log
.
info
(
status
+
":"
+
message
+
filedErrors
,
cause
);
log
.
error
(
status
+
":"
+
message
+
filedErrors
,
cause
);
log
.
info
(
"requestPath"
+
":"
+
requestPath
);
log
.
error
(
"requestPath"
+
":"
+
requestPath
);
response
.
setStatus
(
status
);
response
.
setStatus
(
status
);
...
...
admin-core/src/main/java/com/ibeetl/admin/core/web/IndexController.java
View file @
afdf4eec
...
@@ -40,7 +40,7 @@ public class IndexController {
...
@@ -40,7 +40,7 @@ public class IndexController {
@PostMapping
(
"/login
.do
"
)
@PostMapping
(
"/
user/
login"
)
public
ModelAndView
login
(
String
code
,
String
password
)
{
public
ModelAndView
login
(
String
code
,
String
password
)
{
UserLoginInfo
info
=
userService
.
login
(
code
,
password
);
UserLoginInfo
info
=
userService
.
login
(
code
,
password
);
if
(
info
==
null
)
{
if
(
info
==
null
)
{
...
...
admin-web/.env.development
View file @
afdf4eec
# just a flag
# just a flag
ENV = 'development'
ENV = 'development'
# base api
# base api 用于axios 配置中的baseURL,是服务器地址。
# 在这里是webpack-dev-server启动的地址,然后通过webpack-dev-server的proxy代理到我们的后台服务器
# 仅限开发环境,生产环境要用NGINX仅限代理
VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = '/dev-api'
VUE_APP_SERVER_HOST = 'http://127.0.0.1:9527/mock'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
...
...
admin-web/.eslintrc.js
View file @
afdf4eec
...
@@ -2,12 +2,30 @@ module.exports = {
...
@@ -2,12 +2,30 @@ module.exports = {
root
:
true
,
root
:
true
,
env
:
{
env
:
{
node
:
true
browser
:
true
,
node
:
true
,
es6
:
true
},
},
extends
:
[
'
plugin:vue/essential
'
,
'
@vue/prettier
'
],
extends
:
[
// 各种eslint检查的规则
'
plugin:vue/essential
'
,
'
plugin:prettier/recommended
'
,
'
eslint:recommended
'
],
plugins
:
[
'
vue
'
],
// 各种eslint检查的规则
rules
:
{
rules
:
{
'
prettier/prettier
'
:
[
'
off
'
,
{
singleQuote
:
true
,
trailingComma
:
'
none
'
,
bracketSpacing
:
true
,
jsxBracketSameLine
:
true
,
parser
:
'
flow
'
,
semi
:
false
}
],
'
no-console
'
:
'
off
'
,
'
no-console
'
:
'
off
'
,
'
no-debugger
'
:
'
off
'
,
'
no-debugger
'
:
'
off
'
,
'
no-unused-vars
'
:
'
off
'
,
'
no-unused-vars
'
:
'
off
'
,
...
@@ -20,7 +38,50 @@ module.exports = {
...
@@ -20,7 +38,50 @@ module.exports = {
allowTemplateLiterals
:
true
allowTemplateLiterals
:
true
}
}
],
],
'
jsx-quotes
'
:
[
2
,
'
prefer-single
'
]
'
jsx-quotes
'
:
[
2
,
'
prefer-single
'
],
// 缩进为2个空格
'
vue/html-indent
'
:
[
'
error
'
,
2
,
{
attribute
:
1
,
alignAttributesVertically
:
true
,
ignores
:
[]
}
],
'
vue/max-attributes-per-line
'
:
[
2
,
{
singleline
:
10
,
multiline
:
{
max
:
1
,
allowFirstLine
:
false
}
}
],
'
vue/html-self-closing
'
:
'
off
'
,
'
vue/name-property-casing
'
:
[
'
error
'
,
'
PascalCase
'
],
// allow async-await
'
generator-star-spacing
'
:
'
off
'
,
// allow debugger during development
'
no-debugger
'
:
process
.
env
.
NODE_ENV
===
'
production
'
?
'
error
'
:
'
off
'
,
// 关闭检测函数名称和调用它的左括号之间的空格
// 'func-call-spacing': 'off',
// 缩进为2个空格
indent
:
[
'
error
'
,
2
],
// 关闭检测未使用的变量
'
no-unused-vars
'
:
'
off
'
,
// 对象展开时总是要添加逗号,一行时行末不需要逗号
// 'comma-dangle': ['error', 'always-multiline'],
// 关闭禁用无效标签
'
no-tabs
'
:
'
off
'
,
// 关闭空行检测
'
no-multiple-empty-lines
'
:
'
off
'
,
// 关闭模板字符串检测
'
no-template-curly-in-string
'
:
'
off
'
,
'
no-console
'
:
'
off
'
,
// 禁止添加分号
semi
:
[
'
error
'
,
'
never
'
]
},
},
parserOptions
:
{
parserOptions
:
{
...
@@ -37,4 +98,4 @@ module.exports = {
...
@@ -37,4 +98,4 @@ module.exports = {
],
],
extends
:
[
'
plugin:vue/essential
'
,
'
@vue/prettier
'
]
extends
:
[
'
plugin:vue/essential
'
,
'
@vue/prettier
'
]
}
;
}
admin-web/package.json
View file @
afdf4eec
...
@@ -89,6 +89,8 @@
...
@@ -89,6 +89,8 @@
"eslint"
:
"5.15.3"
,
"eslint"
:
"5.15.3"
,
"eslint-plugin-prettier"
:
"^3.1.0"
,
"eslint-plugin-prettier"
:
"^3.1.0"
,
"eslint-plugin-vue"
:
"5.2.2"
,
"eslint-plugin-vue"
:
"5.2.2"
,
"eslint-config-prettier"
:
"^6.1.0"
,
"prettier-eslint-cli"
:
"^5.0.0"
,
"prettier"
:
"^1.18.2"
,
"prettier"
:
"^1.18.2"
,
"html-webpack-plugin"
:
"3.2.0"
,
"html-webpack-plugin"
:
"3.2.0"
,
"husky"
:
"1.3.1"
,
"husky"
:
"1.3.1"
,
...
...
admin-web/src/permission.js
View file @
afdf4eec
...
@@ -38,7 +38,7 @@ router.beforeEach(async(to, from, next) => {
...
@@ -38,7 +38,7 @@ router.beforeEach(async(to, from, next) => {
// generate accessible routes map based on roles
// generate accessible routes map based on roles
const
accessRoutes
=
await
store
.
dispatch
(
'
permission/generateRoutes
'
,
roles
)
const
accessRoutes
=
await
store
.
dispatch
(
'
permission/generateRoutes
'
,
roles
)
debugger
// dynamically add accessible routes
// dynamically add accessible routes
router
.
addRoutes
(
accessRoutes
)
router
.
addRoutes
(
accessRoutes
)
...
...
admin-web/src/router/index.js
View file @
afdf4eec
...
@@ -3,389 +3,7 @@ import Router from 'vue-router'
...
@@ -3,389 +3,7 @@ import Router from 'vue-router'
Vue
.
use
(
Router
)
Vue
.
use
(
Router
)
/* Layout */
import
constantRoutes
from
'
./route_map
'
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
'
/**
* 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
noCache: true if set true, the page will no be cached(default is false)
affix: true if set true, the tag will affix in the tags-view
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
=
[
{
path
:
'
/redirect
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
/redirect/:path*
'
,
component
:
()
=>
import
(
'
@/views/redirect/index
'
)
}
]
},
{
path
:
'
/login
'
,
component
:
()
=>
import
(
'
@/views/login/index
'
),
hidden
:
true
},
{
path
:
'
/auth-redirect
'
,
component
:
()
=>
import
(
'
@/views/login/auth-redirect
'
),
hidden
:
true
},
{
path
:
'
/404
'
,
component
:
()
=>
import
(
'
@/views/error-page/404
'
),
hidden
:
true
},
{
path
:
'
/401
'
,
component
:
()
=>
import
(
'
@/views/error-page/401
'
),
hidden
:
true
},
{
path
:
'
/
'
,
component
:
Layout
,
redirect
:
'
/dashboard
'
,
children
:
[
{
path
:
'
dashboard
'
,
component
:
()
=>
import
(
'
@/views/dashboard/index
'
),
name
:
'
Dashboard
'
,
meta
:
{
title
:
'
Dashboard
'
,
icon
:
'
dashboard
'
,
affix
:
true
}
}
]
},
{
path
:
'
/documentation
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/documentation/index
'
),
name
:
'
Documentation
'
,
meta
:
{
title
:
'
Documentation
'
,
icon
:
'
documentation
'
,
affix
:
true
}
}
]
},
{
path
:
'
/guide
'
,
component
:
Layout
,
redirect
:
'
/guide/index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/guide/index
'
),
name
:
'
Guide
'
,
meta
:
{
title
:
'
Guide
'
,
icon
:
'
guide
'
,
noCache
:
true
}
}
]
},
{
path
:
'
/profile
'
,
component
:
Layout
,
redirect
:
'
/profile/index
'
,
hidden
:
true
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/profile/index
'
),
name
:
'
Profile
'
,
meta
:
{
title
:
'
Profile
'
,
icon
:
'
user
'
,
noCache
:
true
}
}
]
}
]
/**
* asyncRoutes
* the routes that need to be dynamically loaded based on user roles
*/
export
const
asyncRoutes
=
[
{
path
:
'
/permission
'
,
component
:
Layout
,
redirect
:
'
/permission/page
'
,
alwaysShow
:
true
,
// will always show the root menu
name
:
'
Permission
'
,
meta
:
{
title
:
'
Permission
'
,
icon
:
'
lock
'
,
roles
:
[
'
admin
'
,
'
editor
'
]
// you can set roles in root nav
},
children
:
[
{
path
:
'
page
'
,
component
:
()
=>
import
(
'
@/views/permission/page
'
),
name
:
'
PagePermission
'
,
meta
:
{
title
:
'
Page Permission
'
,
roles
:
[
'
admin
'
]
// or you can only set roles in sub nav
}
},
{
path
:
'
directive
'
,
component
:
()
=>
import
(
'
@/views/permission/directive
'
),
name
:
'
DirectivePermission
'
,
meta
:
{
title
:
'
Directive Permission
'
// if do not set roles, means: this page does not require permission
}
},
{
path
:
'
role
'
,
component
:
()
=>
import
(
'
@/views/permission/role
'
),
name
:
'
RolePermission
'
,
meta
:
{
title
:
'
Role Permission
'
,
roles
:
[
'
admin
'
]
}
}
]
},
{
path
:
'
/icon
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/icons/index
'
),
name
:
'
Icons
'
,
meta
:
{
title
:
'
Icons
'
,
icon
:
'
icon
'
,
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
'
,
meta
:
{
title
:
'
Example
'
,
icon
:
'
example
'
},
children
:
[
{
path
:
'
create
'
,
component
:
()
=>
import
(
'
@/views/example/create
'
),
name
:
'
CreateArticle
'
,
meta
:
{
title
:
'
Create Article
'
,
icon
:
'
edit
'
}
},
{
path
:
'
edit/:id(
\\
d+)
'
,
component
:
()
=>
import
(
'
@/views/example/edit
'
),
name
:
'
EditArticle
'
,
meta
:
{
title
:
'
Edit Article
'
,
noCache
:
true
,
activeMenu
:
'
/example/list
'
},
hidden
:
true
},
{
path
:
'
list
'
,
component
:
()
=>
import
(
'
@/views/example/list
'
),
name
:
'
ArticleList
'
,
meta
:
{
title
:
'
Article List
'
,
icon
:
'
list
'
}
}
]
},
{
path
:
'
/tab
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/tab/index
'
),
name
:
'
Tab
'
,
meta
:
{
title
:
'
Tab
'
,
icon
:
'
tab
'
}
}
]
},
{
path
:
'
/error
'
,
component
:
Layout
,
redirect
:
'
noRedirect
'
,
name
:
'
ErrorPages
'
,
meta
:
{
title
:
'
Error Pages
'
,
icon
:
'
404
'
},
children
:
[
{
path
:
'
401
'
,
component
:
()
=>
import
(
'
@/views/error-page/401
'
),
name
:
'
Page401
'
,
meta
:
{
title
:
'
401
'
,
noCache
:
true
}
},
{
path
:
'
404
'
,
component
:
()
=>
import
(
'
@/views/error-page/404
'
),
name
:
'
Page404
'
,
meta
:
{
title
:
'
404
'
,
noCache
:
true
}
}
]
},
{
path
:
'
/error-log
'
,
component
:
Layout
,
children
:
[
{
path
:
'
log
'
,
component
:
()
=>
import
(
'
@/views/error-log/index
'
),
name
:
'
ErrorLog
'
,
meta
:
{
title
:
'
Error Log
'
,
icon
:
'
bug
'
}
}
]
},
{
path
:
'
/excel
'
,
component
:
Layout
,
redirect
:
'
/excel/export-excel
'
,
name
:
'
Excel
'
,
meta
:
{
title
:
'
Excel
'
,
icon
:
'
excel
'
},
children
:
[
{
path
:
'
export-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/export-excel
'
),
name
:
'
ExportExcel
'
,
meta
:
{
title
:
'
Export Excel
'
}
},
{
path
:
'
export-selected-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/select-excel
'
),
name
:
'
SelectExcel
'
,
meta
:
{
title
:
'
Export Selected
'
}
},
{
path
:
'
export-merge-header
'
,
component
:
()
=>
import
(
'
@/views/excel/merge-header
'
),
name
:
'
MergeHeader
'
,
meta
:
{
title
:
'
Merge Header
'
}
},
{
path
:
'
upload-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/upload-excel
'
),
name
:
'
UploadExcel
'
,
meta
:
{
title
:
'
Upload Excel
'
}
}
]
},
{
path
:
'
/zip
'
,
component
:
Layout
,
redirect
:
'
/zip/download
'
,
alwaysShow
:
true
,
name
:
'
Zip
'
,
meta
:
{
title
:
'
Zip
'
,
icon
:
'
zip
'
},
children
:
[
{
path
:
'
download
'
,
component
:
()
=>
import
(
'
@/views/zip/index
'
),
name
:
'
ExportZip
'
,
meta
:
{
title
:
'
Export Zip
'
}
}
]
},
{
path
:
'
/pdf
'
,
component
:
Layout
,
redirect
:
'
/pdf/index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/pdf/index
'
),
name
:
'
PDF
'
,
meta
:
{
title
:
'
PDF
'
,
icon
:
'
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
'
,
meta
:
{
title
:
'
Theme
'
,
icon
:
'
theme
'
}
}
]
},
{
path
:
'
/clipboard
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/clipboard/index
'
),
name
:
'
ClipboardDemo
'
,
meta
:
{
title
:
'
Clipboard
'
,
icon
:
'
clipboard
'
}
}
]
},
{
path
:
'
external-link
'
,
component
:
Layout
,
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
}
]
const
createRouter
=
()
=>
new
Router
({
const
createRouter
=
()
=>
new
Router
({
// mode: 'history', // require service support
// mode: 'history', // require service support
...
...
admin-web/src/router/route_map.js
0 → 100644
View file @
afdf4eec
/*
路由映射表,由路由名映射确定。
需要大改菜单表
*/
/* 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
'
/**
* 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
noCache: true if set true, the page will no be cached(default is false)
affix: true if set true, the tag will affix in the tags-view
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
=
[
{
path
:
'
/redirect
'
,
component
:
Layout
,
hidden
:
true
,
children
:
[
{
path
:
'
/redirect/:path*
'
,
component
:
()
=>
import
(
'
@/views/redirect/index
'
)
}
]
},
{
path
:
'
/login
'
,
component
:
()
=>
import
(
'
@/views/login/index
'
),
hidden
:
true
},
{
path
:
'
/auth-redirect
'
,
component
:
()
=>
import
(
'
@/views/login/auth-redirect
'
),
hidden
:
true
},
{
path
:
'
/404
'
,
component
:
()
=>
import
(
'
@/views/error-page/404
'
),
hidden
:
true
},
{
path
:
'
/401
'
,
component
:
()
=>
import
(
'
@/views/error-page/401
'
),
hidden
:
true
},
{
path
:
'
/
'
,
component
:
Layout
,
redirect
:
'
/dashboard
'
,
children
:
[
{
path
:
'
dashboard
'
,
component
:
()
=>
import
(
'
@/views/dashboard/index
'
),
name
:
'
Dashboard
'
,
meta
:
{
title
:
'
Dashboard
'
,
icon
:
'
dashboard
'
,
affix
:
true
}
}
]
},
{
path
:
'
/documentation
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/documentation/index
'
),
name
:
'
Documentation
'
,
meta
:
{
title
:
'
Documentation
'
,
icon
:
'
documentation
'
,
affix
:
false
}
}
]
},
{
path
:
'
/guide
'
,
component
:
Layout
,
redirect
:
'
/guide/index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/guide/index
'
),
name
:
'
Guide
'
,
meta
:
{
title
:
'
Guide
'
,
icon
:
'
guide
'
,
noCache
:
true
}
}
]
},
{
path
:
'
/profile
'
,
component
:
Layout
,
redirect
:
'
/profile/index
'
,
hidden
:
true
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/profile/index
'
),
name
:
'
Profile
'
,
meta
:
{
title
:
'
Profile
'
,
icon
:
'
user
'
,
noCache
:
true
}
}
]
}
]
/**
* asyncRoutes
* the routes that need to be dynamically loaded based on user roles
*/
export
const
asyncRoutes
=
[
{
path
:
'
/permission
'
,
component
:
Layout
,
redirect
:
'
/permission/page
'
,
alwaysShow
:
true
,
// will always show the root menu
name
:
'
Permission
'
,
meta
:
{
title
:
'
Permission
'
,
icon
:
'
lock
'
,
roles
:
[
'
admin
'
,
'
editor
'
]
// you can set roles in root nav
},
children
:
[
{
path
:
'
page
'
,
component
:
()
=>
import
(
'
@/views/permission/page
'
),
name
:
'
PagePermission
'
,
meta
:
{
title
:
'
Page Permission
'
,
roles
:
[
'
admin
'
]
// or you can only set roles in sub nav
}
},
{
path
:
'
directive
'
,
component
:
()
=>
import
(
'
@/views/permission/directive
'
),
name
:
'
DirectivePermission
'
,
meta
:
{
title
:
'
Directive Permission
'
// if do not set roles, means: this page does not require permission
}
},
{
path
:
'
role
'
,
component
:
()
=>
import
(
'
@/views/permission/role
'
),
name
:
'
RolePermission
'
,
meta
:
{
title
:
'
Role Permission
'
,
roles
:
[
'
admin
'
]
}
}
]
},
{
path
:
'
/icon
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/icons/index
'
),
name
:
'
Icons
'
,
meta
:
{
title
:
'
Icons
'
,
icon
:
'
icon
'
,
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
'
,
meta
:
{
title
:
'
Example
'
,
icon
:
'
example
'
},
children
:
[
{
path
:
'
create
'
,
component
:
()
=>
import
(
'
@/views/example/create
'
),
name
:
'
CreateArticle
'
,
meta
:
{
title
:
'
Create Article
'
,
icon
:
'
edit
'
}
},
{
path
:
'
edit/:id(
\\
d+)
'
,
component
:
()
=>
import
(
'
@/views/example/edit
'
),
name
:
'
EditArticle
'
,
meta
:
{
title
:
'
Edit Article
'
,
noCache
:
true
,
activeMenu
:
'
/example/list
'
},
hidden
:
true
},
{
path
:
'
list
'
,
component
:
()
=>
import
(
'
@/views/example/list
'
),
name
:
'
ArticleList
'
,
meta
:
{
title
:
'
Article List
'
,
icon
:
'
list
'
}
}
]
},
{
path
:
'
/tab
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/tab/index
'
),
name
:
'
Tab
'
,
meta
:
{
title
:
'
Tab
'
,
icon
:
'
tab
'
}
}
]
},
{
path
:
'
/error
'
,
component
:
Layout
,
redirect
:
'
noRedirect
'
,
name
:
'
ErrorPages
'
,
meta
:
{
title
:
'
Error Pages
'
,
icon
:
'
404
'
},
children
:
[
{
path
:
'
401
'
,
component
:
()
=>
import
(
'
@/views/error-page/401
'
),
name
:
'
Page401
'
,
meta
:
{
title
:
'
401
'
,
noCache
:
true
}
},
{
path
:
'
404
'
,
component
:
()
=>
import
(
'
@/views/error-page/404
'
),
name
:
'
Page404
'
,
meta
:
{
title
:
'
404
'
,
noCache
:
true
}
}
]
},
{
path
:
'
/error-log
'
,
component
:
Layout
,
children
:
[
{
path
:
'
log
'
,
component
:
()
=>
import
(
'
@/views/error-log/index
'
),
name
:
'
ErrorLog
'
,
meta
:
{
title
:
'
Error Log
'
,
icon
:
'
bug
'
}
}
]
},
{
path
:
'
/excel
'
,
component
:
Layout
,
redirect
:
'
/excel/export-excel
'
,
name
:
'
Excel
'
,
meta
:
{
title
:
'
Excel
'
,
icon
:
'
excel
'
},
children
:
[
{
path
:
'
export-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/export-excel
'
),
name
:
'
ExportExcel
'
,
meta
:
{
title
:
'
Export Excel
'
}
},
{
path
:
'
export-selected-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/select-excel
'
),
name
:
'
SelectExcel
'
,
meta
:
{
title
:
'
Export Selected
'
}
},
{
path
:
'
export-merge-header
'
,
component
:
()
=>
import
(
'
@/views/excel/merge-header
'
),
name
:
'
MergeHeader
'
,
meta
:
{
title
:
'
Merge Header
'
}
},
{
path
:
'
upload-excel
'
,
component
:
()
=>
import
(
'
@/views/excel/upload-excel
'
),
name
:
'
UploadExcel
'
,
meta
:
{
title
:
'
Upload Excel
'
}
}
]
},
{
path
:
'
/zip
'
,
component
:
Layout
,
redirect
:
'
/zip/download
'
,
alwaysShow
:
true
,
name
:
'
Zip
'
,
meta
:
{
title
:
'
Zip
'
,
icon
:
'
zip
'
},
children
:
[
{
path
:
'
download
'
,
component
:
()
=>
import
(
'
@/views/zip/index
'
),
name
:
'
ExportZip
'
,
meta
:
{
title
:
'
Export Zip
'
}
}
]
},
{
path
:
'
/pdf
'
,
component
:
Layout
,
redirect
:
'
/pdf/index
'
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/pdf/index
'
),
name
:
'
PDF
'
,
meta
:
{
title
:
'
PDF
'
,
icon
:
'
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
'
,
meta
:
{
title
:
'
Theme
'
,
icon
:
'
theme
'
}
}
]
},
{
path
:
'
/clipboard
'
,
component
:
Layout
,
children
:
[
{
path
:
'
index
'
,
component
:
()
=>
import
(
'
@/views/clipboard/index
'
),
name
:
'
ClipboardDemo
'
,
meta
:
{
title
:
'
Clipboard
'
,
icon
:
'
clipboard
'
}
}
]
},
{
path
:
'
external-link
'
,
component
:
Layout
,
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
}
]
admin-web/src/store/modules/permission.js
View file @
afdf4eec
import
{
asyncRoutes
,
constantRoutes
}
from
'
@/router
'
import
{
constantRoutes
}
from
'
@/router
'
import
{
getRoutes
}
from
'
@/api/role
'
/**
/**
* Use meta.role to determine if the current user has permission
* Use meta.role to determine if the current user has permission
...
@@ -48,16 +49,21 @@ const mutations = {
...
@@ -48,16 +49,21 @@ const mutations = {
const
actions
=
{
const
actions
=
{
generateRoutes
({
commit
},
roles
)
{
generateRoutes
({
commit
},
roles
)
{
return
new
Promise
(
resolve
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
let
accessedRoutes
getRoutes
()
if
(
roles
.
includes
(
'
admin
'
))
{
.
then
(
response
=>
{
accessedRoutes
=
asyncRoutes
||
[]
let
accessedRoutes
,
}
else
{
asyncRoutes
=
response
.
data
accessedRoutes
=
filterAsyncRoutes
(
asyncRoutes
,
roles
)
accessedRoutes
=
filterAsyncRoutes
(
asyncRoutes
,
roles
)
}
debugger
commit
(
'
SET_ROUTES
'
,
accessedRoutes
)
commit
(
'
SET_ROUTES
'
,
accessedRoutes
)
resolve
(
accessedRoutes
)
resolve
(
accessedRoutes
)
})
})
.
catch
(
error
=>
{
reject
(
error
)
})
})
}
}
}
}
...
...
admin-web/src/store/modules/user.js
View file @
afdf4eec
...
@@ -33,12 +33,14 @@ const actions = {
...
@@ -33,12 +33,14 @@ const actions = {
login
({
commit
},
userInfo
)
{
login
({
commit
},
userInfo
)
{
const
{
username
,
password
}
=
userInfo
const
{
username
,
password
}
=
userInfo
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
login
({
username
:
username
.
trim
(),
password
:
password
}).
then
(
response
=>
{
login
({
username
:
username
.
trim
(),
password
:
password
})
.
then
(
response
=>
{
const
{
data
}
=
response
const
{
data
}
=
response
commit
(
'
SET_TOKEN
'
,
data
.
token
)
commit
(
'
SET_TOKEN
'
,
data
.
token
)
setToken
(
data
.
token
)
setToken
(
data
.
token
)
resolve
()
resolve
()
}).
catch
(
error
=>
{
})
.
catch
(
error
=>
{
reject
(
error
)
reject
(
error
)
})
})
})
})
...
@@ -47,7 +49,8 @@ const actions = {
...
@@ -47,7 +49,8 @@ const actions = {
// get user info
// get user info
getInfo
({
commit
,
state
})
{
getInfo
({
commit
,
state
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getInfo
(
state
.
token
).
then
(
response
=>
{
getInfo
(
state
.
token
)
.
then
(
response
=>
{
const
{
data
}
=
response
const
{
data
}
=
response
if
(
!
data
)
{
if
(
!
data
)
{
...
@@ -66,7 +69,8 @@ const actions = {
...
@@ -66,7 +69,8 @@ const actions = {
commit
(
'
SET_AVATAR
'
,
avatar
)
commit
(
'
SET_AVATAR
'
,
avatar
)
commit
(
'
SET_INTRODUCTION
'
,
introduction
)
commit
(
'
SET_INTRODUCTION
'
,
introduction
)
resolve
(
data
)
resolve
(
data
)
}).
catch
(
error
=>
{
})
.
catch
(
error
=>
{
reject
(
error
)
reject
(
error
)
})
})
})
})
...
@@ -75,13 +79,15 @@ const actions = {
...
@@ -75,13 +79,15 @@ const actions = {
// user logout
// user logout
logout
({
commit
,
state
})
{
logout
({
commit
,
state
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
logout
(
state
.
token
).
then
(()
=>
{
logout
(
state
.
token
)
.
then
(()
=>
{
commit
(
'
SET_TOKEN
'
,
''
)
commit
(
'
SET_TOKEN
'
,
''
)
commit
(
'
SET_ROLES
'
,
[])
commit
(
'
SET_ROLES
'
,
[])
removeToken
()
removeToken
()
resetRouter
()
resetRouter
()
resolve
()
resolve
()
}).
catch
(
error
=>
{
})
.
catch
(
error
=>
{
reject
(
error
)
reject
(
error
)
})
})
})
})
...
@@ -110,7 +116,9 @@ const actions = {
...
@@ -110,7 +116,9 @@ const actions = {
resetRouter
()
resetRouter
()
// generate accessible routes map based on roles
// generate accessible routes map based on roles
const
accessRoutes
=
await
dispatch
(
'
permission/generateRoutes
'
,
roles
,
{
root
:
true
})
const
accessRoutes
=
await
dispatch
(
'
permission/generateRoutes
'
,
roles
,
{
root
:
true
})
// dynamically add accessible routes
// dynamically add accessible routes
router
.
addRoutes
(
accessRoutes
)
router
.
addRoutes
(
accessRoutes
)
...
...
admin-web/src/utils/request.js
View file @
afdf4eec
...
@@ -3,9 +3,6 @@ import { MessageBox, Message } from 'element-ui'
...
@@ -3,9 +3,6 @@ import { MessageBox, Message } from 'element-ui'
import
store
from
'
@/store
'
import
store
from
'
@/store
'
import
{
getToken
}
from
'
@/utils/auth
'
import
{
getToken
}
from
'
@/utils/auth
'
const
axiosUrl
=
process
.
env
.
NODE_ENV
===
'
development
'
?
'
localhost:8080
'
:
'
localhost
'
// request host
// create an axios instance
// create an axios instance
const
service
=
axios
.
create
({
const
service
=
axios
.
create
({
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// url = base url + request url
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// url = base url + request url
...
...
admin-web/src/views/login/index.vue
View file @
afdf4eec
<
template
>
<
template
>
<div
class=
"login-container"
>
<div
class=
"login-container"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
label-position=
"left"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
label-position=
"left"
>
<div
class=
"title-container"
>
<div
class=
"title-container"
>
<h3
class=
"title"
>
用户登录
</h3>
<h3
class=
"title"
>
用户登录
</h3>
</div>
</div>
...
@@ -21,7 +27,12 @@
...
@@ -21,7 +27,12 @@
/>
/>
</el-form-item>
</el-form-item>
<el-tooltip
v-model=
"capsTooltip"
content=
"Caps lock is On"
placement=
"right"
manual
>
<el-tooltip
v-model=
"capsTooltip"
content=
"Caps lock is On"
placement=
"right"
manual
>
<el-form-item
prop=
"password"
>
<el-form-item
prop=
"password"
>
<span
class=
"svg-container"
>
<span
class=
"svg-container"
>
<svg-icon
icon-class=
"password"
/>
<svg-icon
icon-class=
"password"
/>
...
@@ -40,18 +51,31 @@
...
@@ -40,18 +51,31 @@
@
keyup.enter.native=
"handleLogin"
@
keyup.enter.native=
"handleLogin"
/>
/>
<span
class=
"show-pwd"
@
click=
"showPwd"
>
<span
class=
"show-pwd"
@
click=
"showPwd"
>
<svg-icon
:icon-class=
"passwordType === 'password' ? 'eye' : 'eye-open'"
/>
<svg-icon
:icon-class=
"passwordType === 'password' ? 'eye' : 'eye-open'"
/>
</span>
</span>
</el-form-item>
</el-form-item>
</el-tooltip>
</el-tooltip>
<el-button
:loading=
"loading"
type=
"primary"
style=
"width:100%;margin-bottom:30px;"
@
click.native.prevent=
"handleLogin"
>
Login
</el-button>
<el-button
:loading=
"loading"
type=
"primary"
style=
"width:100%;margin-bottom:30px;"
@
click.native.prevent=
"handleLogin"
>
Login
</el-button>
<div
style=
"position:relative"
>
<div
style=
"position:relative"
>
<div
class=
"tips"
>
<div
class=
"tips"
>
<span
/>
<span
/>
</div>
</div>
<el-button
class=
"thirdparty-button"
type=
"primary"
@
click=
"showDialog=true"
>
<el-button
class=
"thirdparty-button"
type=
"primary"
@
click=
"showDialog = true"
>
Or connect with
Or connect with
</el-button>
</el-button>
</div>
</div>
...
@@ -59,9 +83,9 @@
...
@@ -59,9 +83,9 @@
<el-dialog
title=
"Or connect with"
:visible.sync=
"showDialog"
>
<el-dialog
title=
"Or connect with"
:visible.sync=
"showDialog"
>
本地环境无法模拟,请合并到线上环境再测试!!
本地环境无法模拟,请合并到线上环境再测试!!
<br>
<br
/
>
<br>
<br
/
>
<br>
<br
/
>
<social-sign
/>
<social-sign
/>
</el-dialog>
</el-dialog>
</div>
</div>
...
@@ -95,8 +119,12 @@ export default {
...
@@ -95,8 +119,12 @@ export default {
password
:
'
111111
'
password
:
'
111111
'
},
},
loginRules
:
{
loginRules
:
{
username
:
[{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validateUsername
}],
username
:
[
password
:
[{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validatePassword
}]
{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validateUsername
}
],
password
:
[
{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validatePassword
}
]
},
},
passwordType
:
'
password
'
,
passwordType
:
'
password
'
,
capsTooltip
:
false
,
capsTooltip
:
false
,
...
@@ -134,7 +162,10 @@ export default {
...
@@ -134,7 +162,10 @@ export default {
methods
:
{
methods
:
{
checkCapslock
({
shiftKey
,
key
}
=
{})
{
checkCapslock
({
shiftKey
,
key
}
=
{})
{
if
(
key
&&
key
.
length
===
1
)
{
if
(
key
&&
key
.
length
===
1
)
{
if
(
shiftKey
&&
(
key
>=
'
a
'
&&
key
<=
'
z
'
)
||
!
shiftKey
&&
(
key
>=
'
A
'
&&
key
<=
'
Z
'
))
{
if
(
(
shiftKey
&&
(
key
>=
'
a
'
&&
key
<=
'
z
'
))
||
(
!
shiftKey
&&
(
key
>=
'
A
'
&&
key
<=
'
Z
'
))
)
{
this
.
capsTooltip
=
true
this
.
capsTooltip
=
true
}
else
{
}
else
{
this
.
capsTooltip
=
false
this
.
capsTooltip
=
false
...
@@ -158,9 +189,13 @@ export default {
...
@@ -158,9 +189,13 @@ export default {
this
.
$refs
.
loginForm
.
validate
(
valid
=>
{
this
.
$refs
.
loginForm
.
validate
(
valid
=>
{
if
(
valid
)
{
if
(
valid
)
{
this
.
loading
=
true
this
.
loading
=
true
this
.
$store
.
dispatch
(
'
user/login
'
,
this
.
loginForm
)
this
.
$store
.
dispatch
(
'
user/login
'
,
this
.
loginForm
)
.
then
(()
=>
{
.
then
(()
=>
{
this
.
$router
.
push
({
path
:
this
.
redirect
||
'
/
'
,
query
:
this
.
otherQuery
})
this
.
$router
.
push
({
path
:
this
.
redirect
||
'
/
'
,
query
:
this
.
otherQuery
})
this
.
loading
=
false
this
.
loading
=
false
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
...
@@ -206,8 +241,8 @@ export default {
...
@@ -206,8 +241,8 @@ export default {
/* 修复input 背景不协调 和光标变色 */
/* 修复input 背景不协调 和光标变色 */
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
$bg
:
#283443
;
$bg
:
#283443
;
$light_gray
:
#fff
;
$light_gray
:
#fff
;
$cursor
:
#fff
;
$cursor
:
#fff
;
@supports
(
-webkit-mask
:
none
)
and
(
not
(
cater-color
:
$
cursor
))
{
@supports
(
-webkit-mask
:
none
)
and
(
not
(
cater-color
:
$
cursor
))
{
...
@@ -250,9 +285,9 @@ $cursor: #fff;
...
@@ -250,9 +285,9 @@ $cursor: #fff;
</
style
>
</
style
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
$bg
:
#2d3a4b
;
$bg
:
#2d3a4b
;
$dark_gray
:
#889aa4
;
$dark_gray
:
#889aa4
;
$light_gray
:
#eee
;
$light_gray
:
#eee
;
.login-container
{
.login-container
{
min-height
:
100%
;
min-height
:
100%
;
...
...
admin-web/vue.config.js
View file @
afdf4eec
...
@@ -31,7 +31,7 @@ module.exports = {
...
@@ -31,7 +31,7 @@ module.exports = {
productionSourceMap
:
false
,
productionSourceMap
:
false
,
devServer
:
{
devServer
:
{
port
:
port
,
port
:
port
,
open
:
tru
e
,
open
:
fals
e
,
overlay
:
{
overlay
:
{
warnings
:
false
,
warnings
:
false
,
errors
:
true
errors
:
true
...
@@ -40,7 +40,7 @@ module.exports = {
...
@@ -40,7 +40,7 @@ module.exports = {
// change xxx-api/login => mock/login
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
// detail: https://cli.vuejs.org/config/#devserver-proxy
[
process
.
env
.
VUE_APP_BASE_API
]:
{
[
process
.
env
.
VUE_APP_BASE_API
]:
{
target
:
`http://127.0.0.1:
${
port
}
/mock`
,
target
:
process
.
env
.
VUE_APP_SERVER_HOST
,
changeOrigin
:
true
,
changeOrigin
:
true
,
pathRewrite
:
{
pathRewrite
:
{
[
'
^
'
+
process
.
env
.
VUE_APP_BASE_API
]:
''
[
'
^
'
+
process
.
env
.
VUE_APP_BASE_API
]:
''
...
...
pom.xml
View file @
afdf4eec
...
@@ -47,20 +47,6 @@
...
@@ -47,20 +47,6 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-quartz
</artifactId>
<artifactId>
spring-boot-starter-quartz
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<exclusions>
<exclusion>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-logging
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-log4j2
</artifactId>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
<plugins>
<plugins>
...
...
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