From 3035094e22588e59f026eb47988421f7d589bdf0 Mon Sep 17 00:00:00 2001 From: Codex Date: Fri, 26 Jun 2026 15:11:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E4=B8=8A=E8=AF=BE=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E8=A1=A8=E6=B7=BB=E5=8A=A0=E5=88=86=E7=BB=84=E5=BA=8F=E5=8F=B7?= =?UTF-8?q?=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app/static/app.js | 20 ++++++++++++-------- app/app/static/index.html | 7 ++++--- app/app/static/styles.css | 5 +++++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/app/static/app.js b/app/app/static/app.js index 2df6b19..07fa2d8 100644 --- a/app/app/static/app.js +++ b/app/app/static/app.js @@ -44,6 +44,7 @@ const WEEKDAYS = ["星期日", "星期一", "星期二", "星期三", "星期四 const COPY_LINE_BREAK = "\r\n"; const SORT_DIRECTIONS = { asc: 1, desc: -1 }; const RECORD_PAGE_SIZE = 30; +const RECORD_TABLE_COLUMN_COUNT = 8; let currentRecords = []; let recordSort = { date: "asc", time: "asc" }; let currentRecordOrder = []; @@ -241,7 +242,7 @@ function toggleRecordSort(field) { renderCurrentRecords(); } -function renderRecordRow(row) { +function renderRecordRow(row, rowNumber) { const key = row._recordKey; const corrected = correctedRecords.get(key); const displayRow = getDisplayRecord(row); @@ -251,6 +252,7 @@ function renderRecordRow(row) { const badge = corrected ? '已修改' : ""; const summaryExpanded = expandedSummaryRecords.has(key); return ` + ${escapeHtml(rowNumber)} ${escapeHtml(displayRow.date)} ${escapeHtml(displayRow.weekday)} ${escapeHtml(displayRow.time)} ${escapeHtml(displayRow.student)} @@ -298,7 +300,7 @@ function renderSummaryEntry(summary, recordKey, index) { function renderSummaryMissingRow(key, expanded) { return ` - +
无课程小结 @@ -312,23 +314,25 @@ function renderGroupedRecords(records) { return groupRecordsByTeacher(records) .map( (group) => { + let displayIndex = 0; const collapsed = collapsedTeacherGroups.has(group.teacher); const rows = collapsed ? "" : sortRecordsForDisplay(group.records) .map((row) => { + displayIndex += 1; currentRecordOrder.push(row._recordKey); const summaryCount = Number(row.summary_count || 0); const summaryRow = summaryCount ? ` - ${(row.summaries || []).map((summary, index) => renderSummaryEntry(summary, row._recordKey, index)).join("")} + ${(row.summaries || []).map((summary, index) => renderSummaryEntry(summary, row._recordKey, index)).join("")} ` : renderSummaryMissingRow(row._recordKey, expandedSummaryRecords.has(row._recordKey)); - return `${renderRecordRow(row)}${summaryRow}`; + return `${renderRecordRow(row, displayIndex)}${summaryRow}`; }) .join(""); return ` - +
- + diff --git a/app/app/static/styles.css b/app/app/static/styles.css index 6a19de6..af73644 100644 --- a/app/app/static/styles.css +++ b/app/app/static/styles.css @@ -1392,6 +1392,11 @@ td { color: var(--muted); } +.record-index-cell { + color: var(--muted); + font-variant-numeric: tabular-nums; +} + .record-row { cursor: pointer; }