+
+
+ {deliveryState}
+ {currentProtocol || '全部来源'}
+
+ {deliveryScopeText}
+
+ 面向客户交付时,先确认车辆、时间、交付物和质量提示,再导出位置、RAW 或字段明细,避免把内部排查过程直接暴露给客户。
+
+
+ } onClick={copyDeliveryPackage}>
+ 复制交付包
+
+
+
+
+
+
+ {[
+ {
+ label: '位置历史',
+ value: `${locations.total.toLocaleString()} 条`,
+ detail: `${validLocations.length.toLocaleString()} 个有效坐标,覆盖率 ${formatPercent(trajectoryCoverageRate)}。`,
+ color: locations.total > 0 ? 'green' as const : 'grey' as const,
+ action: '导出位置',
+ disabled: locations.items.length === 0,
+ onClick: exportLocations
+ },
+ {
+ label: '原始证据',
+ value: `${(rawFrames.total ?? 0).toLocaleString()} 帧`,
+ detail: '用于证明数据来自接入协议解析后的真实记录。',
+ color: (rawFrames.total ?? 0) > 0 ? 'blue' as const : 'grey' as const,
+ action: '导出RAW',
+ disabled: rawFrames.items.length === 0,
+ onClick: exportRawFrames
+ },
+ {
+ label: '字段明细',
+ value: `${rawFieldRows.length.toLocaleString()} 个`,
+ detail: selectedFieldCount > 0 ? `按 ${selectedFieldCount.toLocaleString()} 个字段裁剪。` : '需要字段级交付时切换字段明细。',
+ color: rawFieldRows.length > 0 ? 'green' as const : 'orange' as const,
+ action: '字段明细',
+ disabled: false,
+ onClick: () => openQueryTab('fields')
+ },
+ {
+ label: '质量提示',
+ value: anomalyTotal > 0 ? `${anomalyTotal.toLocaleString()} 项` : '无明显异常',
+ detail: anomalyTotal > 0
+ ? `断点 ${trajectoryAnomalies.gapCount.toLocaleString()} / 里程回退 ${trajectoryAnomalies.mileageRollbackCount.toLocaleString()} / 超速 ${trajectoryAnomalies.overspeedCount.toLocaleString()}。`
+ : '当前页未发现断点、里程回退或超速。',
+ color: anomalyTotal > 0 ? 'orange' as const : 'green' as const,
+ action: '复制说明',
+ disabled: false,
+ onClick: copyDeliveryPackage
+ }
+ ].map((item) => (
+
+ ))}
+
+
+