import type { CompareField, CompareItem, CompareSettings } from '@/api/compareReports'
|
|
/** 新版本按冻结结构排序,旧版本沿用原字段名称和分类次序。 */
|
export function compareFields(settings: Pick<CompareSettings, 'batteryTemplateFields' | 'specialFields' | 'fieldStructure'>): CompareField[] {
|
const names = [...settings.batteryTemplateFields, ...settings.specialFields]
|
const ordered = [...new Set([...(settings.fieldStructure || []).map(field => field.name).filter(name => names.includes(name)), ...names])]
|
return ordered.map(name => {
|
const category = settings.batteryTemplateFields.includes(name) ? 'battery' : 'special'
|
const saved = settings.fieldStructure?.find(field => field.name === name && field.category === category)
|
return saved || { name, displayName: name, unit: '', category }
|
})
|
}
|
|
export function compareFieldLabel(field: CompareField) {
|
return `${field.displayName || field.name}${field.unit ? ` (${field.unit})` : ''}`
|
}
|
|
/** 有共享编号时只按编号匹配,定义改名或同名字段均不能把值归入错误字段。 */
|
export function compareBusinessFieldValue(field: CompareField, item?: CompareItem) {
|
if (field.category !== 'battery') return ''
|
return item?.businessFields.find(value => field.fieldDefinitionId != null
|
? value.fieldDefinitionId === field.fieldDefinitionId : value.fieldName === field.name)?.fieldValue ?? ''
|
}
|