feat: 学生报告改为流式排版并隐藏空数据区块

This commit is contained in:
2026-08-05 17:20:57 +08:00
parent fd39e1686a
commit 81e622fa09
9 changed files with 269 additions and 204 deletions

View File

@@ -1,7 +1,7 @@
import { Student } from '../entities/student.entity';
import { StudentProfile } from '../entities/student-profile.entity';
import { StudentEnrollment } from '../entities/student-enrollment.entity';
import { esc, pageFrame, pageFooter, pageHeader } from './archive-report.helpers';
import { esc, sectionFrame, sectionHeader, coverFooter } from './archive-report.helpers';
import { buildEnrollmentSection } from './archive-report.enrollment';
export function buildCover(
@@ -9,11 +9,22 @@ export function buildCover(
profile: StudentProfile | null,
enrollments: StudentEnrollment[],
now: string,
tocNames: string[],
): string {
const types = enrollments.map((e) => e.classType).filter(Boolean).join(' / ') || '-';
return pageFrame(`
${pageHeader('封面')}
const tocHtml =
tocNames.length > 0
? tocNames
.map(
(name, i) => `
<div class="toc-row"><span class="toc-index">${String(i + 1).padStart(2, '0')}</span><span class="toc-name">${esc(name)}</span></div>`,
)
.join('')
: '<div class="toc-row"><span class="toc-name muted">暂无章节</span></div>';
return sectionFrame(`
${sectionHeader('封面')}
<div class="cover-title">学生档案报告</div>
<div class="cover-subtitle">生成日期: ${esc(now)}</div>
<div class="cover-main">
@@ -40,16 +51,10 @@ export function buildCover(
</div>
</div>
</div>
<div class="toc">
<div class="toc-row"><span class="toc-index">01</span><span class="toc-name">基础信息与报读记录</span><span class="toc-page">第 2 页</span></div>
<div class="toc-row"><span class="toc-index">02</span><span class="toc-name">考试成绩总览</span><span class="toc-page">第 3 页</span></div>
<div class="toc-row"><span class="toc-index">03</span><span class="toc-name">出勤记录</span><span class="toc-page">第 4 页</span></div>
<div class="toc-row"><span class="toc-index">04</span><span class="toc-name">文化课考试成绩</span><span class="toc-page">第 5 页</span></div>
<div class="toc-row"><span class="toc-index">05</span><span class="toc-name">学情记录与录取归档</span><span class="toc-page">第 6 页</span></div>
</div>
<div class="toc">${tocHtml}</div>
<div class="watermark">恭学教育</div>
${pageFooter()}
`);
${coverFooter()}
`, true);
}
export function buildBasicInfo(
@@ -80,10 +85,9 @@ export function buildBasicInfo(
const enrollmentSection = buildEnrollmentSection(enrollments);
return pageFrame(`
${pageHeader('基础信息')}
return sectionFrame(`
${sectionHeader('基础信息')}
${infoCards}
${enrollmentSection}
${pageFooter()}
`);
}