Commit d888a81a6c7334c3b4beab7d440e3f0ba72a5ff6

Authored by 王富生
1 parent 9287779a

提交权限控制

src/permission.js
1 import router from './router' 1 import router from './router'
2 import store from './store' 2 import store from './store'
3 -import { Message } from 'element-ui' 3 +import {Message} from 'element-ui'
4 import NProgress from 'nprogress' // progress bar 4 import NProgress from 'nprogress' // progress bar
5 import 'nprogress/nprogress.css' // progress bar style 5 import 'nprogress/nprogress.css' // progress bar style
6 -import { getToken } from '@/utils/auth' // get token from cookie 6 +import {getToken} from '@/utils/auth' // get token from cookie
7 import getPageTitle from '@/utils/get-page-title' 7 import getPageTitle from '@/utils/get-page-title'
8 8
9 -NProgress.configure({ showSpinner: false }) // NProgress Configuration 9 +NProgress.configure({showSpinner: false}) // NProgress Configuration
10 10
11 const whiteList = ['/login'] // no redirect whitelist 11 const whiteList = ['/login'] // no redirect whitelist
12 12
13 -router.beforeEach(async(to, from, next) => { 13 +router.beforeEach(async (to, from, next) => {
  14 + debugger
14 // start progress bar 15 // start progress bar
15 NProgress.start() 16 NProgress.start()
  17 + if (to.path.indexOf("service") == -1) {
  18 + next()
  19 + NProgress.done()
  20 + } else {
  21 + // set page title
  22 + document.title = getPageTitle(to.meta.title)
16 23
17 - // set page title  
18 - document.title = getPageTitle(to.meta.title)  
19 -  
20 - // determine whether the user has logged in  
21 - const hasToken = getToken() 24 + // determine whether the user has logged in
  25 + const hasToken = getToken()
22 26
23 - if (hasToken) {  
24 - if (to.path === '/login') {  
25 - // if is logged in, redirect to the home page  
26 - next({ path: '/' })  
27 - NProgress.done()  
28 - } else {  
29 - const hasGetUserInfo = store.getters.name  
30 - if (hasGetUserInfo) {  
31 - next() 27 + if (hasToken) {
  28 + if (to.path === '/login') {
  29 + // if is logged in, redirect to the home page
  30 + next({path: '/'})
  31 + NProgress.done()
32 } else { 32 } else {
33 - try {  
34 - // get user info  
35 - await store.dispatch('user/getInfo')  
36 - 33 + const hasGetUserInfo = store.getters.name
  34 + if (hasGetUserInfo) {
37 next() 35 next()
38 - } catch (error) {  
39 - // remove token and go to login page to re-login  
40 - await store.dispatch('user/resetToken')  
41 - Message.error(error || 'Has Error')  
42 - next(`/login?redirect=${to.path}`)  
43 - NProgress.done() 36 + } else {
  37 + try {
  38 + // get user info
  39 + await store.dispatch('user/getInfo')
  40 +
  41 + next()
  42 + } catch (error) {
  43 + // remove token and go to login page to re-login
  44 + await store.dispatch('user/resetToken')
  45 + Message.error(error || 'Has Error')
  46 + next(`/login?redirect=${to.path}`)
  47 + NProgress.done()
  48 + }
44 } 49 }
45 } 50 }
46 - }  
47 - } else {  
48 - /* has no token*/  
49 -  
50 - if (whiteList.indexOf(to.path) !== -1) {  
51 - // in the free login whitelist, go directly  
52 - next()  
53 } else { 51 } else {
54 - // other pages that do not have permission to access are redirected to the login page.  
55 - next(`/login?redirect=${to.path}`)  
56 - NProgress.done() 52 + /* has no token*/
  53 +
  54 + if (whiteList.indexOf(to.path) !== -1) {
  55 + // in the free login whitelist, go directly
  56 + next()
  57 + } else {
  58 + // other pages that do not have permission to access are redirected to the login page.
  59 + next(`/login?redirect=${to.path}`)
  60 + NProgress.done()
  61 + }
57 } 62 }
58 } 63 }
59 }) 64 })
src/router/index.js
@@ -55,7 +55,7 @@ export const constantRoutes = [ @@ -55,7 +55,7 @@ export const constantRoutes = [
55 }, 55 },
56 { 56 {
57 path: '/service', 57 path: '/service',
58 - redirect:'/dashboard', 58 + redirect:'/service/dashboard',
59 component: () => import('@/views/service'), 59 component: () => import('@/views/service'),
60 meta: { 60 meta: {
61 title: '停车服务' 61 title: '停车服务'
@@ -63,47 +63,47 @@ export const constantRoutes = [ @@ -63,47 +63,47 @@ export const constantRoutes = [
63 }, 63 },
64 children:[ 64 children:[
65 { 65 {
66 - path: '/dashboard', 66 + path: '/service/dashboard',
67 component: () => import('@/views/dashboard/index'), 67 component: () => import('@/views/dashboard/index'),
68 meta: { title: '服务首页', icon: 'dashboard' } 68 meta: { title: '服务首页', icon: 'dashboard' }
69 }, 69 },
70 70
71 { 71 {
72 - path: '/account', 72 + path: '/service/account',
73 component: () => import('@/views/account/index'), 73 component: () => import('@/views/account/index'),
74 meta: { title: '我的账户',icon: 'money' } 74 meta: { title: '我的账户',icon: 'money' }
75 75
76 }, 76 },
77 { 77 {
78 - path: '/cardticket', 78 + path: '/service/cardticket',
79 component: () => import('@/views/cardticket/index'), 79 component: () => import('@/views/cardticket/index'),
80 meta: { title: '我的卡券', icon: 'card' } 80 meta: { title: '我的卡券', icon: 'card' }
81 }, 81 },
82 82
83 { 83 {
84 - path: '/order', 84 + path: '/service/order',
85 component: () => import('@/views/order/index'), 85 component: () => import('@/views/order/index'),
86 meta: { title: '我的订单', icon: 'form' } 86 meta: { title: '我的订单', icon: 'form' }
87 }, 87 },
88 { 88 {
89 - path: '/payback', 89 + path: '/service/payback',
90 component: () => import('@/views/payback/index'), 90 component: () => import('@/views/payback/index'),
91 meta: { title: '欠费补缴', icon: 'nested' } 91 meta: { title: '欠费补缴', icon: 'nested' }
92 }, 92 },
93 93
94 { 94 {
95 - path: '/mycar', 95 + path: '/service/mycar',
96 component: () => import('@/views/mycar/index'), 96 component: () => import('@/views/mycar/index'),
97 meta: { title: '我的车辆', icon: 'car' } 97 meta: { title: '我的车辆', icon: 'car' }
98 98
99 }, 99 },
100 { 100 {
101 - path: '/information', 101 + path: '/service/information',
102 component: () => import('@/views/information/index'), 102 component: () => import('@/views/information/index'),
103 meta: { title: '个人资料' ,icon: 'people'} 103 meta: { title: '个人资料' ,icon: 'people'}
104 }, 104 },
105 { 105 {
106 - path: '/myevaluate', 106 + path: '/service/myevaluate',
107 component: () => import('@/views/myevaluate/index'), 107 component: () => import('@/views/myevaluate/index'),
108 meta: { title: '我的评价',icon: 'skill' } 108 meta: { title: '我的评价',icon: 'skill' }
109 } 109 }
src/views/login/index.vue
@@ -115,6 +115,11 @@ export default { @@ -115,6 +115,11 @@ export default {
115 type: 'success', 115 type: 'success',
116 message: '验证码发送成功!' 116 message: '验证码发送成功!'
117 }); 117 });
  118 + }else{
  119 + this.$message({
  120 + type: 'error',
  121 + message: data.msg
  122 + });
118 } 123 }
119 }); 124 });
120 //this.validateBtn(); 125 //this.validateBtn();
src/views/service.vue
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 background-color="#545c64" 12 background-color="#545c64"
13 text-color="#fff" 13 text-color="#fff"
14 active-text-color="#409eff" router> 14 active-text-color="#409eff" router>
15 - <el-menu-item index="/dashboard" class="is-active"> 15 + <el-menu-item index="/service/dashboard" class="is-active">
16 <i class="el-icon-menu "></i> 16 <i class="el-icon-menu "></i>
17 <span slot="title">服务首页</span> 17 <span slot="title">服务首页</span>
18 </el-menu-item> 18 </el-menu-item>
@@ -21,18 +21,18 @@ @@ -21,18 +21,18 @@
21 <i class="el-icon-bank-card"></i> 21 <i class="el-icon-bank-card"></i>
22 <span>我的钱包</span> 22 <span>我的钱包</span>
23 </template> 23 </template>
24 - <el-menu-item index="/account">我的账户</el-menu-item>  
25 - <el-menu-item index="/cardticket">我的卡券</el-menu-item> 24 + <el-menu-item index="/service/account">我的账户</el-menu-item>
  25 + <el-menu-item index="/service/cardticket">我的卡券</el-menu-item>
26 </el-submenu> 26 </el-submenu>
27 - <el-menu-item index="/order"> 27 + <el-menu-item index="/service/order">
28 <i class="el-icon-tickets"></i> 28 <i class="el-icon-tickets"></i>
29 <span slot="title">我的订单</span> 29 <span slot="title">我的订单</span>
30 </el-menu-item> 30 </el-menu-item>
31 - <el-menu-item index="/payback"> 31 + <el-menu-item index="/service/payback">
32 <i class="el-icon-finished"></i> 32 <i class="el-icon-finished"></i>
33 <span slot="title">欠费补缴</span> 33 <span slot="title">欠费补缴</span>
34 </el-menu-item> 34 </el-menu-item>
35 - <el-menu-item index="/mycar"> 35 + <el-menu-item index="/service/mycar">
36 <i class="el-icon-truck"></i> 36 <i class="el-icon-truck"></i>
37 <span slot="title">我的车辆</span> 37 <span slot="title">我的车辆</span>
38 </el-menu-item> 38 </el-menu-item>
@@ -41,8 +41,8 @@ @@ -41,8 +41,8 @@
41 <i class="el-icon-user-solid"></i> 41 <i class="el-icon-user-solid"></i>
42 <span>个人中心</span> 42 <span>个人中心</span>
43 </template> 43 </template>
44 - <el-menu-item index="/information">个人资料</el-menu-item>  
45 - <el-menu-item index="/myevaluate">我的评价</el-menu-item> 44 + <el-menu-item index="/service/information">个人资料</el-menu-item>
  45 + <el-menu-item index="/service/myevaluate">我的评价</el-menu-item>
46 </el-submenu> 46 </el-submenu>
47 </el-menu> 47 </el-menu>
48 </el-aside> 48 </el-aside>