From cfd4511378aefa04d4e06058cee628b6edd8e9c1 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 08 九月 2026 23:07:09 +0800
Subject: [PATCH] 统一三类报表测试详情的字段与交互

---
 src/utils/spliceSavedReport.ts |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/src/utils/spliceSavedReport.ts b/src/utils/spliceSavedReport.ts
index 21f46a6..667748e 100644
--- a/src/utils/spliceSavedReport.ts
+++ b/src/utils/spliceSavedReport.ts
@@ -1,8 +1,9 @@
+import { reportDetailsHtml } from './reportTestDetails'
 import { init, use } from 'echarts/core'
 import { LineChart } from 'echarts/charts'
 import { GridComponent, MarkLineComponent } from 'echarts/components'
 import { SVGRenderer } from 'echarts/renderers'
-import { getSplicePrintVersion, spliceFields, spliceFieldValue, spliceStatisticKey, spliceSourceValue, spliceExperiment, spliceSourceFields, spliceDetailValue, type SavedSpliceReport } from '@/api/spliceReports'
+import { getSplicePrintVersion, spliceFields, spliceFieldValue, spliceStatisticKey, spliceReportDetailColumn, type SavedSpliceReport } from '@/api/spliceReports'
 import { openSavedReportPrint } from './savedReportPrint'
 import css from './spliceSavedReport.css?inline'
 
@@ -115,13 +116,7 @@
     return `<article class="splice-chart" data-series-count="1"><h3>${metric.title} (${metric.unit})</h3><div class="splice-chart-plot">${svg}</div><div class="splice-legend"><span><i style="background:${color}"></i>接续曲线${record.settings.hiddenSeries ? '(已隐藏)' : ''}</span></div><div class="splice-legend">${segments.map((segment, index) => `<span>${cell(sourceName(index))} · ${segment.originalCycleNos.length ? `循环${segment.originalCycleNos[0]! + segment.offset}~${segment.originalCycleNos.at(-1)! + segment.offset}` : '无已保存循环'}</span>`).join('')}</div></article>`
   }).join('')
   if (chartsOnly) return `<div class="splice-snapshot">${charts}</div>`
-  const fields = spliceFields(record.settings)
-  const headers = segments.map((_, index) => `<th>${cell(sourceName(index))}</th>`).join('')
-  const overrides = record.settings.sourceDetailOverrides
-  const sourceDetails = overrides === undefined ? '' : `<section class="source-detail-section"><h2>来源测试详情</h2><table><thead><tr><th>字段</th>${headers}</tr></thead><tbody><tr><td>实验</td>${segments.map(segment => `<td>${escapeHtml(spliceDetailValue(segment, overrides))}</td>`).join('')}</tr>${spliceSourceFields(segments, overrides).map(field => `<tr><td>${cell(field.name)}(${field.category === 'battery' ? '电池字段' : '特殊字段'})</td>${segments.map(segment => `<td>${escapeHtml(spliceDetailValue(segment, overrides, field))}</td>`).join('')}</tr>`).join('')}</tbody></table></section>`
-  // 无独立详情设置的旧版仍使用其原字段结构,不猜补来源字段或改变历史行含义。
-  const legacyExperiment = overrides === undefined ? `<tr><td>实验</td>${segments.map(segment => `<td>${escapeHtml(spliceExperiment(segment, record.settings))}</td>`).join('')}</tr>` : ''
-  const details = `${sourceDetails}<section class="report-field-section"><h2>${overrides === undefined ? '测试详情' : '报表字段'}</h2><table><thead><tr><th>字段</th>${headers}</tr></thead><tbody>${legacyExperiment}${fields.map(field => `<tr><td>${cell(field.displayName)}${field.unit ? ` (${cell(field.unit)})` : ''}</td>${segments.map(segment => `<td>${escapeHtml(spliceSourceValue(segment, record.settings, field))}</td>`).join('')}</tr>`).join('')}</tbody></table></section>`
+  const details = `<section class="source-detail-section"><h2>测试详情</h2>${reportDetailsHtml(segments.map(spliceReportDetailColumn), record.settings.sourceDetailOverrides)}</section>`
   const sources = `<section><h2>来源顺序与循环对应</h2><table><thead><tr><th>来源</th><th>原循环号 → 拼接循环号</th></tr></thead><tbody>${segments.map((segment, index) => `<tr><td>${cell(sourceName(index))}</td><td>${segment.originalCycleNos.map(no => `${no} → ${no + segment.offset}`).join('、') || '无已保存循环'}</td></tr>`).join('')}</tbody></table></section>`
   const statistics = segments.map((segment, index) => `<section class="splice-statistics"><h2>${cell(sourceName(index))}</h2><table><thead><tr><th>原循环号</th><th>拼接循环号</th>${metrics.map(metric => `<th>${metric.title} (${metric.unit})</th>`).join('')}</tr></thead><tbody>${segment.originalCycleNos.map(no => `<tr><td>${no}</td><td>${no + segment.offset}</td>${metrics.map(metric => {
     const original = segment.statistics[String(no)]?.[metric.key]

--
Gitblit v1.7.1