diff --git a/src/oj/problem/components/ProblemContent.vue b/src/oj/problem/components/ProblemContent.vue index f74c3c6..9266862 100644 --- a/src/oj/problem/components/ProblemContent.vue +++ b/src/oj/problem/components/ProblemContent.vue @@ -58,7 +58,11 @@ watch( // AC 或失败次数 >= 3 时加载推荐 watch( - () => [problem.value?._id, problem.value?.my_status, problemStore.totalFailCount], + () => [ + problem.value?._id, + problem.value?.my_status, + problemStore.totalFailCount, + ], ([, status, failCount]) => { if (status === 0 || (failCount as number) >= 3) { loadSimilarProblems() diff --git a/src/oj/problem/detail.vue b/src/oj/problem/detail.vue index 515de7b..9a80d3c 100644 --- a/src/oj/problem/detail.vue +++ b/src/oj/problem/detail.vue @@ -236,11 +236,7 @@ watch(isMobile, (value) => { > - + diff --git a/src/oj/user/index.vue b/src/oj/user/index.vue index 685a5a2..8ee8ebe 100644 --- a/src/oj/user/index.vue +++ b/src/oj/user/index.vue @@ -22,6 +22,40 @@ const [show, toggleShow] = useToggle(false) const { isDesktop } = useBreakpoints() +const isDefaultAvatar = computed( + () => profile.value?.avatar.endsWith("default.png") ?? true, +) + +const problemsFlexRef = ref(null) +const itemsPerRow = ref(8) + +function updateItemsPerRow() { + if (!problemsFlexRef.value) return + const buttons = problemsFlexRef.value.querySelectorAll("button") + if (!buttons.length) return + const firstTop = buttons[0].offsetTop + let count = 0 + for (const btn of buttons) { + if (btn.offsetTop === firstTop) count++ + else break + } + if (count > 0) itemsPerRow.value = count +} + +useResizeObserver(problemsFlexRef, updateItemsPerRow) +watch(problems, async () => { + await nextTick() + updateItemsPerRow() +}) + +const visibleProblems = computed(() => + show.value ? problems.value : problems.value.slice(0, itemsPerRow.value * 3), +) + +const hasMoreProblems = computed( + () => problems.value.length > itemsPerRow.value * 3, +) + // 分组徽章接口 interface GroupedBadge { icon: string @@ -157,7 +191,18 @@ onMounted(init) align="center" v-if="!loading && profile" > - + {{ profile.user.username }} {{ profile.mood }} @@ -213,35 +258,24 @@ onMounted(init) {{ show ? "隐藏全部" : "显示全部" }} - + {{ id }} - - - - {{ id }} - - - - +
{{ profile.mood }}