# 数据大屏 数据大屏(`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`), 平台已修正过这一点; - 若页面被嵌在 `