新增
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
import routes from 'uni-router-routes'
|
||||
import { createRouter } from 'uniapp-router-next'
|
||||
|
||||
import { ClientEnum } from '@/enums/appEnums'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { client } from '@/utils/client'
|
||||
// #ifdef H5
|
||||
import wechatOa from '@/utils/wechat'
|
||||
// #endif
|
||||
import cache from '@/utils/cache'
|
||||
import { BACK_URL } from '@/enums/constantEnums'
|
||||
|
||||
const router = createRouter({
|
||||
routes: [
|
||||
...routes,
|
||||
{
|
||||
path: '*',
|
||||
redirect() {
|
||||
return {
|
||||
name: '404'
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
debug: import.meta.env.DEV,
|
||||
//@ts-ignore
|
||||
platform: process.env.UNI_PLATFORM,
|
||||
h5: {}
|
||||
})
|
||||
|
||||
//存储登陆前的页面
|
||||
let isFirstEach = true
|
||||
router.beforeEach(async (to, from) => {
|
||||
//保存第一次进来时的页面路径(需要登陆才能访问的页面)
|
||||
if (isFirstEach) {
|
||||
const userStore = useUserStore()
|
||||
if (!userStore.isLogin && !to.meta.white) {
|
||||
cache.set(BACK_URL, to.fullPath)
|
||||
}
|
||||
isFirstEach = false
|
||||
}
|
||||
})
|
||||
router.afterEach((to, from) => {
|
||||
const userStore = useUserStore()
|
||||
if (!userStore.isLogin && !to.meta.white) {
|
||||
cache.set(BACK_URL, to.fullPath)
|
||||
}
|
||||
})
|
||||
|
||||
// 登录拦截
|
||||
router.beforeEach(async (to, from) => {
|
||||
const userStore = useUserStore();
|
||||
if (!userStore.isLogin && to.meta.auth) {
|
||||
return '/pages/login/login'
|
||||
}
|
||||
})
|
||||
|
||||
// #ifdef H5
|
||||
//用于收集微信公众号的授权的code,并清除路径上微信带的参数
|
||||
router.beforeEach(async (to, form) => {
|
||||
const { code, state, scene } = to.query
|
||||
|
||||
if (code && state && scene) {
|
||||
wechatOa.setAuthData({
|
||||
code,
|
||||
scene
|
||||
})
|
||||
//收集完删除路径上的参数
|
||||
delete to.query.code
|
||||
delete to.query.state
|
||||
return {
|
||||
path: to.path,
|
||||
force: true,
|
||||
navType: 'reLaunch',
|
||||
query: to.query
|
||||
}
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
router.afterEach((to, from) => {
|
||||
setTimeout(async () => {
|
||||
if (client == ClientEnum.OA_WEIXIN && !to.meta.webview) {
|
||||
// jssdk配置
|
||||
await wechatOa.config()
|
||||
}
|
||||
})
|
||||
})
|
||||
// #endif
|
||||
export default router
|
||||
Reference in New Issue
Block a user