init project
This commit is contained in:
132
src/router/index.ts
Normal file
132
src/router/index.ts
Normal file
@@ -0,0 +1,132 @@
|
||||
import { createRouter, createWebHistory, type RouteLocationNormalized } from "vue-router";
|
||||
import RootLayout from "@/layout/RootLayout.vue";
|
||||
import MainLayout from "@/layout/MainLayout.vue";
|
||||
import tabs from "@/router/tabs";
|
||||
import { DEFAULT_BODY_BACKGROUND, useGlobalUIStore } from "@/store/globalUIStore";
|
||||
import { useSettingStore } from "@/store/settingStore";
|
||||
import LoginPage from "@/pages/system/LoginPage.vue";
|
||||
import NotFoundPage from "@/pages/system/NotFoundPage.vue";
|
||||
import ServerIndexPage from "@/pages/system/ServerIndexPage.vue";
|
||||
import FileDetailPage from "@/pages/detail/FileDetailPage.vue";
|
||||
import ServerLogPage from "@/pages/detail/ServerLogPage.vue";
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory("/"),
|
||||
scrollBehavior(_to, _from, savedPosition) {
|
||||
if (savedPosition) {
|
||||
return savedPosition;
|
||||
}
|
||||
|
||||
return {
|
||||
left: 0,
|
||||
top: 0
|
||||
};
|
||||
},
|
||||
routes: [
|
||||
{
|
||||
path: "/",
|
||||
name: "RootLayout",
|
||||
component: RootLayout,
|
||||
children: [
|
||||
{
|
||||
path: "/login",
|
||||
name: "LoginPage",
|
||||
meta: {
|
||||
depth: 1,
|
||||
ignoreConnectCheck: true,
|
||||
navBarVisible: false,
|
||||
tabBarVisible: false,
|
||||
bodyBackground: "#FFF"
|
||||
},
|
||||
component: LoginPage
|
||||
},
|
||||
{
|
||||
path: "/server-index",
|
||||
name: "ServerIndexPage",
|
||||
component: ServerIndexPage,
|
||||
meta: {
|
||||
depth: 1,
|
||||
ignoreConnectCheck: true,
|
||||
navBarVisible: false,
|
||||
tabBarVisible: false,
|
||||
bodyBackground: "#FFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/",
|
||||
name: "MainLayout",
|
||||
component: MainLayout,
|
||||
meta: {
|
||||
depth: 2,
|
||||
bodyBackground: "#FFF"
|
||||
},
|
||||
children: [
|
||||
...tabs,
|
||||
{
|
||||
path: "/files/detail/:id",
|
||||
name: "FileDetailPage",
|
||||
meta: {
|
||||
depth: 3,
|
||||
navBarVisible: true,
|
||||
navBarCanBack: true,
|
||||
navBarTitle: "文件详情",
|
||||
tabBarVisible: false
|
||||
},
|
||||
component: FileDetailPage
|
||||
},
|
||||
{
|
||||
path: "/server/logs",
|
||||
name: "ServerLogPage",
|
||||
meta: {
|
||||
depth: 3,
|
||||
navBarVisible: true,
|
||||
navBarCanBack: true,
|
||||
navBarTitle: "服务日志",
|
||||
tabBarVisible: false
|
||||
},
|
||||
component: ServerLogPage
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: "/:pathMatch(.*)*",
|
||||
name: "NotFoundPage",
|
||||
meta: {
|
||||
depth: 1,
|
||||
ignoreConnectCheck: true,
|
||||
navBarVisible: false,
|
||||
tabBarVisible: false
|
||||
},
|
||||
component: NotFoundPage
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
router.beforeEach((to: RouteLocationNormalized) => {
|
||||
const settingStore = useSettingStore();
|
||||
|
||||
if (to.meta.ignoreConnectCheck) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (settingStore.hasConnectConfig) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return {
|
||||
name: "ServerIndexPage",
|
||||
query: {
|
||||
redirect: to.fullPath
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
router.afterEach((to: RouteLocationNormalized) => {
|
||||
const globalUIStore = useGlobalUIStore();
|
||||
const targetBackground = typeof to.meta.bodyBackground === "string" ? to.meta.bodyBackground : DEFAULT_BODY_BACKGROUND;
|
||||
globalUIStore.setBodyBackground(targetBackground);
|
||||
});
|
||||
|
||||
export default router;
|
||||
46
src/router/tabs.ts
Normal file
46
src/router/tabs.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import type { RouteRecordRaw } from "vue-router";
|
||||
import FilePage from "@/pages/tabs/FilePage.vue";
|
||||
import ServerStatusPage from "@/pages/tabs/ServerStatusPage.vue";
|
||||
import SettingsPage from "@/pages/tabs/SettingsPage.vue";
|
||||
|
||||
const tabs: RouteRecordRaw[] = [
|
||||
{
|
||||
path: "/",
|
||||
name: "FilePage",
|
||||
meta: {
|
||||
depth: 2,
|
||||
navBarVisible: true,
|
||||
navBarTitle: "文件",
|
||||
tabBarVisible: true,
|
||||
tabBarPadding: true
|
||||
},
|
||||
component: FilePage
|
||||
},
|
||||
{
|
||||
path: "/server",
|
||||
name: "ServerStatusPage",
|
||||
meta: {
|
||||
depth: 2,
|
||||
navBarVisible: true,
|
||||
navBarTitle: "状态",
|
||||
tabBarVisible: true,
|
||||
tabBarPadding: true
|
||||
},
|
||||
component: ServerStatusPage
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "SettingsPage",
|
||||
meta: {
|
||||
depth: 2,
|
||||
navBarVisible: true,
|
||||
navBarTitle: "设置",
|
||||
tabBarVisible: true,
|
||||
tabBarPadding: true,
|
||||
bodyBackground: "var(--app-bg)"
|
||||
},
|
||||
component: SettingsPage
|
||||
}
|
||||
];
|
||||
|
||||
export default tabs;
|
||||
Reference in New Issue
Block a user