index.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { createRouter } from '@/plugin/uni-mini-router'
  2. // 导入pages.json
  3. import pagesJson from '../pages.json'
  4. // 引入uni-parse-pages
  5. import pagesJsonToRoutes from 'uni-parse-pages'
  6. // 生成路由表
  7. const routes = pagesJsonToRoutes(pagesJson)
  8. setRouteName(routes)
  9. const router = createRouter({
  10. routes: [...routes], // 路由表信息
  11. })
  12. export const whiteList = ['/pages/login/login', '/pages/login/loginOauth2']
  13. export const loginPage = '/pages/login/login'
  14. interface CacheRoute {
  15. path: string
  16. query: Record<string, string | number | boolean>
  17. }
  18. export const beforEach = (to, from, next) => {
  19. try {
  20. const userInfo = uni.getStorageSync('USER_INFO')
  21. if (userInfo) {
  22. next()
  23. } else {
  24. next({ path: loginPage })
  25. }
  26. } catch (err) {
  27. console.error('获取用户信息失败:', err)
  28. next({ path: loginPage })
  29. }
  30. }
  31. // 全局前置守卫
  32. router.beforeEach(beforEach)
  33. // 路由的最后一级为路由名字不可重复
  34. function setRouteName(routes) {
  35. routes.forEach((item) => {
  36. if (item.path) {
  37. const name = item.path.split('/').pop()
  38. item.name = name
  39. }
  40. })
  41. }
  42. export default router