searchRelation(field.relation, value)">
{{ optionLabel(option) }}
@@ -186,7 +186,7 @@
{{ formatValue(value) }}
- {{ displayValue(key, value) }}
+ {{ displayDetailValue(key, value) }}
@@ -1027,11 +1027,15 @@ function relationLabel(field: ResourceField, identity: string) {
const match = (relationOptions[field.relation ?? ''] ?? []).find(
(option) => String(option.identity) === identity,
);
- return match ? `${optionLabel(match)} · ${identity}` : identity;
+ if (!match) return identity;
+ return field.displayRelationLabel
+ ? optionLabel(match)
+ : `${optionLabel(match)} · ${identity}`;
}
function displayFieldValue(field: ResourceField, row: Row) {
const value = row[field.key] ?? row[`${field.key}_masked`];
+ if (value == null || value === '') return field.emptyText ?? '-';
if (field.options) {
const option = field.options.find((item) => item.value === value);
if (option) return option.label;
@@ -1044,6 +1048,19 @@ function displayFieldValue(field: ResourceField, row: Row) {
return displayValue(field.key, value);
}
+function displayDetailValue(key: string, value: unknown) {
+ const normalizedKey = key.endsWith('_masked')
+ ? key.slice(0, -'_masked'.length)
+ : key;
+ const field = props.definition.fields.find(
+ (item) => item.key === normalizedKey,
+ );
+ if (field?.displayRelationLabel) {
+ return displayFieldValue(field, { [field.key]: value });
+ }
+ return displayValue(key, value);
+}
+
function displayValue(key: string, value: unknown) {
if (value == null || value === '') return '-';
if (typeof value === 'boolean') return value ? '是' : '否';