| | |
| | | // 未填写才读取当前预览或保存快照的业务值,显式清空不被后续预览覆盖。 |
| | | if (detailFieldValues[field][key] === undefined) { |
| | | const source = sourceItems.value.find(value => compareSelectionKey(value.source.selection) === key) |
| | | detailFieldValues[field][key] = compareBusinessFieldValue(fieldDescriptor(field), source) |
| | | const sourceDetail = source?.source.consoleDetail |
| | | const sourceValue = sourceDetail?.fieldValues?.[field]?.[source.source.batteryNo] |
| | | detailFieldValues[field][key] = sourceValue !== undefined |
| | | ? sourceValue |
| | | : compareBusinessFieldValue(fieldDescriptor(field), source) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <thead><tr><th>字段</th><th v-for="(item, index) in detailTests" :key="detailKey(item)">对比项 {{ index + 1 }}</th><th v-if="!readonly">操作</th></tr></thead> |
| | | <tbody> |
| | | <tr class="detail-meta-row"><td>测试</td><td v-for="item in detailTests" :key="detailKey(item)">{{ item.name }}</td><td v-if="!readonly">-</td></tr> |
| | | <tr class="detail-meta-row"><td>实验</td><td v-for="item in detailTests" :key="detailKey(item)">{{ item.consoleDetail?.experimentName || item.experimentName || '' }}</td><td v-if="!readonly">-</td></tr> |
| | | <tr class="detail-meta-row"><td>电池组</td><td v-for="item in detailTests" :key="detailKey(item)">{{ item.batteryGroup || batteryGroup }}</td><td v-if="!readonly">-</td></tr> |
| | | <tr class="sample-row"><td>电池号</td><td v-for="item in detailTests" :key="detailKey(item)">{{ item.batteryNo }}</td><td v-if="!readonly">-</td></tr> |
| | | <tr v-for="field in detailFields" :key="field"><td>{{ compareFieldLabel(fieldDescriptor(field)) }}</td><td v-for="item in detailTests" :key="detailKey(item)"><el-input v-model="detailFieldValues[field][detailKey(item)]" :readonly="readonly" size="small" placeholder="请输入" /></td><td v-if="!readonly"><button v-if="specialFields.includes(field)" class="delete-link" type="button" @click="removeCustomField(field)">删除</button><span v-else class="field-lock">-</span></td></tr> |