fix: 登录按钮禁用可见样式 + 副标题简化 + 缺考人数与统计卡片一致
This commit is contained in:
+8
-3
@@ -236,13 +236,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 各面板计数文字按所选班级过滤(成绩明细 / 缺考名单)
|
// 各面板计数文字按所选班级过滤(成绩明细 / 缺考名单)
|
||||||
|
// 缺考数与统计卡片保持一致:过滤后名单 − 过滤后提交(而非二次过滤后端 absent 数组)
|
||||||
function renderHints() {
|
function renderHints() {
|
||||||
const cls = $('#clsSel').value;
|
const cls = $('#clsSel').value;
|
||||||
const rowsForCls = cls ? state.rows.filter(r => (r.cls || '') === cls) : state.rows;
|
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 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 + ' 人';
|
$('#tableHint').textContent = '共 ' + rowsForCls.length + ' 人已提交 · 名单 ' + rosterForCls.length + ' 人';
|
||||||
$('#absentHint').textContent = absentForCls.length ? '共 ' + absentForCls.length + ' 人' : '';
|
$('#absentHint').textContent = absentForCls ? '共 ' + absentForCls + ' 人' : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function fmtDur(sec) {
|
function fmtDur(sec) {
|
||||||
@@ -317,7 +318,11 @@
|
|||||||
|
|
||||||
function renderAbsent() {
|
function renderAbsent() {
|
||||||
const clsFilter = $('#clsSel').value;
|
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');
|
const tb = $('#absentBody');
|
||||||
if (!list.length) {
|
if (!list.length) {
|
||||||
tb.innerHTML = '<tr><td colspan="3" class="empty">' + (clsFilter ? '本班全部已提交 🎉' : '全部已提交 🎉') + '</td></tr>';
|
tb.innerHTML = '<tr><td colspan="3" class="empty">' + (clsFilter ? '本班全部已提交 🎉' : '全部已提交 🎉') + '</td></tr>';
|
||||||
|
|||||||
@@ -85,6 +85,22 @@ html, body {
|
|||||||
}
|
}
|
||||||
.btn:hover { border-color: #c9d2e3; background: #fafbfe; }
|
.btn:hover { border-color: #c9d2e3; background: #fafbfe; }
|
||||||
.btn:active { transform: translateY(1px); }
|
.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 { background: var(--primary); border-color: var(--primary); color: #fff; }
|
||||||
.btn-primary:hover { background: #2559db; border-color: #2559db; }
|
.btn-primary:hover { background: #2559db; border-color: #2559db; }
|
||||||
.btn.sm { padding: 5px 10px; font-size: 12px; }
|
.btn.sm { padding: 5px 10px; font-size: 12px; }
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ $rosterCount = Roster::count();
|
|||||||
<span class="logo">NY</span>
|
<span class="logo">NY</span>
|
||||||
<div class="brand-text">
|
<div class="brand-text">
|
||||||
<strong>NY问卷考试系统数据平台</strong>
|
<strong>NY问卷考试系统数据平台</strong>
|
||||||
<small>卷王问卷系统 · 实时数据统计</small>
|
<small>实时数据统计</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="login-tip">请输入卷王系统连接信息,完成连接测试后登录。密码需每次输入,避免依赖一次配置直接查看数据。</p>
|
<p class="login-tip">请输入卷王系统连接信息,完成连接测试后登录。密码需每次输入,避免依赖一次配置直接查看数据。</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user