| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- import { isMobile } from 'billd-utils';
- import { createRouter, createWebHistory } from 'vue-router';
- import Layout from '@/layout/index.vue';
- import type { RouteRecordRaw } from 'vue-router';
- export const mobileRouterName = {
- h5: 'h5',
- h5Room: 'h5Room',
- };
- export const routerName = {
- home: 'home',
- about: 'about',
- account: 'account',
- rank: 'rank',
- sponsors: 'sponsors',
- support: 'support',
- order: 'order',
- shop: 'shop',
- link: 'link',
- ad: 'ad',
- faq: 'faq',
- team: 'team',
- oauth: 'oauth',
- release: 'release',
- notFound: 'notFound',
- group: 'group',
- profile: 'profile',
- pull: 'pull',
- push: 'push',
- ...mobileRouterName,
- };
- // 默认路由
- export const defaultRoutes: RouteRecordRaw[] = [
- {
- path: '/',
- component: Layout,
- children: [
- {
- name: routerName.home,
- path: '/',
- component: () => import('@/views/home/index.vue'),
- },
- {
- name: routerName.about,
- path: '/about',
- children: [
- {
- name: routerName.group,
- path: 'group',
- component: () => import('@/views/group/index.vue'),
- },
- {
- name: routerName.faq,
- path: 'faq',
- component: () => import('@/views/faq/index.vue'),
- },
- {
- name: routerName.team,
- path: 'team',
- component: () => import('@/views/team/index.vue'),
- },
- {
- name: routerName.release,
- path: 'release',
- component: () => import('@/views/release/index.vue'),
- },
- ],
- },
- {
- name: routerName.rank,
- path: '/rank',
- component: () => import('@/views/rank/index.vue'),
- },
- {
- name: routerName.shop,
- path: '/shop',
- component: () => import('@/views/shop/index.vue'),
- },
- {
- name: routerName.profile,
- path: '/profile/:userId',
- component: () => import('@/views/profile/index.vue'),
- },
- {
- name: routerName.account,
- path: '/account',
- component: () => import('@/views/account/index.vue'),
- },
- {
- name: routerName.sponsors,
- path: '/sponsors',
- component: () => import('@/views/sponsors/index.vue'),
- },
- {
- name: routerName.support,
- path: '/support',
- component: () => import('@/views/support/index.vue'),
- },
- {
- name: routerName.order,
- path: '/order',
- component: () => import('@/views/order/index.vue'),
- },
- {
- name: routerName.ad,
- path: '/ad',
- component: () => import('@/views/ad/index.vue'),
- },
- {
- name: routerName.pull,
- path: '/pull/:roomId',
- component: () => import('@/views/pull/index.vue'),
- },
- {
- name: routerName.push,
- path: '/push',
- component: () => import('@/views/push/index.vue'),
- },
- ],
- },
- {
- name: mobileRouterName.h5,
- path: '/h5',
- component: () => import('@/views/h5/index.vue'),
- },
- {
- name: mobileRouterName.h5Room,
- path: '/h5/:roomId',
- component: () => import('@/views/h5/room/index.vue'),
- },
- {
- name: routerName.oauth,
- path: '/oauth/:platform',
- component: () => import('@/views/oauth/index.vue'),
- },
- ];
- const router = createRouter({
- routes: [
- ...defaultRoutes,
- {
- path: '/:pathMatch(.*)*',
- name: routerName.notFound,
- component: () => import('@/views/notFound.vue'),
- },
- ],
- history: createWebHistory(),
- });
- router.beforeEach((to, from, next) => {
- if (to.name === routerName.oauth) {
- return next();
- }
- if (isMobile()) {
- if (!Object.keys(mobileRouterName).includes(to.name as string)) {
- // 当前移动端,但是跳转了非移动端路由
- return next({ name: mobileRouterName.h5 });
- } else {
- return next();
- }
- } else {
- if (Object.keys(mobileRouterName).includes(to.name as string)) {
- // 当前非移动端,但是跳转了移动端路由
- return next({ name: routerName.home });
- }
- return next();
- }
- });
- export default router;
|