router.js 3.1 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. }