From 6a4d0063ffd7f71ea2d508673b1f1b13c2cce88d Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Tue, 24 Jun 2025 15:36:22 +0800 Subject: [PATCH] feat: add cellTag --- apps/web-antd/src/adapter/vxe-table.ts | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-antd/src/adapter/vxe-table.ts index 7afff14f0..f2816cb13 100644 --- a/apps/web-antd/src/adapter/vxe-table.ts +++ b/apps/web-antd/src/adapter/vxe-table.ts @@ -24,6 +24,7 @@ import { ImagePreviewGroup, Popconfirm, Switch, + Tag, } from 'ant-design-vue'; import { DictTag } from '#/components/dict-tag'; @@ -113,6 +114,35 @@ setupVbenVxeTable({ }, }); + // 表格配置项可以用 cellRender: { name: 'CellTag' }, + vxeUI.renderer.add('CellTag', { + renderTableDefault(renderOpts, params) { + const { props } = renderOpts; + const { column, row } = params; + return h(Tag, { color: props?.color }, () => row[column.field]); + }, + }); + + vxeUI.renderer.add('CellTags', { + renderTableDefault(renderOpts, params) { + const { props } = renderOpts; + const { column, row } = params; + if (!row[column.field] || row[column.field].length === 0) { + return ''; + } + return h( + 'div', + { class: 'flex items-center justify-center' }, + { + default: () => + row[column.field].map((item: any) => + h(Tag, { color: props?.color }, { default: () => item }), + ), + }, + ); + }, + }); + // 表格配置项可以用 cellRender: { name: 'CellDict', props:{dictType: ''} }, vxeUI.renderer.add('CellDict', { renderTableDefault(renderOpts, params) {