From 8b3076990c9fd820253b45a9c90e5a3934064e97 Mon Sep 17 00:00:00 2001 From: snowgitea Date: Fri, 3 Jul 2026 13:50:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20exportColumns=20posters=20=E5=88=97?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20formatter=20=E6=95=B0=E7=BB=84=E8=BD=AC?= =?UTF-8?q?=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/knowledge/views/film/index.vue | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/modules/knowledge/views/film/index.vue b/src/modules/knowledge/views/film/index.vue index 012c7d8..e7d5e61 100644 --- a/src/modules/knowledge/views/film/index.vue +++ b/src/modules/knowledge/views/film/index.vue @@ -286,6 +286,25 @@ const exportColumns = computed(() => { const cols: any[] = Table?.columns ? [...Table.columns] : []; const base = cols.filter((e: any) => !['selection', 'expand', 'index', 'op'].includes(e.type)); + // 为 posters 列添加 formatter(导出时 render 不会被调用,需要 formatter 将数组转为文本) + const postersCol = base.find((e: any) => e.prop === 'posters'); + if (postersCol) { + postersCol.formatter = (_row: any, _col: any, value: any) => { + if (Array.isArray(value)) { + return value.join(', '); + } + if (typeof value === 'string') { + try { + const parsed = JSON.parse(value); + return Array.isArray(parsed) ? parsed.join(', ') : value; + } catch { + return value; + } + } + return String(value || ''); + }; + } + base.push( { label: '国家', prop: 'country', width: 100 }, { label: '语言', prop: 'language', width: 100 },