feat(题单): 题单页重做——布置中的放最上面,详情顶上一条进度和奖章阶梯,没加入看得见题点不进;老师看全班、后台一屏编辑
Deploy / deploy (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s
- 列表:布置中的大卡片(做对几道、布置到哪天、再做对几道拿哪个奖章),其余小卡片,加入过的在前 - 详情:进度 + 奖章阶梯(下一个金圈「再做对 n 道」),题目两列写几点做对 / 交过几次; 以前做对过的标「旧代码先藏着」;做完整条变绿,烟花只在做完那一刻放 - 老师多一个「全班情况」页签;题目页从链接直接进来没加入时,条上给「加入题单」 - 后台一屏编辑:布置一周 / 两周 / 四周 / 选日期,公开开关,粘贴多个题号一次加,拖动排序,奖章只剩两种条件 - 旧代码藏着的地方都说清楚是哪个题单、哪天之后能看 - 修掉列表卡片把选做题数说成「新加了 N 题」 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8c53e28dcb
commit
c17f88cdbb
32 files changed
+2630
-2181
No files matched your search
@@ -0,0 +1,47 @@
|
||||
<script setup lang="ts">
|
||||
import { useThemeVars } from "naive-ui"
|
||||
import { getProblemSetLocks } from "oj/api"
|
||||
import { parseTime } from "utils/functions"
|
||||
import type { ProblemSetLock } from "utils/types"
|
||||
|
||||
/**
|
||||
* 「旧代码为什么藏着」那一句(设计稿「题单重设计」旧代码藏着时学生看到的):
|
||||
* 题单《X》布置中,这道题以前的代码先藏着 · 在题单里做对,或 M月D日 之后就能看。
|
||||
* 规则在后端 problemSetLockCutoffs;查不到是哪个题单(比如刚过期)就说通用的一句
|
||||
*/
|
||||
const props = defineProps<{ problem: { id: number } | { displayId: string } }>()
|
||||
const theme = useThemeVars()
|
||||
|
||||
const locks = ref<ProblemSetLock[]>([])
|
||||
|
||||
watch(
|
||||
() => ("id" in props.problem ? props.problem.id : props.problem.displayId),
|
||||
async () => {
|
||||
try {
|
||||
locks.value = await getProblemSetLocks(props.problem)
|
||||
} catch {
|
||||
locks.value = []
|
||||
}
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
const first = computed(() => locks.value[0])
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<span v-if="first">
|
||||
题单<router-link :to="{ name: 'problemset', params: { problemSetId: first.problemSetId } }"
|
||||
>《{{ first.title }}》</router-link
|
||||
>布置中,这道题以前的代码先藏着 · 在题单里做对,或
|
||||
{{ parseTime(first.assignedUntil, "M月D日") }} 之后就能看
|
||||
</span>
|
||||
<span v-else>这道题正在题单里布置,以前的代码先藏着 · 在题单里做对,或者布置期结束就能看</span>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
a {
|
||||
color: v-bind("theme.primaryColor");
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user