mirror of
https://github.com/iczer/vue-antd-admin
synced 2025-04-06 04:00:06 +08:00
add nprogress
This commit is contained in:
parent
6a0ef90d5c
commit
e414f89e27
@ -29,7 +29,8 @@
|
|||||||
"vue-i18n": "^8.18.2",
|
"vue-i18n": "^8.18.2",
|
||||||
"vue-router": "^3.3.4",
|
"vue-router": "^3.3.4",
|
||||||
"vuedraggable": "^2.23.2",
|
"vuedraggable": "^2.23.2",
|
||||||
"vuex": "^3.4.0"
|
"vuex": "^3.4.0",
|
||||||
|
"nprogress": "^0.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@ant-design/colors": "^4.0.1",
|
"@ant-design/colors": "^4.0.1",
|
||||||
|
@ -1,7 +1,21 @@
|
|||||||
import {hasAuthority} from '@/utils/authority-utils'
|
import {hasAuthority} from '@/utils/authority-utils'
|
||||||
import {loginIgnore} from '@/router/index'
|
import {loginIgnore} from '@/router/index'
|
||||||
import {checkAuthorization} from '@/utils/request'
|
import {checkAuthorization} from '@/utils/request'
|
||||||
|
import NProgress from 'nprogress'
|
||||||
|
|
||||||
|
NProgress.configure({ showSpinner: false })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前置守卫
|
||||||
|
* @param to
|
||||||
|
* @param form
|
||||||
|
* @param next
|
||||||
|
*/
|
||||||
|
const beforeGuard = (to, from, next) => {
|
||||||
|
// start progress bar
|
||||||
|
NProgress.start()
|
||||||
|
next()
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 登录守卫
|
* 登录守卫
|
||||||
* @param to
|
* @param to
|
||||||
@ -14,6 +28,7 @@ const loginGuard = (to, from, next, options) => {
|
|||||||
if (!loginIgnore.includes(to) && !checkAuthorization()) {
|
if (!loginIgnore.includes(to) && !checkAuthorization()) {
|
||||||
message.warning('登录已失效,请重新登录')
|
message.warning('登录已失效,请重新登录')
|
||||||
next({path: '/login'})
|
next({path: '/login'})
|
||||||
|
NProgress.done()
|
||||||
} else {
|
} else {
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
@ -33,6 +48,7 @@ const authorityGuard = (to, from, next, options) => {
|
|||||||
if (!hasAuthority(to, permissions, roles)) {
|
if (!hasAuthority(to, permissions, roles)) {
|
||||||
message.warning(`对不起,您无权访问页面: ${to.fullPath},请联系管理员`)
|
message.warning(`对不起,您无权访问页面: ${to.fullPath},请联系管理员`)
|
||||||
next({path: '/403'})
|
next({path: '/403'})
|
||||||
|
NProgress.done()
|
||||||
} else {
|
} else {
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
@ -61,7 +77,18 @@ const redirectGuard = (to, from, next, options) => {
|
|||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
/**
|
||||||
beforeEach: [loginGuard, authorityGuard, redirectGuard],
|
* 后置守卫
|
||||||
afterEach: []
|
* @param to
|
||||||
|
* @param form
|
||||||
|
* @param options
|
||||||
|
*/
|
||||||
|
const afterGuard = () => {
|
||||||
|
// finish progress bar
|
||||||
|
NProgress.done()
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
beforeEach: [beforeGuard, loginGuard, authorityGuard, redirectGuard],
|
||||||
|
afterEach: [afterGuard]
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
@import "color";
|
@import "color";
|
||||||
@import "style";
|
@import "style";
|
||||||
|
@import "nprogress";
|
||||||
|
76
src/theme/default/nprogress.less
Normal file
76
src/theme/default/nprogress.less
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
@import '~ant-design-vue/lib/style/themes/default';
|
||||||
|
|
||||||
|
/* Make clicks pass-through */
|
||||||
|
#nprogress {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nprogress .bar {
|
||||||
|
background: @primary-color;
|
||||||
|
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1031;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
height: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fancy blur effect */
|
||||||
|
#nprogress .peg {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
width: 100px;
|
||||||
|
height: 100%;
|
||||||
|
box-shadow: 0 0 10px @primary-color, 0 0 5px @primary-color;
|
||||||
|
opacity: 1.0;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||||
|
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||||
|
transform: rotate(3deg) translate(0px, -4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove these to get rid of the spinner */
|
||||||
|
#nprogress .spinner {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1031;
|
||||||
|
top: 15px;
|
||||||
|
right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nprogress .spinner-icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
border: solid 2px transparent;
|
||||||
|
border-top-color: @primary-color;
|
||||||
|
border-left-color: @primary-color;
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
-webkit-animation: nprogress-spinner 400ms linear infinite;
|
||||||
|
animation: nprogress-spinner 400ms linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nprogress-custom-parent {
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nprogress-custom-parent #nprogress .spinner,
|
||||||
|
.nprogress-custom-parent #nprogress .bar {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes nprogress-spinner {
|
||||||
|
0% { -webkit-transform: rotate(0deg); }
|
||||||
|
100% { -webkit-transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
@keyframes nprogress-spinner {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user