GPU_Web/src/router/index.ts

334 lines
9.0 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.

// src/router/index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import { Components } from "ant-design-vue/es/date-picker/generatePicker";
const routes: RouteRecordRaw[] = [
{
path: "/",
// component: HomeView // 这个页面独立不使用Layout
redirect: "/layout/home",
},
{
path: "/login",
name: "Login",
component: () => import("@/views/login/index.vue"),
},
{
path: "/active",
name: "Active",
component: () => import("@/views/saleActive/index.vue"),
redirect: "/active/newUser",
children: [
{
path: "newUser",
name: "newUser",
component: () => import("@/views/saleActive/newUser.vue"),
},
{
path: "newUserDetail",
name: "newUserDetail",
component: () => import("@/views/saleActive/newUserDetail.vue"),
},
{
path: "oldBringsNew",
name: "oldBringsNew",
component: () => import("@/views/saleActive/oldBringsNew.vue"),
},
{
path: "openDetail",
name: "openDetail",
component: () => import("@/views/saleActive/openDetail.vue"),
},
{
path: "invite",
name: "invite",
component: () => import("@/views/saleActive/invite.vue"),
},
],
},
{
path: "/404",
name: "404",
component: () => import("@/views/404.vue"),
},
{
path: "/:pathMatch(.*)*",
name: "NotFound",
component: () => import("@/views/404.vue"),
},
{
path: "/document",
name: "document",
component: () => import("@/views/document/index.vue"),
redirect: "/document/introdution",
children: [
{
path: "introdution",
name: "introdution",
component: () => import("@/views/document/introdution.vue"),
},
{
path: "start",
name: "start",
component: () => import("@/views/document/start.vue"),
},
{
path: "video",
name: "video",
component: () => import("@/views/document/video.vue"),
},
{
path: "study",
name: "study",
component: () => import("@/views/document/study.vue"),
},
{
path: "select",
name: "select",
component: () => import("@/views/document/select.vue"),
},
{
path: "ceshi",
name: "ceshi",
component: () => import("@/views/document/ceshi.vue"),
},
{
path: "summary",
name: "summary",
component: () => import("@/views/document/summary.vue"),
},
{
path: "jupyterLab",
name: "jupyterLab",
component: () => import("@/views/document/jupyterLab.vue"),
},
{
path: "SSH",
name: "SSH",
component: () => import("@/views/document/ssh.vue"),
},
{
path: "member",
name: "member",
component: () => import("@/views/document/member.vue"),
},
],
},
{
path: "/layout",
name: "Layout",
component: () => import("@/views/layout/index.vue"),
children: [
{
path: "home",
name: "LayoutHome",
component: () => import("@/views/home/index.vue"),
},
{
path: "yingxiao",
name: "yingxiao",
component: () => import("@/views/yingxiao/index.vue"),
},
{
path: "market",
name: "LayoutMarket",
component: () => import("@/views/market/index.vue"),
},
{
path: "create",
name: "Create",
component: () => import("@/views/instanceCreate/index.vue"),
},
{
path: "admin",
name: "Admin",
component: () => import("@/views/admin/index.vue"),
children: [
{
path: "",
redirect: "home",
},
{
path: "home",
name: "AdminHome",
component: () => import("@/views/admin/home/index.vue"),
},
{
path: "instance",
name: "Instance",
component: () => import("@/views/admin/instance/index.vue"),
},
{
path: "instanceCreate",
name: "InstanceCreate",
component: () => import("@/views/admin/instanceCreate/index.vue"),
},
// {
// path: "fileStore",
// name: "FileStore",
// component: () => import("@/views/admin/fileStore/index.vue"),
// },
{
path: "history",
name: "History",
component: () => import("@/views/admin/account/history/index.vue"),
},
{
path: "security",
name: "Security",
component: () => import("@/views/admin/account/security/index.vue"),
},
{
path: "realnameAuth",
name: "RealnameAuth",
component: () =>
import("@/views/admin/account/realnameAuth/index.vue"),
},
{
path: "enterRealAuth",
name: "EnterRealAuth",
component: () =>
import("@/views/admin/account/enterRealAuth/index.vue"),
},
{
path: "image",
name: "Image",
component: () => import("@/views/admin/image/index.vue"),
},
{
path: "contract",
name: "contract",
component: () =>
import("@/views/admin/account/cost/contract/index.vue"),
},
{
path: "costDetail",
name: "costDetail",
component: () =>
import("@/views/admin/account/cost/costDetail/index.vue"),
},
{
path: "coupon",
name: "coupon",
component: () =>
import("@/views/admin/account/cost/coupon/index.vue"),
},
{
path: "flow",
name: "flow",
component: () =>
import("@/views/admin/account/cost/flow/index.vue"),
},
{
path: "invoice",
name: "invoice",
component: () =>
import("@/views/admin/account/cost/invoice/index.vue"),
},
{
path: "myOrder",
name: "myOrder",
component: () =>
import("@/views/admin/account/cost/myOrder/index.vue"),
},
{
path: "myMoney",
name: "myMoney",
component: () =>
import("@/views/admin/account/cost/myMoney/index.vue"),
},
{
path: "exchange",
name: "exchange",
component: () =>
import("@/views/admin/account/cost/exchange/index.vue"),
},
{
path: "myMoneyDetail",
name: "myMoneyDetail",
component: () =>
import("@/views/admin/account/cost/myMoneyDetail/index.vue"),
},
{
path: "voucher",
name: "voucher",
component: () =>
import("@/views/admin/account/cost/voucher/index.vue"),
},
{
path: "growthValue",
name: "growthValue",
component: () => import("@/views/admin/growthValue/index.vue"),
},
],
},
],
},
// {
// path: '/fileStore',
// name: 'FileStore',
// component: Layout, // 使用Layout包装FileStore
// children: [
// {
// path: '', // 空路径,访问 /fileStore 时显示FileStore组件
// name: 'FileStoreContent',
// component: FileStore
// },
// {
// path: '/accountSecurity',
// name: 'AccountSecurity',
// component: AccountSecurity
// },
// {
// path: '/accountHistory',
// name: 'AccountHistory',
// component: AccountHistory
// }
// ]
// },
// // 可以继续添加其他使用Layout的路由
// {
// path: '/container',
// name: 'Container',
// component: Layout,
// children: [
// {
// path: '',
// name: 'ContainerContent',
// component: () => import('@/views/controlPanel/container/index.vue')
// }
// ]
// }
];
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes,
});
// ====== 添加全局前置守卫 ======
// router.beforeEach((to, from, next) => {
// console.log("Navigating to:", to.path);
// const list = ["/layout/home","/document/introdution","/layout/admin/home"];
// if (list.indexOf(to.path) != -1) {
// next();
// return;
// } else {
// const token = localStorage.getItem("token"); // 或从 pinia/vuex 获取
// const isLoginPage = to.path === "/login";
// if (!token && !isLoginPage) {
// // 没有 token 且不是去登录页 → 跳转登录
// next({ path: "/login" });
// } else if (token && isLoginPage) {
// // 已登录却访问登录页 → 跳转首页(可选)
// next({ path: "/layout/home" });
// } else {
// // 正常访问
// next();
// }
// }
// });
export default router;