feat(点评): 点评轮盘换成一排大按钮,选之前不显示人数,选完看大家怎么选、直接去下一题

- 七个选项不变,排成 4 + 3 的大按钮(表情 + 15px 的字)。原来的轮盘要把鼠标移到扇区上
  才看得清,每块的字只有 12px 左右;还用了 Chrome 111 才有的 color-mix(),机房 105 那档
  渲染不出扇区底色
- 选之前不显示「N 人选择」,免得跟风;选完换成横条图,标出自己选的那一项
- 防误触:弹出后 600ms 内点不了,强制弹窗里不响应 Enter / 空格,也不预选任何一项
- 选完弹窗不马上关,下面只有一个按钮、焦点就在上面:这节课的「下一题」,或者刚才被拦下
  的换题「继续」,都没有就是「好的」
- 标题从「恭喜你成功提交」改成「做对了!」:交上去不等于做对
- 提交失败留在弹窗里提示「没记上,再点一次」;没做对的人在抽屉里只看到一句说明

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-09-28 16:22:48 +08:00
1 parent 116b0a2c95
commit c64b0a402b
5 files changed
+304 -550

No files matched your search

@@ -8,9 +8,7 @@ import { useLessonStore } from "oj/store/lesson"
* 这节课的题就是首页「班里在做」那几道,和左栏顶上的课堂条读同一份(lesson store);
* 通过的那一刻课堂条已经把这道标成做完、并且重拉了一次。
*
* 「下一道」是按列表顺序排在这道**后面**、还没通过的第一道,后面都做完了再从头找 ——
* 学生常常跳着做,先做完了第 3 道再回头做第 1 道。当前这道本身不看它的 myStatus:
* 重拉回来之前,它还是通过之前那一刻的状态。
* 「下一道」怎么算见 lesson store 的 nextAfter,AC 后的点评弹窗里那个「下一题」也用它。
*
* 这道题不在这节课的列表里(学生在做别的)就什么都不显示。
*/
@@ -24,16 +22,7 @@ const lessonStore = useLessonStore()
// 一般课堂条早就拉过了,这里只是兜底(旧了才拉)
onMounted(() => lessonStore.load())
const lesson = computed(() => {
const list = lessonStore.activity?.problems ?? []
const current = props.problemDisplayId.toLowerCase()
const index = list.findIndex((item) => item.problemDisplayId.toLowerCase() === current)
if (index < 0) return null
const rest = [...list.slice(index + 1), ...list.slice(0, index)].filter(
(item) => item.myStatus !== "accepted",
)
return { total: list.length, next: rest[0] ?? null, remaining: rest.length }
})
const lesson = computed(() => lessonStore.nextAfter(props.problemDisplayId))
const label = computed(() => lessonStore.label)
</script>