From 86315f63dc737f25222234ac6b7f63143f44eb4b Mon Sep 17 00:00:00 2001 From: xuyue <517252939@qq.com> Date: Fri, 17 Feb 2023 08:41:58 +0800 Subject: [PATCH] add setting. --- package-lock.json | 6 ++++ package.json | 1 + src/oj/user/index.vue | 3 +- src/oj/user/setting.vue | 72 ++++++++++++++++++++++++++++++++++++++-- src/shared/Header.vue | 20 +++++++---- src/shared/store/user.ts | 7 ++-- 6 files changed, 95 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97cf87e..c4bb423 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "party-js": "^2.2.0", "pinia": "^2.0.30", "vue": "^3.2.47", + "vue-avatar-upload": "^1.1.0", "vue-chartjs": "^5.2.0", "vue-router": "^4.1.6" }, @@ -3697,6 +3698,11 @@ "@vue/shared": "3.2.47" } }, + "node_modules/vue-avatar-upload": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/vue-avatar-upload/-/vue-avatar-upload-1.1.0.tgz", + "integrity": "sha512-mEWpBKm9AxjW6iyrigb/i9UKUYk3iBfSWSJwwNG6QmbxQMF3aXDwUVPFv7i2VK0P6oZyfIybjIt2jVBgoN0WlA==" + }, "node_modules/vue-chartjs": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/vue-chartjs/-/vue-chartjs-5.2.0.tgz", diff --git a/package.json b/package.json index 1eb43a4..f5d11d5 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "party-js": "^2.2.0", "pinia": "^2.0.30", "vue": "^3.2.47", + "vue-avatar-upload": "^1.1.0", "vue-chartjs": "^5.2.0", "vue-router": "^4.1.6" }, diff --git a/src/oj/user/index.vue b/src/oj/user/index.vue index af00144..92dd578 100644 --- a/src/oj/user/index.vue +++ b/src/oj/user/index.vue @@ -10,7 +10,7 @@ const [loading, toggle] = useToggle() async function init() { toggle(true) try { - const res = await getProfile(route.query.name as string) + const res = await getProfile(route.query.name) profile.value = res.data const acm = res.data.acm_problems_status.problems || {} const oi = res.data.oi_problems_status.problems || {} @@ -76,6 +76,7 @@ onMounted(init) h2 { margin: 0; + font-weight: normal; } .desc { diff --git a/src/oj/user/setting.vue b/src/oj/user/setting.vue index a46b7b5..650d063 100644 --- a/src/oj/user/setting.vue +++ b/src/oj/user/setting.vue @@ -1,3 +1,69 @@ - - - + + + diff --git a/src/shared/Header.vue b/src/shared/Header.vue index 727fcbe..d37a59a 100644 --- a/src/shared/Header.vue +++ b/src/shared/Header.vue @@ -89,11 +89,8 @@ function run() { - - + + 运行
注册
- - 运行 + +
@@ -133,6 +133,12 @@ function run() { + + + diff --git a/src/shared/store/user.ts b/src/shared/store/user.ts index eb1f2cc..754b12d 100644 --- a/src/shared/store/user.ts +++ b/src/shared/store/user.ts @@ -1,11 +1,12 @@ import { PROBLEM_PERMISSION, STORAGE_KEY, USER_TYPE } from "utils/constants" import storage from "utils/storage" +import { Profile, User } from "~/utils/types" import { getProfile } from "../api" export const useUserStore = defineStore("user", () => { - const profile = ref() + const profile = ref(null) const [isFinished] = useToggle(false) - const user = computed(() => profile?.value?.user ?? {}) + const user = computed(() => profile!.value!.user) const isAuthed = computed(() => !!user.value.email) const isAdminRole = computed( () => @@ -28,7 +29,7 @@ export const useUserStore = defineStore("user", () => { } function clearProfile() { - profile.value = {} + profile.value = null storage.clear() } return {