ACS
This commit is contained in:
+212
-8
@@ -1,20 +1,217 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router'
|
||||
import Home from '../views/Home.vue'
|
||||
import AdminLayout from '../components/layout/AdminLayout.vue'
|
||||
import OperationLog from '@/views/system/OperationLog.vue'
|
||||
|
||||
const routes = [
|
||||
{
|
||||
path: '/',
|
||||
name: 'Home',
|
||||
component: Home,
|
||||
redirect: '/dashboard'
|
||||
},
|
||||
{
|
||||
path: '/redirect',
|
||||
component: AdminLayout,
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: '/redirect/:path(.*)',
|
||||
component: () => import('../views/Redirect.vue'),
|
||||
meta: { title: '重定向' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
component: AdminLayout,
|
||||
children: [
|
||||
{
|
||||
path: 'dashboard',
|
||||
name: 'Dashboard',
|
||||
component: () => import('../views/dashboard/Dashboard.vue'),
|
||||
meta: {
|
||||
title: '仪表盘',
|
||||
icon: 'DataBoard'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'ticket',
|
||||
name: 'Ticket',
|
||||
meta: {
|
||||
title: '工单管理',
|
||||
icon: 'Tickets'
|
||||
},
|
||||
component: () => import('../views/ticket/TicketChat.vue'),
|
||||
},
|
||||
// ACS管理路由
|
||||
{
|
||||
path: 'acs',
|
||||
name: 'ACS',
|
||||
meta: {
|
||||
title: 'ACS管理',
|
||||
icon: 'Monitor'
|
||||
},
|
||||
redirect: '/acs/messages/announcements',
|
||||
children: [
|
||||
// 消息管理路由
|
||||
{
|
||||
path: 'messages',
|
||||
name: 'Messages',
|
||||
meta: {
|
||||
title: '消息管理'
|
||||
},
|
||||
redirect: '/acs/messages/announcements',
|
||||
children: [
|
||||
{
|
||||
path: 'announcements',
|
||||
name: 'Announcements',
|
||||
component: () => import('../views/acs/messages/Announcements.vue'),
|
||||
meta: {
|
||||
title: '官方公告'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'policies',
|
||||
name: 'Policies',
|
||||
component: () => import('../views/acs/messages/Policies.vue'),
|
||||
meta: {
|
||||
title: '官方政策'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'news',
|
||||
name: 'News',
|
||||
component: () => import('../views/acs/messages/News.vue'),
|
||||
meta: {
|
||||
title: '新闻咨询'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
// 镜像管理路由
|
||||
{
|
||||
path: 'images',
|
||||
name: 'Images',
|
||||
meta: {
|
||||
title: '镜像管理'
|
||||
},
|
||||
redirect: '/acs/images/vm',
|
||||
children: [
|
||||
{
|
||||
path: 'vm',
|
||||
name: 'VmImages',
|
||||
component: () => import('../views/acs/images/VmImages.vue'),
|
||||
meta: {
|
||||
title: '虚拟机镜像'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'container',
|
||||
name: 'ContainerImages',
|
||||
component: () => import('../views/acs/images/ContainerImages.vue'),
|
||||
meta: {
|
||||
title: '容器镜像'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'categories',
|
||||
name: 'ImageCategories',
|
||||
component: () => import('../views/acs/images/ImageCategories.vue'),
|
||||
meta: {
|
||||
title: '镜像分类'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
// 节点管理路由
|
||||
{
|
||||
path: 'nodes',
|
||||
name: 'Nodes',
|
||||
component: () => import('../views/acs/nodes/Nodes.vue'),
|
||||
meta: {
|
||||
title: '节点管理'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'system',
|
||||
name: 'System',
|
||||
meta: {
|
||||
title: '系统管理',
|
||||
icon: 'Setting'
|
||||
},
|
||||
redirect: '/system/users',
|
||||
children: [
|
||||
{
|
||||
path: 'users',
|
||||
name: 'Users',
|
||||
component: () => import('../views/system/Users.vue'),
|
||||
meta: {
|
||||
title: '用户管理'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'operation-log',
|
||||
name: 'OperationLog',
|
||||
component: OperationLog,
|
||||
meta: { title: '操作日志' }
|
||||
},
|
||||
{
|
||||
path: 'domain-whitelist',
|
||||
name: 'DomainWhitelist',
|
||||
component: () => import('../views/system/DomainWhitelist.vue'),
|
||||
meta: { title: '域名白名单' }
|
||||
}
|
||||
]
|
||||
},
|
||||
// 个人中心路由
|
||||
{
|
||||
path: 'profile',
|
||||
name: 'Profile',
|
||||
component: () => import('../views/profile/UserInfo.vue'),
|
||||
meta: {
|
||||
title: '个人信息',
|
||||
hidden: true
|
||||
}
|
||||
},
|
||||
// 修改密码路由
|
||||
{
|
||||
path: 'change-password',
|
||||
name: 'ChangePassword',
|
||||
component: () => import('../views/profile/ChangePassword.vue'),
|
||||
meta: {
|
||||
title: '修改密码',
|
||||
hidden: true
|
||||
}
|
||||
},
|
||||
// 服务器详情页面路由
|
||||
{
|
||||
path: 'servers/server',
|
||||
name: 'ServerDetail',
|
||||
component: () => import('../views/acs/nodes/server.vue'),
|
||||
meta: {
|
||||
title: '服务器详情',
|
||||
hidden: true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
// 登录页
|
||||
{
|
||||
path: '/login',
|
||||
name: 'Login',
|
||||
component: () => import('../views/Login.vue'),
|
||||
meta: {
|
||||
title: '首页'
|
||||
title: '登录'
|
||||
}
|
||||
},
|
||||
// 404 页面
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
name: 'NotFound',
|
||||
component: () => import('../views/NotFound.vue')
|
||||
component: () => import('../views/NotFound.vue'),
|
||||
meta: {
|
||||
title: '页面不存在'
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -26,12 +223,19 @@ const router = createRouter({
|
||||
// 全局前置守卫
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 设置页面标题
|
||||
document.title = to.meta.title || '默认标题'
|
||||
next()
|
||||
document.title = to.meta.title ? `${to.meta.title} - 007UI管理系统` : '007UI管理系统'
|
||||
|
||||
// 这里可以添加登录验证逻辑
|
||||
const isAuthenticated = localStorage.getItem('token')
|
||||
if (to.path !== '/login' && !isAuthenticated) {
|
||||
next({ path: '/login' })
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
})
|
||||
|
||||
// 全局后置钩子
|
||||
router.afterEach((to, from) => {
|
||||
router.afterEach(() => {
|
||||
window.scrollTo(0, 0)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user