yeg
4 天以前 f4d7007b89cf565746af4623623a294b82666ff1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 ?? ''
}