diff --git a/assets/app.js b/assets/app.js index 6acb325..4e1e497 100644 --- a/assets/app.js +++ b/assets/app.js @@ -236,13 +236,14 @@ } // 各面板计数文字按所选班级过滤(成绩明细 / 缺考名单) + // 缺考数与统计卡片保持一致:过滤后名单 − 过滤后提交(而非二次过滤后端 absent 数组) function renderHints() { const cls = $('#clsSel').value; const rowsForCls = cls ? state.rows.filter(r => (r.cls || '') === cls) : state.rows; const rosterForCls = cls ? (state.roster || []).filter(s => (s.cls || '') === cls) : (state.roster || []); - const absentForCls = cls ? state.absent.filter(a => (a.cls || '') === cls) : state.absent; + const absentForCls = Math.max(0, rosterForCls.length - rowsForCls.length); $('#tableHint').textContent = '共 ' + rowsForCls.length + ' 人已提交 · 名单 ' + rosterForCls.length + ' 人'; - $('#absentHint').textContent = absentForCls.length ? '共 ' + absentForCls.length + ' 人' : ''; + $('#absentHint').textContent = absentForCls ? '共 ' + absentForCls + ' 人' : ''; } function fmtDur(sec) { @@ -317,7 +318,11 @@ function renderAbsent() { const clsFilter = $('#clsSel').value; - const list = clsFilter ? state.absent.filter(a => (a.cls || '') === clsFilter) : state.absent; + // 与统计卡片保持一致:缺考 = 过滤后名单中未出现在提交记录里的学生(按 sid 匹配) + const rowsForCls = clsFilter ? state.rows.filter(r => (r.cls || '') === clsFilter) : state.rows; + const submittedSids = new Set(rowsForCls.map(r => r.sid).filter(Boolean)); + const rosterForCls = clsFilter ? (state.roster || []).filter(s => (s.cls || '') === clsFilter) : (state.roster || []); + const list = rosterForCls.filter(s => !submittedSids.has(s.sid)); const tb = $('#absentBody'); if (!list.length) { tb.innerHTML = '' + (clsFilter ? '本班全部已提交 🎉' : '全部已提交 🎉') + ''; diff --git a/assets/style.css b/assets/style.css index 1364cf3..101c11f 100644 --- a/assets/style.css +++ b/assets/style.css @@ -85,6 +85,22 @@ html, body { } .btn:hover { border-color: #c9d2e3; background: #fafbfe; } .btn:active { transform: translateY(1px); } +.btn:disabled, +.btn[disabled] { + opacity: .5; + cursor: not-allowed; + background: #eef1f6; + color: #a0aab8; + border-color: #d5dde8; + transform: none; + pointer-events: auto; +} +.btn-primary:disabled, +.btn-primary[disabled] { + background: #b0c0d8; + border-color: #b0c0d8; + color: #fff; +} .btn-primary { background: var(--primary); border-color: var(--primary); color: #fff; } .btn-primary:hover { background: #2559db; border-color: #2559db; } .btn.sm { padding: 5px 10px; font-size: 12px; } diff --git a/index.php b/index.php index 4117fc4..2ebc865 100644 --- a/index.php +++ b/index.php @@ -38,7 +38,7 @@ $rosterCount = Roster::count();
NY问卷考试系统数据平台 - 卷王问卷系统 · 实时数据统计 + 实时数据统计

请输入卷王系统连接信息,完成连接测试后登录。密码需每次输入,避免依赖一次配置直接查看数据。