fix(lab-sample): 台账改聚合真实市场生产质检数据

去掉 Excel 演示独有行,源表字段优先于补充表;按协议样本与科研捐献接收关联已发生业务数据,并修复导出分页超限。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-11-12 15:41:26 +08:00
1 parent 77d45d0bc5
commit 5698a9dfc4
4 files changed
+197 -40

No files matched your search

@@ -275,15 +275,28 @@
async function handleExport() {
exporting.value = true
try {
const res = await fetchLabSampleList(props.dataset, {
keyword: searchForm.keyword || undefined,
dateFrom: dateRange.value?.[0],
dateTo: dateRange.value?.[1],
page: 1,
pageSize: 5000
})
const cols = res?.fields?.length ? res.fields : fields.value
const rows = res?.list || []
// 列表接口 pageSize 上限为 200,导出需分页拉全量后再生成 xlsx
const pageSize = 200
let page = 1
let total = Number.POSITIVE_INFINITY
const rows: Record<string, any>[] = []
let cols = fields.value
while (rows.length < total) {
const res = await fetchLabSampleList(props.dataset, {
keyword: searchForm.keyword || undefined,
dateFrom: dateRange.value?.[0],
dateTo: dateRange.value?.[1],
page,
pageSize
})
if (res?.fields?.length) cols = res.fields
total = Number(res?.total ?? 0)
const batch = res?.list || []
rows.push(...batch)
if (!batch.length || batch.length < pageSize) break
page += 1
if (page > 500) break
}
const ExcelJS = (await import('exceljs')).default
const workbook = new ExcelJS.Workbook()
const sheet = workbook.addWorksheet(props.title || props.dataset)