只改界面文字和注释:网址 /problemset、接口、表名、字段名都不动,老链接照常能打开。 设计稿页名「题单重设计」和已执行的迁移文件保留原样。 线上 3 个成就(题单收藏家 / 入门 / 通关)已同步改名。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
959c326bc9
commit
1b703d13ae
68 files changed
+306
-306
No files matched your search
@@ -6,11 +6,11 @@ import type { Group } from '../series'
|
||||
import Medal from './Medal.vue'
|
||||
import SeriesRow from './SeriesRow.vue'
|
||||
|
||||
/** 一组成就线(做题 / 坚持 / …),「彩蛋」组末尾是还没找到的问号,「题单和比赛」组末尾是拿到的题单奖章 */
|
||||
/** 一组成就线(做题 / 坚持 / …),「彩蛋」组末尾是还没找到的问号,「专题和比赛」组末尾是拿到的专题奖章 */
|
||||
const props = defineProps<{ group: Group; badges?: UserBadge[]; compact?: boolean }>()
|
||||
|
||||
const theme = useThemeVars()
|
||||
const showBadges = computed(() => props.group.name === '题单和比赛' && !!props.badges?.length)
|
||||
const showBadges = computed(() => props.group.name === '专题和比赛' && !!props.badges?.length)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -27,7 +27,7 @@ const showBadges = computed(() => props.group.name === '题单和比赛' && !!pr
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="showBadges" class="badges">
|
||||
<span class="masked-title">拿到的题单奖章</span>
|
||||
<span class="masked-title">拿到的专题奖章</span>
|
||||
<div class="badge-list">
|
||||
<n-tooltip v-for="b in badges" :key="b.id" :delay="150">
|
||||
<template #trigger>
|
||||
@@ -36,7 +36,7 @@ const showBadges = computed(() => props.group.name === '题单和比赛' && !!pr
|
||||
<span>{{ b.badge.name }}</span>
|
||||
</router-link>
|
||||
</template>
|
||||
{{ b.badge.description }} · 来自题单「{{ b.problemSet.title }}」
|
||||
{{ b.badge.description }} · 来自专题「{{ b.problemSet.title }}」
|
||||
</n-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,9 +37,9 @@ const got = computed(() => data.value?.achievements.filter((item) => item.unlock
|
||||
const rarities: AchievementRarity[] = ['platinum', 'gold', 'silver', 'bronze']
|
||||
const countOf = (rarity: AchievementRarity) => got.value.filter((item) => item.rarity === rarity).length
|
||||
|
||||
// 桌面两栏:左边做题、其他、彩蛋,右边坚持、题单和比赛 —— 两边差不多高
|
||||
// 桌面两栏:左边做题、其他、彩蛋,右边坚持、专题和比赛 —— 两边差不多高
|
||||
const LEFT: GroupName[] = ['做题', '其他', '彩蛋']
|
||||
const RIGHT: GroupName[] = ['坚持', '题单和比赛']
|
||||
const RIGHT: GroupName[] = ['坚持', '专题和比赛']
|
||||
const pick = (names: GroupName[]) => groups.value.filter((group) => names.includes(group.name))
|
||||
|
||||
async function load() {
|
||||
|
||||
@@ -7,7 +7,7 @@ import type { Achievement } from 'utils/types'
|
||||
* 指标是后台可配的,这里没登记的指标归到「其他」、拿第一档的名字当线名 —— 不会丢,只是不好看,
|
||||
* 在后台加了新指标记得回来补一行。
|
||||
*/
|
||||
export const GROUPS = ['做题', '坚持', '题单和比赛', '其他', '彩蛋'] as const
|
||||
export const GROUPS = ['做题', '坚持', '专题和比赛', '其他', '彩蛋'] as const
|
||||
export type GroupName = (typeof GROUPS)[number]
|
||||
|
||||
interface MetricInfo {
|
||||
@@ -55,19 +55,19 @@ const METRICS: Record<string, MetricInfo> = {
|
||||
},
|
||||
submission_count: { group: '坚持', label: '交了几次', unit: '次', remain: (r) => `再交 ${r} 次` },
|
||||
problemset_completed: {
|
||||
group: '题单和比赛',
|
||||
label: '做完的题单',
|
||||
group: '专题和比赛',
|
||||
label: '做完的专题',
|
||||
unit: '个',
|
||||
remain: (r) => `再做完 ${r} 个题单`,
|
||||
remain: (r) => `再做完 ${r} 个专题`,
|
||||
},
|
||||
badge_count: {
|
||||
group: '题单和比赛',
|
||||
label: '题单奖章',
|
||||
group: '专题和比赛',
|
||||
label: '专题奖章',
|
||||
unit: '枚',
|
||||
remain: (r) => `再拿 ${r} 枚题单奖章`,
|
||||
remain: (r) => `再拿 ${r} 枚专题奖章`,
|
||||
},
|
||||
contest_joined: {
|
||||
group: '题单和比赛',
|
||||
group: '专题和比赛',
|
||||
label: '参加的比赛',
|
||||
unit: '场',
|
||||
remain: (r) => `再参加 ${r} 场比赛`,
|
||||
|
||||
Reference in new issue
Block a user