52 lines
2.6 KiB
TypeScript
52 lines
2.6 KiB
TypeScript
import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router";
|
|
import { useAuthStore } from "@/stores/auth";
|
|
|
|
const routes: RouteRecordRaw[] = [
|
|
{
|
|
path: "/login",
|
|
name: "login",
|
|
component: () => import("@/views/auth/LoginView.vue"),
|
|
meta: { public: true, title: "登录" }
|
|
},
|
|
{
|
|
path: "/",
|
|
component: () => import("@/layouts/MainLayout.vue"),
|
|
children: [
|
|
{ path: "", redirect: "/dashboard" },
|
|
{ path: "dashboard", name: "dashboard", component: () => import("@/views/dashboard/DashboardView.vue"), meta: { title: "概览" } },
|
|
{ path: "runtime", name: "runtime", component: () => import("@/views/runtime/RuntimeView.vue"), meta: { title: "运行中心" } },
|
|
{ path: "runtime-debug", name: "runtime-debug", component: () => import("@/views/runtime/RuntimeDebugView.vue"), meta: { title: "运行调试" } },
|
|
{ path: "ops-center", name: "ops-center", component: () => import("@/views/ops/OpsCenterView.vue"), meta: { title: "运维中枢" } },
|
|
{ path: "settings", name: "settings", component: () => import("@/views/settings/SettingsView.vue"), meta: { title: "系统设置" } },
|
|
{ path: "imports", name: "imports", component: () => import("@/views/imports/ImportsView.vue"), meta: { title: "域名导入" } },
|
|
{ path: "sensitive-words", name: "sensitive-words", component: () => import("@/views/sensitive-words/SensitiveWordsView.vue"), meta: { title: "敏感词配置" } },
|
|
{ path: "juming", name: "juming", component: () => import("@/views/juming/JumingView.vue"), meta: { title: "聚名采集" } },
|
|
{ path: "detect", name: "detect", component: () => import("@/views/detect/DetectView.vue"), meta: { title: "检测控制" } },
|
|
{ path: "domains", name: "domains", component: () => import("@/views/domains/DomainsView.vue"), meta: { title: "域名筛选" } },
|
|
{ path: "exports", name: "exports", component: () => import("@/views/exports/ExportsView.vue"), meta: { title: "导出中心" } },
|
|
{ path: "logs", name: "logs", component: () => import("@/views/logs/LogsView.vue"), meta: { title: "日志诊断" } }
|
|
]
|
|
}
|
|
];
|
|
|
|
const router = createRouter({
|
|
history: createWebHashHistory(),
|
|
routes,
|
|
scrollBehavior: () => ({ top: 0, left: 0 })
|
|
});
|
|
|
|
router.beforeEach((to) => {
|
|
const authStore = useAuthStore();
|
|
const title = import.meta.env.VITE_APP_TITLE || "domainCheck 管理后台";
|
|
document.title = to.meta?.title ? `${String(to.meta.title)} - ${title}` : title;
|
|
if (to.meta?.public) {
|
|
return true;
|
|
}
|
|
if (!authStore.token) {
|
|
return "/login";
|
|
}
|
|
return true;
|
|
});
|
|
|
|
export default router;
|