Tui

Table 表格
提供灵活的数据渲染能力,支持基础表格、内容省略处理、自定义列渲染、展开行等多种形式。 相较于传统 UI 框架,配置更简洁,插槽更灵活。
常用的表格渲染,可拓展,优势:相较于Element Plus 不需要在写繁琐杂乱的slot插槽来渲染。
auto-fit:自适应宽度, width:固定宽度
table 默认会根据 columns 中的 width 来计算自适应宽度, 如果 width 设置了固定宽度, 除设置了 width 的列不会自适应, 其他列会自适应。
table 设置了 auto-fit: false, 则会根据 columns 中的 width 来计算默认最小宽度, 保证内容在 maxWidth 内不会被截断。
大数据场景建议启用 virtualScroll,并配合 fixedHeader + maxHeight + singleLine 使用。
基础用法
最基本的数据渲染,使用 columnsdataSource 完成表格结构渲染。
name
age
address
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black
32
Sydney No. 1 Lake Park
示例代码
vue
固定表头
通过 fixedHeader + maxHeight 开启表体区域滚动,表头保持固定。
name
age
address
User 1
20
Road 1, City Center
User 2
21
Road 2, City Center
User 3
22
Road 3, City Center
User 4
23
Road 4, City Center
User 5
24
Road 5, City Center
User 6
25
Road 6, City Center
User 7
26
Road 7, City Center
User 8
27
Road 8, City Center
User 9
28
Road 9, City Center
User 10
29
Road 10, City Center
User 11
30
Road 11, City Center
User 12
31
Road 12, City Center
User 13
32
Road 13, City Center
User 14
33
Road 14, City Center
User 15
34
Road 15, City Center
User 16
20
Road 16, City Center
User 17
21
Road 17, City Center
User 18
22
Road 18, City Center
User 19
23
Road 19, City Center
User 20
24
Road 20, City Center
User 21
25
Road 21, City Center
User 22
26
Road 22, City Center
User 23
27
Road 23, City Center
User 24
28
Road 24, City Center
示例代码
vue
固定宽度 + 宽度自适应
cloumns 中配置 width 为固定宽度, 默认为自适应宽度
产品编号
产品名称
供应商ID
供应商密钥
库存数量
保质期(天)
商品出厂时间
商品检验时间
上架时间
更新时间
PRD-001
智能手表 X1
SUP-100
sec-abc123xyz82abc123xyz82881881
120
365
2025-01-15 10:22:33
2025-03-20 15:10:12
2025-01-15 10:22:33
2025-03-20 15:10:12
示例代码
vue
多行文本展示展示
支持多行文本内容的展示,适用于字段内容较长的场景。内容会自动换行显示,保证表格布局的整洁性和可读性。
name
age
address
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black is a good name
32
Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park
示例代码
vue
自动省略展示
使用 showOverflowTooltip 属性,当单元格内容超出列宽时,自动显示省略号,并在悬浮时展示完整内容。 适用于无需自定义内容的列,配置简单高效。
name
age
address
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black is a good name
32
Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park
示例代码
vue
自定义内容 + 悬浮展示
通过 slot 接管列渲染,并手动使用 tooltip 组件展示完整信息。适用于内容结构复杂、需定制格式的场景。
name
age
address
John Brown
32 -- 我接管了这里的内容来超出悬浮展示,你看不到我,你看不到我,你看不到我, 这是一个很长的文案来保证超出悬浮效果展示
New York No. 1 Lake Park
Jim Green
42 -- 我接管了这里的内容来超出悬浮展示,你看不到我,你看不到我,你看不到我, 这是一个很长的文案来保证超出悬浮效果展示
London No. 1 Lake Park
Joe Black
32 -- 我接管了这里的内容来超出悬浮展示,你看不到我,你看不到我,你看不到我, 这是一个很长的文案来保证超出悬浮效果展示
Sydney No. 1 Lake Park
注意:使用 slot 自定义渲染内容时,请确保自行处理 overflow 样式,避免内容溢出遮挡其他列。
示例代码
vue
展开行(expand)
使用特殊 key 为 expand 的列配置项,即可开启每行的展开功能。也可以通过 slot 渲染自定义的展开内容,并使用 closeExpand() 在点击后主动关闭弹层。
默认 expandList(点击项后自动关闭)
name
age
address
操作
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black is a good name
32
Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park
自定义 expand 插槽(手动调用 closeExpand)
name
age
address
操作
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black is a good name
32
Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park, Sydney No. 1 Lake Park
示例代码
vue
边框效果
通过设置 border 属性控制表格边框样式。支持 boolean / string / null,默认为 false。 可选值如 truefalse,用于满足不同的表格样式需求。
name
age
address
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black
32
Sydney No. 1 Lake Park
示例代码
vue
序号列
设置列 key 为 index 可启用序号列,快速展示当前行的序号。可与 render 配合自定义显示内容。
index
name
age
address
1
John Brown
32
New York No. 1 Lake Park
2
Jim Green
42
London No. 1 Lake Park
3
Joe Black
32
Sydney No. 1 Lake Park
示例代码
vue
多选列 + 禁用条件
设置列 key 为 selection 可启用多选功能,配合 disabled 函数可控制某些行无法选择。 常用于状态为“已处理”等不允许用户修改的场景。
name
age
address
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
Joe Black
32
Sydney No. 1 Lake Park
示例代码
vue
动态渲染计算宽度
支持根据 dataSource 的数据变化自动动态计算表格宽度。
name
age
address
John Brown
32
New York No. 1 Lake Park
示例代码
vue
表格数据为空时展示空缺效果
根据 responsive 动态响应表格数据的变化,并展示空缺效果。
name
age
address
操作
暂无数据
示例代码
vue
函数渲染列
使用 render 函数可自定义列内容渲染方式,适用于不依赖插槽、需动态生成结构的场景。
name
age
address
John Brown
32岁
New York No. 1 Lake Park
Jim Green
42岁
London No. 1 Lake Park
Joe Black
32岁
Sydney No. 1 Lake Park
示例代码
vue
children 数据的表格
提供一级子级 children 数据。
name
age
address
action
John Brown
32
New York No. 1 Lake Park
Jim Green
42
London No. 1 Lake Park
his brother
32
Sydney No. 1 Lake Park
his sister
30
Sydney No. 1 Lake Park
Joe Black
32
Sydney No. 1 Lake Park
示例代码
vue
横向滚动 + 大数据虚拟滚动
当列较多且数据量较大(如 750 行)时,推荐使用 fixedHeader + maxHeight + singleLine + virtualScroll 组合,降低渲染和销毁卡顿。
固定表头 + 基础横向滚动
产品编号
产品名称
供应商ID
供应商密钥
库存数量
保质期(天)
是否热销
是否新品
支持配送区域
是否包邮
是否限购
商品类型
上架时间
更新时间
操作
PRD-002
蓝牙耳机 AirLite
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-01 09:12:45
2025-03-21 11:00:00
PRD-003
空气净化器 Pro
SUP-102
sec-555aaa7770555aaa77708s82jskak8s82jskak
300
720
全国
家用电器
2025-02-10 14:35:20
2025-03-22 13:25:56
PRD-003
空气净化器 Pro
SUP-102
sec-555aaa7770555aaa77708s82jskak8s82jskak
300
720
全国
家用电器
2025-02-10 14:35:20
2025-03-22 13:25:56
大数据 + 固定列 + 虚拟滚动(750 行)
推荐配置: fixedHeader + maxHeight + singleLine + virtualScroll ,并为大部分列设置 width
产品编号
产品名称
供应商ID
供应商密钥
库存数量
保质期(天)
是否热销
是否新品
支持配送区域
是否包邮
是否限购
商品类型
上架时间
更新时间
操作
PRD-1
商品 1
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-10 14:35:20
2025-03-10 13:25:56
详情 · PRD-1
PRD-2
商品 2
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-11 14:35:20
2025-03-11 13:25:56
详情 · PRD-2
PRD-3
商品 3
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-12 14:35:20
2025-03-12 13:25:56
详情 · PRD-3
PRD-4
商品 4
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-13 14:35:20
2025-03-13 13:25:56
详情 · PRD-4
PRD-5
商品 5
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-14 14:35:20
2025-03-14 13:25:56
详情 · PRD-5
PRD-6
商品 6
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-15 14:35:20
2025-03-15 13:25:56
详情 · PRD-6
PRD-7
商品 7
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-16 14:35:20
2025-03-16 13:25:56
详情 · PRD-7
PRD-8
商品 8
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-17 14:35:20
2025-03-17 13:25:56
详情 · PRD-8
PRD-9
商品 9
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-18 14:35:20
2025-03-18 13:25:56
详情 · PRD-9
PRD-10
商品 10
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-19 14:35:20
2025-03-19 13:25:56
详情 · PRD-10
PRD-11
商品 11
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-20 14:35:20
2025-03-20 13:25:56
详情 · PRD-11
PRD-12
商品 12
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-21 14:35:20
2025-03-21 13:25:56
详情 · PRD-12
PRD-13
商品 13
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-22 14:35:20
2025-03-22 13:25:56
详情 · PRD-13
PRD-14
商品 14
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-23 14:35:20
2025-03-23 13:25:56
详情 · PRD-14
PRD-15
商品 15
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-24 14:35:20
2025-03-24 13:25:56
详情 · PRD-15
PRD-16
商品 16
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-25 14:35:20
2025-03-25 13:25:56
详情 · PRD-16
PRD-17
商品 17
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-26 14:35:20
2025-03-26 13:25:56
详情 · PRD-17
PRD-18
商品 18
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-27 14:35:20
2025-03-27 13:25:56
详情 · PRD-18
PRD-19
商品 19
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-28 14:35:20
2025-03-28 13:25:56
详情 · PRD-19
PRD-20
商品 20
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-29 14:35:20
2025-03-29 13:25:56
详情 · PRD-20
PRD-21
商品 21
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-10 14:35:20
2025-03-10 13:25:56
详情 · PRD-21
PRD-22
商品 22
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-11 14:35:20
2025-03-11 13:25:56
详情 · PRD-22
PRD-23
商品 23
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-12 14:35:20
2025-03-12 13:25:56
详情 · PRD-23
PRD-24
商品 24
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-13 14:35:20
2025-03-13 13:25:56
详情 · PRD-24
PRD-25
商品 25
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-14 14:35:20
2025-03-14 13:25:56
详情 · PRD-25
PRD-26
商品 26
SUP-101
sec-xyz789qwxyz789qweisiajakkeisiajakk
50
180
华北
东北
西北
华中
音频设备
2025-02-15 14:35:20
2025-03-15 13:25:56
详情 · PRD-26
示例代码
vue
属性 Props
属性名
说明
类型
可选值
默认值
版本说明
listQuery
分页数据
ListPaginationQuery
{page: number; pageSize: number;}
{page: 1, pageSize: 15;}
columns
表格列数据
ColumnsType[]
-
[]
dataSource
表格数据
array
-
[]
autoFit
自适应宽度, 当 cloumns 中出现width 配置将失效
boolean
-
true
autoFitOnDataChange
动态计算宽度
boolean | string | null
-
false
align
表格对齐方式
string
left / center / right
left
scrollInline
是否横向滚动
boolean
-
true
changed 0.5.2 false => true
singleLine
cell 是否单行文本显示
boolean | string | null
-
false
responsive
是否响应式
boolean
-
false
skeleton
是否默认骨架屏
boolean
-
false
tooltipEffect
tooltip mode的显示
light | dark
-
light
added 0.6.6
tooltipOffset
tooltip偏移量
[number,number]
-
[-10, 0]
border
是否显示表格边框
boolean | string | null
-
false
headerBg
表头颜色
boolean, | string | null
-
false
headerHeight
表头高度
string | number
-
40
added 0.6.6
fixedHeader
是否启用固定表头(需配合 maxHeight 使用)
boolean
-
false
added 0.6.6
maxHeight
表格最大高度(启用后超出区域可纵向滚动)
string | number
-
-
added 0.6.6
virtualScroll
是否启用纵向虚拟滚动(建议搭配 fixedHeader + maxHeight + singleLine 使用)
boolean
-
false
added 0.6.8
virtualRowHeight
虚拟滚动行高(px),需与实际单行高度接近
string | number
-
40
added 0.6.8
virtualOverscan
虚拟滚动预渲染缓冲行数;数值越大滚动越稳但渲染量更高
number
-
8
added 0.6.8
autoFitMeasureThreshold
autoFit 宽度测量阈值;当 dataSource.length 超过该值时,跳过动态测量,改用 columns.width / minWidth
number
-
80
added 0.6.7
clickable
是否可点击
boolean
-
true
deprecated 0.3.9
插槽 Slots
插槽名
说明
版本说明
expand
展开项插槽。作用域参数:`row`;自定义 expand 内容时可使用 `closeExpand()` 主动关闭弹层(added 0.6.6)。
[Key in dataSource]
数据插槽。作用域参数:`row`。
ColumnsType Type
属性名
说明
类型
可选值
默认值
版本说明
title
表格标题
string
-
key
表格key, selection 会提供多项操作, index 会提供序号, expand 会提供展开操作
string
- | selection | index | expand
width
表格列宽配置,支持以下类型: - **number**:固定宽度(单位 px)。 - **'auto'**:自动填充剩余空间,列宽可不等。 - **'min-content'**:按内容最小宽度自动分配。 - **null 或不设置**:默认行为等同于 'auto',自动填充剩余空间。 注意: - 不支持百分比单位。 - 结合不同列的 width 设置,可灵活实现固定、最小和自适应列宽。
string | number | null
-
'' (等同于 'auto')
0.3.6 变更
minWidth
表格最小宽度
string | number
40px
maxWidth
表格最大宽度
string | number
-
300px
custom
是否自定义
boolean
-
false
expandVisible
expand 的交互按钮是否一直显示
boolean
-
true
expandList
展开列表
Array<TableExpandItem>
left | right | center
right
showOverflowTooltip
是否超出隐藏
boolean
-
false
disabled
是否禁用, 用于多选, 仅在 key: selection 时生效
function
-
-
render
函数渲染
function
-
-
expandPosition
展开位置
string
-
[]
deprecated 0.5.8
TableExpandItem Type
属性名
说明
类型
可选值
默认值
版本说明
name
展开项名称, 必要项
string
-
type
展开项类型, 非必要项
string
className
class名称
string
-
added 0.5.8
onClick
展开项点击事件, 非必要项
function
-
基础用法
固定表头
固定宽度 + 宽度自适应
多行文本展示展示
自动省略展示
自定义内容 + 悬浮展示
展开行(expand)
边框效果
序号列
多选列 + 禁用条件
动态渲染计算宽度
表格数据为空时展示空缺效果
函数渲染列
children 数据的表格
横向滚动 + 大数据虚拟滚动
属性 Props
插槽 Slots
ColumnsType Type
TableExpandItem Type