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 }