| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- import {
- RouterMount,
- createRouter,
- runtimeQuit
- } from 'uni-simple-router';
- //配置白名单
- let WHiTE_LIST = ['login', 'my-camera', 'auth', 'test']
- //员工页面,只可以员工权限的用户访问
- let STAFF = ['auth', 'editPhone']
- //企业页面,只可以企业权限的用户访问
- let ENTERPRISE = ['staffAuditList',
- 'staffAuditDetail',
- 'smoke-alarm',
- 'gas-alarm',
- 'fire-hydrant',
- 'changePass'
- ]
- let first = null;
- const router = createRouter({
- platform: process.env.VUE_APP_PLATFORM,
- APP: {
- animation: {
- animationType: 'slide-in-top',
- animationDuration: 300
- }
- },
- routerBeforeEach: (to, from, next) => {
- //如果是白名单的页面,直接放行
- if (WHiTE_LIST.includes(to.name)) {
- next();
- return
- }
- //如果是从登陆页进入的认证页,放行;若是从其他页面进入的认证页,则需要验证是否登陆验证
- if (from.name == 'login' && to.name == 'auth') {
- next()
- return
- }
- //拦截类型,方便提示
- //0:未登陆认证拦截
- //1:允许通行
- //2:权限不足拦截(员工类型访问企业类型的页面)
- //3: 权限不足拦截(企业类型访问员工类型的页面)
- let flag = 0
- //登陆类型
- let loginType = uni.getStorageSync("loginType")
- if (loginType) {
- if (loginType == 'staff' && ENTERPRISE.includes(to.name)) {
- //员工类型访问企业类型的页面,拦截
- flag = 2
- } else if (loginType == 'enterprise' && STAFF.includes(to.name)) {
- //企业类型访问员工类型的页面,拦截
- flag = 3
- } else {
- //允许通行
- flag = 1
- }
- } else {
- flag = 0
- }
- switch (flag) {
- case 0: //未登录认证
- next({
- name: 'login',
- params: {fullPath: to.fullPath},
- NAVTYPE: 'replaceAll'
- });
- break;
- case 1://允许通行
- next()
- break;
- case 2: //员工类型访问企业类型的页面
- uni.showModal({
- title: '提示',
- content: '权限不足,员工类型无法访问企业类型的页面',
- showCancel: false,
- success: (res) => {
- next({
- name: 'index',
- NAVTYPE: 'pushTab'
- });
- }
- });
- break;
- case 3://企业类型访问员工类型的页面
- uni.showModal({
- title: '提示',
- content: '权限不足,企业类型无法访问员工类型的页面',
- showCancel: false,
- success: (res) => {
- next({
- name: 'index',
- NAVTYPE: 'pushTab'
- });
- }
- });
- break;
- default:
- break;
- }
- },
- routerAfterEach: (to, from) => {
- console.log('--------routerAfterEach----')
- },
- routerErrorEach: ({type, msg}) => {
- console.log({type, msg})
- // #ifdef APP-PLUS
- if (type === 3) {
- router.$lockStatus = false;
- runtimeQuit();
- }
- // #endif
- },
- routes: [
- ...ROUTES,
- {
- path: '*',
- redirect: (to) => {
- return {name: '404'}
- }
- },
- ]
- });
- let count = 0;
- router.beforeEach((to, from, next) => {
- console.log("from:", from)
- console.log("to:", to)
- // if(count==0){
- // next({
- // path:'/pages/login/login',
- // NAVTYPE:'replaceAll'
- // })
- // }else{
- // next();
- // }
- next();
- count++;
- });
- router.afterEach((to, from, next) => {
- console.log('afterEach---跳转结束')
- });
- export {
- router,
- RouterMount
- }
|