导出-每次考试/多考试对比: - 合格次数阈值等标记项抽为常显区块,三类成绩表共用 - 附缺考名单扩展到多考试导出(取所选考试全都没交的人) - 块表每场固定2列(成绩+合并空位),修复漏推空串导致的整行左移/串列 - 列宽按实际内容估算,合并区空位只给最小宽度 - 合格次数始终显示实际次数(含0),仅 ≥ 阈值标绿底 - 打印标题改为「成绩明细」,缺考名单分页单独成页 - 打印样式加 print-color-adjust:exact,绿底/红字可正常印出 数据大屏: - ?class= 班级大屏免登录公开访问,接口侧放行并按班级裁剪后回传 - 单班大屏移除退出按钮,仅首页保留 - 修复红绿判定真bug:membersTable 误用 window.DASH(DASH为let声明取不到) 改为 scoreGrade() 直接读自由变量,按后台合格率正确判红/黄/绿 测试/样例/文档同步更新,全量回归通过。
108 lines
5.0 KiB
Markdown
108 lines
5.0 KiB
Markdown
# 数据大屏
|
|
|
|
数据大屏(`dashboard.php`)是**面向投屏 / 大屏**的汇总视图,适合考试进行中实时监控提交进度。
|
|
它有两种形态,由 URL 决定:
|
|
|
|
| 形态 | 打开方式 | 长什么样 |
|
|
| --- | --- | --- |
|
|
| **首页(班级入口)** | 从主页面顶部导航 **📊 数据大屏** 打开,或直接访问 `dashboard.php` | 先选试卷 / 考试,下方以卡片列出该卷的所有班级;点卡片进入该班大屏 |
|
|
| **单班大屏** | 点首页的班级卡片(等价于 `dashboard.php?pid=<问卷ID>&class=<班级名>`) | 只展示这一个班:5 张汇总卡 + 分组对比 / 成员榜 |
|
|
|
|
首页是"入口",不是概览页——它不堆指标,只做一件事:让你**一次看到有哪些班,点进去看单个班**。
|
|
|
|
## 单班大屏是公开的,可以直接发链接
|
|
|
|
`dashboard.php?pid=<问卷ID>&class=<班级名>` **不需要登录**,任何人打开都能看到这一个班的数据
|
|
(顶栏带「公开 · 无需登录」角标)。适合直接把链接发到班级群让孩子或家长自己看。
|
|
|
|
::: danger 公开的是"这一个班",不是全卷
|
|
接口在**服务端**先按 `class` 把名单和答卷裁剪掉,再回传数据:公开链接拿不到全卷汇总,
|
|
也拿不到其它班级的成绩。想看别的班,打开那个班自己的链接即可;不带 `class` 参数的
|
|
大屏首页仍然要求登录。
|
|
:::
|
|
|
|
::: warning 单班大屏没有回头路
|
|
单班大屏**不显示**班级下拉、「← 主系统」和「退出」,页面内部也不存在回到首页的链接;
|
|
浏览器**后退键同样被屏蔽**(页面加载后立刻 `pushState` 占位,任何 `popstate` 都再推回去)。
|
|
想回主系统或换班,请在地址栏改 URL,或关闭标签页重新从首页进入。
|
|
:::
|
|
|
|
## 顶部控件
|
|
|
|
| 控件 | 首页 | 单班大屏 |
|
|
| --- | :-: | :-: |
|
|
| 问卷 / 考试 | ✅ | ✅ 切换后若该班不在新卷名单里,会自动落到第一个班 |
|
|
| 班级 | ✅ | ❌ 由 URL 固定,不提供切换 |
|
|
| 自动刷新开关 + 间隔 | ✅ | ✅ |
|
|
| 刷新 | ✅ | ✅ |
|
|
| ⛶ 全屏 | ✅ | ✅ |
|
|
| ← 主系统 | ✅ | ❌ 由 CSS 隐藏 |
|
|
| 退出 | ✅ | ❌ 页面里不再渲染 |
|
|
|
|
::: tip 后台标签页会自动暂停
|
|
切换到其他标签页后看板会**停止轮询**,切回来时立即补拉一次数据并重新开始计时——
|
|
投屏时长开也不会在无人观看时反复请求卷王。自动刷新失败时,「最后更新」会显示
|
|
**刷新中断(仍显示上次数据)**,鼠标悬停可看到具体原因。
|
|
:::
|
|
|
|
## 首页:班级入口卡片
|
|
|
|
每张卡片给出该班的速览,点整张卡片(或聚焦后按回车)进入该班大屏:
|
|
|
|
`总人数 / 已提交 / 缺考 / 平均分 / 合格率` + 一条提交率进度条;没交过卷的班也能一眼看到缺考数。
|
|
|
|
::: tip 首页也在自动刷新
|
|
首页同样受自动刷新开关控制(默认 15 秒),卡片上的数字会跟着变,适合把整层楼/整个年级的
|
|
提交进度投在一块屏上。
|
|
:::
|
|
|
|
## 汇总卡片(单班大屏)
|
|
|
|
`总人数 / 已提交 / 缺考 / 平均分 / 合格率(≥X%满分)`
|
|
|
|
合格率卡片的阈值标签会随 [每卷配置](./project-config.md) 实时变化。
|
|
|
|
## 成绩的红绿怎么定的
|
|
|
|
成员榜(以及「刷 N 次」下钻弹窗)里的成绩颜色**完全按 [每卷配置](./project-config.md) 里
|
|
管理员设的满分与合格率**判定,不是写死的:
|
|
|
|
| 占满分的比例 | 颜色 |
|
|
| --- | --- |
|
|
| ≥ 90%(合格线本身高过 90% 时则以合格线为准) | 🟢 绿 |
|
|
| ≥ 合格率 × 满分(合格但未达优秀) | 🟡 黄 |
|
|
| < 合格率 × 满分(不及格) | 🔴 红 |
|
|
|
|
例如把本卷满分改成 150、合格率改成 80%,那么 100 分只占 66.7% → 判红,130 分(86.7%)判黄,
|
|
145 分(96.7%)判绿。鼠标悬停在分数上会显示「占满分 xx% 合格线 xx 分」。
|
|
|
|
## 班级 / 组别下钻
|
|
|
|
(即单班大屏的主体部分)
|
|
|
|
看板主体按**班级**分块,每块内再按**组别**对比,指标与统计口径完全相同:
|
|
总人数、已提交、缺考、提交率、平均分、合格率、最高分、最低分、平均用时。
|
|
|
|
点击考过多次的成员(带「刷 N 次」标签)可查看其**每一次提交**(时间、成绩、时长),最佳成绩有标记。
|
|
按 `Esc` 或点击弹窗外部可关闭。
|
|
|
|
> 未分班的人归入「(未分班)」,未分组的人归入「(未分组)」,不会丢失。
|
|
|
|
## 常见问题
|
|
|
|
### 全屏按钮点了没反应
|
|
|
|
- 浏览器要求全屏必须由**用户手势**触发,脚本自动调用 `requestFullscreen()` 会被拒绝;
|
|
- 退出全屏调用的是 `document.exitFullscreen()`(注意不是 `document.documentElement`),
|
|
平台已修正过这一点;
|
|
- 若页面被嵌在 `<iframe>` 中,需要给 iframe 加 `allowfullscreen` 属性。
|
|
|
|
### 数据不更新
|
|
|
|
确认自动刷新开关打开;若结果缓存时间较长,点 **刷新** 会带 `force=1` 跳过缓存。
|
|
|
|
## 相关
|
|
|
|
- [成绩明细与统计口径](./scores.md)
|
|
- [系统设置](./settings.md)
|