feat(统计): 「今日统计」「数据统计」合成一个「统计」,打开是一行一节课,这节课在最上面
Deploy / deploy (push) Canceled after 0s

老师的提交列表上只剩一个「统计」按钮;什么都没筛时按课列(选「今天」就是原来今日统计看的),
点一行进那节课(班、题、时段都带好),左上「← 全部」回来;只填题号时仍按班级汇总,和题目页
统计页签对得上。数字行加结果条,统计里的「课堂看板」按钮去掉,改成有班正在上课时才引过去。
学生仍是「今日统计」。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-09-30 09:23:54 +08:00
1 parent 921990285c
commit e3be3cd62c
11 files changed
+891 -550

No files matched your search

@@ -15,7 +15,7 @@ import { useProblemPageContext } from "../composables/problemPageContext"
/**
* 「统计」页签(设计稿「题目页统计重设计」学生 A)。讲的是**这道题**:难不难 → 大家几次
* 做对 → 常错在哪,全部按人算。学生多一行「你们班」、自己卡住了再多一张卡;老师多一张
* 各班的表(只到班级这一层,不选班、不列人 —— 按人看是提交页「数据统计」的活)。
* 各班的表(只到班级这一层,不选班、不列人 —— 按人看是提交页「统计」的活)。
* 原来的描述表、击败用户、饼图、历年 AC 率都去掉了。
*/
const emit = defineEmits<{ openSubmissions: [] }>()
@@ -139,7 +139,7 @@ const hiddenClasses = computed(
() => (stats.value?.classes?.length ?? 0) - shownClasses.value.length,
)
/** 点一个班、或者表下面那行:去提交页的「数据统计」按人看(新标签,题目页不动) */
/** 点一个班、或者表下面那行:去「统计」按人看(新标签,题目页不动) */
function openStatistics(className?: string) {
const href = router.resolve({
name: "statistics",
@@ -273,7 +273,7 @@ function segmentWidth(value: number, total: number) {
</div>
</div>
<!-- 老师:各班一行,和数据统计「按班级汇总」同一份数;按人看去那边 -->
<!-- 老师:各班一行,和统计「按班级汇总」同一份数;按人看去那边 -->
<div v-if="stats.classes?.length" class="section">
<b>各班做得怎样</b>
<table class="classes">
@@ -292,7 +292,7 @@ function segmentWidth(value: number, total: number) {
v-for="item in shownClasses"
:key="item.className ?? ''"
:class="{ pickable: item.className }"
:title="item.className ? '去数据统计看这个班的每个人' : undefined"
:title="item.className ? '新标签看这个班的每个人' : undefined"
@click="item.className && openStatistics(item.className)"
>
<td>
@@ -332,7 +332,7 @@ function segmentWidth(value: number, total: number) {
</a>
<span class="spacer"></span>
<a href="#" class="link small" @click.prevent="openStatistics()">
按人看谁没做对,去数据统计 <Icon icon="ph:arrow-square-out" :width="13" />
按人看谁没做对 <Icon icon="ph:arrow-square-out" :width="13" />
</a>
</div>
</div>