feat(tab): 表格列显示后端 stringify 文本(displayLabel=${key}_label)

配合 shrimp-server v0.6.3:tab 字段本体端到端是对象(编辑回显正常),
表格展示改用后端算好的 ${key}_label 字符串,与 relation/textarea 的 _label 约定一致。
FieldTab.display 优先渲染 displayLabel,无则回退旧的对象标签逻辑。
This commit is contained in:
2026-06-29 15:47:29 +08:00
parent ebe5937fb6
commit 8ac1427015
3 changed files with 8 additions and 3 deletions
+1 -1
View File
@@ -29,7 +29,7 @@
<slot :name="`column-${field.key}`" :row="row" :field="field">
<component :is="vueAdmin.getFieldComponent(moduleKey, field.type, field.key)" :field="field"
:model-value="row[field.key]" mode="display"
v-bind="field.type === 'relation' || field.type === 'textarea' ? { displayLabel: row[field.key + '_label'] } : {}" />
v-bind="field.type === 'relation' || field.type === 'textarea' || field.type === 'tab' ? { displayLabel: row[field.key + '_label'] } : {}" />
</slot>
</template>
</el-table-column>
+6 -1
View File
@@ -1,6 +1,10 @@
<template>
<template v-if="mode === 'display'">
<span v-if="!modelValue || typeof modelValue !== 'object'">-</span>
<!-- 表格列展示后端算好的 stringify 文本(displayLabel=${key}_label);本体仍是对象,供编辑/逻辑用 -->
<el-tooltip v-if="displayLabel" :content="String(displayLabel)" placement="top">
<span class="tab-display">{{ displayLabel }}</span>
</el-tooltip>
<span v-else-if="!modelValue || typeof modelValue !== 'object'">-</span>
<el-tooltip v-else :content="JSON.stringify(modelValue, null, 2)" placement="top">
<span class="tab-display">{{ displayText }}</span>
</el-tooltip>
@@ -35,6 +39,7 @@ const props = defineProps<{
modelValue: any
mode: 'display' | 'edit' | 'filter'
disabled?: boolean
displayLabel?: string
}>()
const emit = defineEmits<{