From aa1c05f3d335dbc79aa28c61408abc5d1192ab5d Mon Sep 17 00:00:00 2001 From: zhhp33 <83486436+zhhp33@users.noreply.github.com> Date: Fri, 18 Apr 2025 16:02:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=A1=A8=E6=A0=BC=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=98=BE=E7=A4=BA=E4=B8=8E=E7=A9=BA=E5=80=BC=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化关联表、人员、部门等字段的显示效果,值为空时不再显示 [] --- table/src/App.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/table/src/App.js b/table/src/App.js index 875ea5e..b2c3deb 100644 --- a/table/src/App.js +++ b/table/src/App.js @@ -125,6 +125,51 @@ export default function () { }); } + // 解析JSON字符串并提取 name/departmentName 字段,若为空数组则返回空字符串 + function parseJsonAndGetName(value) { + if ( + value === undefined || + value === null || + value === '' || + value === 'undefined' + ) { + return ''; + } + try { + // 兼容数组或对象 + let parsedValue = value; + if (typeof value === 'string') { + parsedValue = JSON.parse(value); + } + if (Array.isArray(parsedValue)) { + if (parsedValue.length === 0) { + return ''; + } + // 取第一个对象的 name/fullname/departmentName 字段 + const item = parsedValue[0]; + if (item && item.name) { + return item.name; + } + if (item && item.fullname) { + return item.fullname; + } + if (item && item.departmentName) { + return item.departmentName; + } + } else if (parsedValue && parsedValue.name) { + return parsedValue.name; + } else if (parsedValue && parsedValue.fullname) { + return parsedValue.fullname; + } else if (parsedValue && parsedValue.departmentName) { + return parsedValue.departmentName; + } + } catch (e) { + // 非 JSON 字符串直接返回空字符串 + return ''; + } + return ''; + } + const columns = showFields.concat(subField).map(id => { const control = _.find(controls, { controlId: id }); if (control) { @@ -147,10 +192,17 @@ export default function () { if (row.isSub && row.key.includes('more') && subFieldcontrol.showControls.length <= index + 1) { return ( -
handleLoadMoreRelationRows(row.key.replace('more-', ''))}>查看更多>
+
handleLoadMoreRelationRows(row.key.replace('more-', ''))}>查看更多>
); } + // 新增:如果 value 是空数组或 '[]',直接返回空字符串 + if (value === '[]' || (Array.isArray(value) && value.length === 0)) { + return ''; + } + // 优先显示 name 字段 + const name = parseJsonAndGetName(value); + if (name) return name; return ; }, onCell: (row) => { @@ -175,6 +227,13 @@ export default function () { dataIndex: control.controlId, ...baseConfig, render: (value) => { + // 新增:如果 value 是空数组或 '[]',直接返回空字符串 + if (value === '[]' || (Array.isArray(value) && value.length === 0)) { + return ''; + } + // 优先显示 name 字段 + const name = parseJsonAndGetName(value); + if (name) return name; return ; }, onCell: (row, index) => {