router.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import {
  2. RouterMount,
  3. createRouter,
  4. runtimeQuit
  5. } from 'uni-simple-router';
  6. //配置白名单
  7. let WHiTE_LIST = ['login', 'my-camera', 'auth', 'test']
  8. //员工页面,只可以员工权限的用户访问
  9. let STAFF = ['auth', 'editPhone']
  10. //企业页面,只可以企业权限的用户访问
  11. let ENTERPRISE = ['staffAuditList',
  12. 'staffAuditDetail',
  13. 'smoke-alarm',
  14. 'gas-alarm',
  15. 'fire-hydrant',
  16. 'changePass'
  17. ]
  18. let first = null;
  19. const router = createRouter({
  20. platform: process.env.VUE_APP_PLATFORM,
  21. APP: {
  22. animation: {
  23. animationType: 'slide-in-top',
  24. animationDuration: 300
  25. }
  26. },
  27. routerBeforeEach: (to, from, next) => {
  28. //如果是白名单的页面,直接放行
  29. if (WHiTE_LIST.includes(to.name)) {
  30. next();
  31. return
  32. }
  33. //如果是从登陆页进入的认证页,放行;若是从其他页面进入的认证页,则需要验证是否登陆验证
  34. if (from.name == 'login' && to.name == 'auth') {
  35. next()
  36. return
  37. }
  38. //拦截类型,方便提示
  39. //0:未登陆认证拦截
  40. //1:允许通行
  41. //2:权限不足拦截(员工类型访问企业类型的页面)
  42. //3: 权限不足拦截(企业类型访问员工类型的页面)
  43. let flag = 0
  44. //登陆类型
  45. let loginType = uni.getStorageSync("loginType")
  46. if (loginType) {
  47. if (loginType == 'staff' && ENTERPRISE.includes(to.name)) {
  48. //员工类型访问企业类型的页面,拦截
  49. flag = 2
  50. } else if (loginType == 'enterprise' && STAFF.includes(to.name)) {
  51. //企业类型访问员工类型的页面,拦截
  52. flag = 3
  53. } else {
  54. //允许通行
  55. flag = 1
  56. }
  57. } else {
  58. flag = 0
  59. }
  60. switch (flag) {
  61. case 0: //未登录认证
  62. next({
  63. name: 'login',
  64. params: {fullPath: to.fullPath},
  65. NAVTYPE: 'replaceAll'
  66. });
  67. break;
  68. case 1://允许通行
  69. next()
  70. break;
  71. case 2: //员工类型访问企业类型的页面
  72. uni.showModal({
  73. title: '提示',
  74. content: '权限不足,员工类型无法访问企业类型的页面',
  75. showCancel: false,
  76. success: (res) => {
  77. next({
  78. name: 'index',
  79. NAVTYPE: 'pushTab'
  80. });
  81. }
  82. });
  83. break;
  84. case 3://企业类型访问员工类型的页面
  85. uni.showModal({
  86. title: '提示',
  87. content: '权限不足,企业类型无法访问员工类型的页面',
  88. showCancel: false,
  89. success: (res) => {
  90. next({
  91. name: 'index',
  92. NAVTYPE: 'pushTab'
  93. });
  94. }
  95. });
  96. break;
  97. default:
  98. break;
  99. }
  100. },
  101. routerAfterEach: (to, from) => {
  102. console.log('--------routerAfterEach----')
  103. },
  104. routerErrorEach: ({type, msg}) => {
  105. console.log({type, msg})
  106. // #ifdef APP-PLUS
  107. if (type === 3) {
  108. router.$lockStatus = false;
  109. runtimeQuit();
  110. }
  111. // #endif
  112. },
  113. routes: [
  114. ...ROUTES,
  115. {
  116. path: '*',
  117. redirect: (to) => {
  118. return {name: '404'}
  119. }
  120. },
  121. ]
  122. });
  123. let count = 0;
  124. router.beforeEach((to, from, next) => {
  125. console.log("from:", from)
  126. console.log("to:", to)
  127. // if(count==0){
  128. // next({
  129. // path:'/pages/login/login',
  130. // NAVTYPE:'replaceAll'
  131. // })
  132. // }else{
  133. // next();
  134. // }
  135. next();
  136. count++;
  137. });
  138. router.afterEach((to, from, next) => {
  139. console.log('afterEach---跳转结束')
  140. });
  141. export {
  142. router,
  143. RouterMount
  144. }