Newer
Older
smartwell_front / src / router / routes.ts
liyaguang 4 days ago 3 KB 细节修复
import { setupLayouts } from 'virtual:generated-layouts'
import generatedRoutes from 'virtual:generated-pages'
// import commonRoute from './modules/system'
import homeRoute from './modules/pc'
import mobileRoute from './modules/mobile'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
import config from '/public/config/config.json'
// console.log(config)
// 固定路由(默认路由)
const constantRoutes: Route.recordRaw[] = [
  {
    path: '/',
    redirect: '/dashboard',
    meta: {
      title: '',
    },
  },
  {
    path: '/login',
    name: 'login',
    component: () => import('@/views/login.vue'),
    meta: {
      title: '登录',
    },
  },
  {
    path: '/:all(.*)*',
    name: 'notFound',
    component: () => import('@/views/[...all].vue'),
    meta: {
      title: '找不到页面',
    },
  },
]
// const userAgent = navigator.userAgent || navigator.vendor || window.opera
// const isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent)
// window.localStorage.setItem('browser-type-bj-well', `${isMobile ? 'mobile' : 'pc'}`)
const isMobile = config.mode === 'mobile'
window.localStorage.setItem('browser-type-bj-well', `${isMobile ? 'mobile' : 'pc'}`)
// 系统路由
const systemRoutes: Route.recordRaw[] = [
  {
    path: '/dashboard',
    component: isMobile ? null : () => import('@/layouts/index.vue'),
    meta: {
      title: () => useSettingsStore().dashboard.title,
      breadcrumb: false,
    },
    children: [
      {
        path: '',
        name: 'dashboard',
        component: () => import('@/views/index.vue'),
        meta: {
          title: () => useSettingsStore().dashboard.title,
          breadcrumb: false,

        },
      },
    ],
  },
  {
    path: '/personal',
    component: () => import('@/layouts/index.vue'),
    redirect: '/personal/setting',
    meta: {
      title: '个人中心',
      breadcrumb: false,
    },
    children: [
      {
        path: 'setting',
        name: 'personalSetting',
        component: () => import('@/views/personal/setting.vue'),
        meta: {
          title: '个人设置',
          cache: 'personalEditPassword',
        },
      },
      {
        path: 'edit/password',
        name: 'personalEditPassword',
        component: () => import('@/views/personal/edit.password.vue'),
        meta: {
          title: '修改密码',
        },
      },
    ],
  },
  {
    path: '/reload',
    component: () => import('@/layouts/index.vue'),
    meta: {
      title: '重新加载',
      breadcrumb: false,
    },
    children: [
      {
        path: '',
        name: 'reload',
        component: () => import('@/views/reload.vue'),
        meta: {
          title: '重新加载',
          breadcrumb: false,
        },
      },
    ],
  },
]
// 动态路由(异步路由、导航栏路由)
const asyncRoutes: Route.recordMainRaw[] = isMobile
  ? [{ // 移动端路由
      meta: {
        title: '',
        icon: '',
      },
      children: [
        ...mobileRoute,
      ],
    }]
  : [{ // pc端路由
      meta: {
        title: '',
        icon: '',
      },
      children: [
        ...homeRoute,
      ],
    },
    ]

const constantRoutesByFilesystem = generatedRoutes.filter((item) => {
  return item.meta?.enabled !== false && item.meta?.constant === true
})

const asyncRoutesByFilesystem = setupLayouts(generatedRoutes.filter((item) => {
  return item.meta?.enabled !== false && item.meta?.constant !== true && item.meta?.layout !== false
})) as Route.recordRaw[]

export {
  constantRoutes,
  systemRoutes,
  asyncRoutes,
  constantRoutesByFilesystem,
  asyncRoutesByFilesystem,
}