diff --git a/src/oj/user/index.vue b/src/oj/user/index.vue new file mode 100644 index 0000000..a46b7b5 --- /dev/null +++ b/src/oj/user/index.vue @@ -0,0 +1,3 @@ + + + diff --git a/src/oj/user/setting.vue b/src/oj/user/setting.vue new file mode 100644 index 0000000..a46b7b5 --- /dev/null +++ b/src/oj/user/setting.vue @@ -0,0 +1,3 @@ + + + diff --git a/src/routes.ts b/src/routes.ts index 99d3f8a..55d7308 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -71,6 +71,16 @@ export const routes: RouteRecordRaw[] = [ component: () => import("oj/rank/list.vue"), beforeEnter: loadChart, }, + { + path: "user", + component: () => import("oj/user/index.vue"), + meta: { requiresAuth: true }, + }, + { + path: "setting", + component: () => import("oj/user/setting.vue"), + meta: { requiresAuth: true }, + }, { path: "learn", redirect: "learn/step-1", diff --git a/src/shared/Header.vue b/src/shared/Header.vue index a2a1252..727fcbe 100644 --- a/src/shared/Header.vue +++ b/src/shared/Header.vue @@ -15,25 +15,19 @@ import { code } from "~/shared/composables/learn" const userStore = useUserStore() const route = useRoute() const router = useRouter() +const active = computed(() => { + const path = route.path.split("/")[1] || "problem" + return !["user", "setting"].includes(path) ? path : "" +}) async function handleLogout() { await logout() - userStore.clearMyProfile() + userStore.clearProfile() router.replace("/") } -function handleDropdown(key: string) { - switch (key) { - case "logout": - handleLogout() - break - } -} - onMounted(userStore.getMyProfile) -const defaultValue = computed(() => route.path.split("/")[1] || "problem") - const menus: MenuOption[] = [ { label: () => @@ -60,12 +54,30 @@ const menus: MenuOption[] = [ ] const options = computed>(() => [ - { label: "我的主页", key: "home" }, - { label: "我的提交", key: "status" }, - { label: "我的设置", key: "setting" }, + { + label: "我的主页", + key: "home", + props: { + onClick: () => router.push("/user"), + }, + }, + { + label: "我的提交", + key: "status", + props: { + onClick: () => router.push("/submission?myself=1"), + }, + }, + { + label: "我的设置", + key: "setting", + props: { + onClick: () => router.push("/setting"), + }, + }, { label: "后台管理", key: "admin", show: userStore.isAdminRole }, { type: "divider" }, - { label: "退出", key: "logout" }, + { label: "退出", key: "logout", props: { onClick: handleLogout } }, ]) function run() { @@ -75,7 +87,7 @@ function run() {