feat: 初始化DevOps平台前端

This commit is contained in:
湛兮
2026-06-11 20:49:59 +08:00
commit 60931e2c21
38 changed files with 7033 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
import { useSessionStore } from '../stores/session'
import MainLayout from '../layouts/MainLayout.vue'
import LoginView from '../views/LoginView.vue'
import OverviewView from '../views/OverviewView.vue'
import ProjectsView from '../views/ProjectsView.vue'
import ReleaseCenterView from '../views/ReleaseCenterView.vue'
import RunsView from '../views/RunsView.vue'
import SettingsView from '../views/SettingsView.vue'
const routes: RouteRecordRaw[] = [
{
path: '/login',
name: 'login',
component: LoginView,
meta: {
public: true,
},
},
{
path: '/',
component: MainLayout,
redirect: '/overview',
children: [
{
path: 'overview',
name: 'overview',
component: OverviewView,
},
{
path: 'projects',
name: 'projects',
component: ProjectsView,
},
{
path: 'releases',
name: 'releases',
component: ReleaseCenterView,
},
{
path: 'runs',
name: 'runs',
component: RunsView,
},
{
path: 'agent',
redirect: '/overview',
},
{
path: 'settings',
name: 'settings',
component: SettingsView,
},
],
},
]
const router = createRouter({
history: createWebHistory(),
routes,
})
router.beforeEach((to) => {
const session = useSessionStore()
if (!to.meta.public && !session.isAuthenticated) {
return {
name: 'login',
query: {
redirect: to.fullPath,
},
}
}
if (to.name === 'login' && session.isAuthenticated) {
return {
name: 'overview',
}
}
return true
})
export default router