Files
ny-exam-platform/docs/guide/dashboard.md
T
nxxy335 d05fd4a9b5 feat(export/dashboard): 导出增强与大屏公开化
导出-每次考试/多考试对比:
- 合格次数阈值等标记项抽为常显区块,三类成绩表共用
- 附缺考名单扩展到多考试导出(取所选考试全都没交的人)
- 块表每场固定2列(成绩+合并空位),修复漏推空串导致的整行左移/串列
- 列宽按实际内容估算,合并区空位只给最小宽度
- 合格次数始终显示实际次数(含0),仅 ≥ 阈值标绿底
- 打印标题改为「成绩明细」,缺考名单分页单独成页
- 打印样式加 print-color-adjust:exact,绿底/红字可正常印出

数据大屏:
- ?class= 班级大屏免登录公开访问,接口侧放行并按班级裁剪后回传
- 单班大屏移除退出按钮,仅首页保留
- 修复红绿判定真bug:membersTable 误用 window.DASH(DASH为let声明取不到)
  改为 scoreGrade() 直接读自由变量,按后台合格率正确判红/黄/绿

测试/样例/文档同步更新,全量回归通过。
2026-09-27 22:04:17 +08:00

5.0 KiB
Raw Blame History

数据大屏

数据大屏(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%满分)

合格率卡片的阈值标签会随 每卷配置 实时变化。

成绩的红绿怎么定的

成员榜(以及「刷 N 次」下钻弹窗)里的成绩颜色完全按 每卷配置 里 管理员设的满分与合格率判定,不是写死的:

占满分的比例 颜色
≥ 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 跳过缓存。

相关