feat: 看板支持A/B组对比下钻 + 全屏 + 删除返回按钮 + 全系统组别(A/B)支持

This commit is contained in:
2026-09-08 19:44:45 +08:00
parent 6d14860b9c
commit 1b7683baab
7 changed files with 251 additions and 77 deletions
+5 -3
View File
@@ -287,7 +287,7 @@
const tb = $('#tbody');
if (!rows.length) {
tb.innerHTML = '<tr><td colspan="6" class="empty">' +
tb.innerHTML = '<tr><td colspan="7" class="empty">' +
(state.rows.length ? '没有匹配的记录' : '暂无提交记录') + '</td></tr>';
return;
}
@@ -300,6 +300,7 @@
'<td class="sid">' + esc(r.sid) + '</td>' +
'<td class="name">' + esc(r.name) + '</td>' +
'<td>' + esc(r.cls || '') + '</td>' +
'<td>' + esc(r.grp || '') + '</td>' +
'<td class="score num ' + scoreClass(r.score) + '">' + (r.score == null ? '-' : r.score) + '</td>' +
'<td class="num">' + esc(r.submit_at) + '</td>' +
'<td class="num">' + esc(r.duration_txt) + '</td>' +
@@ -325,11 +326,11 @@
const list = rosterForCls.filter(s => !submittedSids.has(s.sid));
const tb = $('#absentBody');
if (!list.length) {
tb.innerHTML = '<tr><td colspan="3" class="empty">' + (clsFilter ? '本班全部已提交 🎉' : '全部已提交 🎉') + '</td></tr>';
tb.innerHTML = '<tr><td colspan="4" class="empty">' + (clsFilter ? '本班全部已提交 🎉' : '全部已提交 🎉') + '</td></tr>';
return;
}
tb.innerHTML = list.map(a =>
'<tr><td class="sid">' + esc(a.sid) + '</td><td>' + esc(a.name) + '</td><td>' + esc(a.cls || '') + '</td></tr>').join('');
'<tr><td class="sid">' + esc(a.sid) + '</td><td>' + esc(a.name) + '</td><td>' + esc(a.cls || '') + '</td><td>' + esc(a.grp || '') + '</td></tr>').join('');
}
function renderUnmatched() {
@@ -425,6 +426,7 @@
'<td><input value="' + esc(r.sid) + '" data-f="sid"></td>' +
'<td><input value="' + esc(r.name) + '" data-f="name"></td>' +
'<td><input value="' + esc(r.cls || '') + '" data-f="cls" placeholder="可选"></td>' +
'<td><input value="' + esc(r.grp || '') + '" data-f="grp" placeholder="A/B"></td>' +
'<td><span class="link-del" data-del="' + gi + '">删除</span></td></tr>';
}).join('');
}
+29
View File
@@ -476,3 +476,32 @@ body.fs-on .topbar { padding-top: 8px; padding-bottom: 8px; }
.empty { text-align: center; color: var(--text-3); padding: 40px 0; }
/* 班级卡片:可点击进入该班详情 */
.class-card.clickable { cursor: pointer; }
.class-card.clickable:hover { border-color: var(--primary); }
.grp-tag {
display: inline-block; margin-top: 12px; padding: 2px 10px; border-radius: 999px;
font-size: 11px; font-weight: 600; color: var(--primary); background: var(--primary-weak);
}
/* 班级详情头部 */
.detail-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 18px; }
.detail-head h2 { margin: 0; font-size: 18px; font-weight: 700; }
/* 分组对比:A 在左、B 在右 */
.group-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 14px; }
@media (max-width: 860px) { .group-compare { grid-template-columns: 1fr; } }
.gpanel {
background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
padding: 16px 18px; box-shadow: var(--shadow);
}
.gpanel .ghead { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2px; }
.gpanel .ghead strong { font-size: 16px; }
.gpanel .ghead .rate-num { font-size: 15px; font-weight: 800; }
/* 看板全屏适配 */
body.fs-on .wrap { max-width: none; padding-top: 14px; }
body.fs-on .class-grid { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
body.fs-on .group-compare { grid-template-columns: 1fr 1fr; }
body.fs-on .dash-hero { border-radius: var(--radius); }