2025-10-19 21:27:04 +08:00

222 lines
5.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'
// import Nprogress from 'nprogress'
// import 'nprogress/nprogress.css'
import { GET_TOKEN } from '@/utils/token'
import { KeepAlive } from 'vue'
const constantRoutes = [
/**
* redirect 默认路由:进入项目 默认进入 /index 页面
* hidden 是否在路由栏显示
* meta : {
noCache: true // 如果设置为true则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
*/
{
path: '/login',
name: "Login",
component: () => import('@/views/login/index.vue'),
meta: {
title: '登录',
},
},
{
path: '/',
name: 'Layout',
component: () => import('@/layout/index.vue'),
redirect: '/miniProgram',
meta: {
title: 'Layout',
},
children: [
{
path: '/dashboard',
name: 'dashboard',
component: () => import('@/views/dashboard/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},{
path: '/groups',
name: 'groups',
component: () => import('@/views/groups/index.vue'),
meta: {
title: '',
KeepAlive: true
},
},{
path: '/groupDetails',
name: 'groupDetails',
component: () => import('@/views/groups/groupDetails/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},
{
path: '/miniProgram',
name: 'miniProgram',
component: () => import('@/views/miniProgram/index.vue'),
meta: {
title: '',
KeepAlive: false,
noPadding: true
},
},{
path: '/agents',
name: 'agents',
component: () => import('@/views/ai/index.vue'),
meta: {
title: '',
KeepAlive: false,
noPadding: true
},
},{
path: '/user',
name: 'user',
component: () => import('@/views/user/index.vue'),
meta: {
title: '',
KeepAlive: true
},
},{
path: '/userDetails',
name: 'userDetails',
component: () => import('@/views/user/userDetails/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},{
path: '/task',
name: 'task',
component: () => import('@/views/task/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},{
path: '/taskDetails',
name: 'taskDetails',
component: () => import('@/views/task/taskDetails/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},{
path: '/materialLibrary',
name: 'materialLibrary',
component: () => import('@/views/materialLibrary/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},{
path: '/tags',
name: 'tags',
component: () => import('@/views/tags/index.vue'),
meta: {
title: '',
KeepAlive: true
},
},
{
path: '/tagChildren',
name: 'tagChildren',
component: () => import('@/views/tags/tagChildren/index.vue'),
meta: {
title: '',
KeepAlive: false
},
},
{
path: '/chat',
name: 'chat',
component: () => import('@/views/chat/index.vue'),
meta: {
title: '',
KeepAlive: false,
noPadding: true
},
},
{
path: '/customerService',
name: 'customerService',
component: () => import('@/views/customerService/index.vue'),
meta: {
title: '',
KeepAlive: false,
noPadding: true
},
},
],
},
{
path: '/:pathMatch(.*)',
name: 'Any',
component: () => import('@/views/404/index.vue'),
meta: {
title: '404',
hidden: true,
icon: '',
},
}
]
export const router = createRouter({
history: createWebHistory(),
routes: constantRoutes,
// 切换路由跳转到顶部
scrollBehavior() {
return {
left: 0,
top: 0
}
}
})
const whiteList = ['/login']
// 全局前置守卫
router.beforeEach(async (to, from, next) => {
// Nprogress.start()
// document.title = `${setting.title} - ${to.meta.title}`
const token = GET_TOKEN()
if (token) {
if (to.path === '/login') {
next('/robot')
} else {
next()
}
} else {
// 没有token的情况下可以进入白名单
if (whiteList.indexOf(to.path) > -1) {
next()
} else {
next('/login')
}
}
})
// 全局后置守卫
router.afterEach(() => {
// Nprogress.done()
})