Skip to content

Table 表格 - API 参考

Table 属性

属性名说明类型默认值
data表格数据Array<Record<string, unknown>>[]
columns列配置TableColumn[][]
row-key行唯一标识string | ((row) => string | number)'id'
size表格尺寸'large' | 'default' | 'small''default'
width表格宽度number | string
height表格高度number | string
max-height表格最大高度number | string
border是否显示边框boolean | 'full' | 'outer' | 'inner' | 'none'false
stripe是否显示斑马纹booleanfalse
fit是否自适应父容器宽度booleantrue
show-header是否显示表头booleantrue
show-index是否显示序号列booleanfalse
highlight-current-row是否高亮当前行booleanfalse
current-row-key当前选中行的 key (v-model)string | number
table-layout表格布局'fixed' | 'auto''fixed'
empty-text空数据显示文本string'暂无数据'
loading是否显示加载状态boolean | LoadingConfigfalse
resizable是否可调整列宽booleanfalse
lazy是否懒加载子节点booleanfalse
load-method懒加载方法(row) => Promise<unknown[]>
auto-height自适应内容高度booleanfalse
keep-scroll数据更新后保持滚动位置booleanfalse
scroll-optimize启用滚动优化booleantrue
tooltip-effect溢出提示主题'dark' | 'light''dark'
row-class-name行的 classNamestring | ((params) => string)
row-style行的 styleCSSProperties | ((params) => CSSProperties)
cell-class-name单元格的 classNamestring | ((params) => string)
cell-style单元格的 styleCSSProperties | ((params) => CSSProperties)
header-row-class-name表头行的 classNamestring | ((params) => string)
header-row-style表头行的 styleCSSProperties | ((params) => CSSProperties)
header-cell-class-name表头单元格的 classNamestring | ((params) => string)
header-cell-style表头单元格的 styleCSSProperties | ((params) => CSSProperties)
span-method合并单元格方法(params) => { rowspan, colspan } | [rowspan, colspan]
selection-config选择配置SelectionConfig
sort-config排序配置SortConfig
filter-config筛选配置FilterConfig
tree-config树形配置TreeConfig
expand-config展开配置ExpandConfig
virtual-config虚拟滚动配置VirtualConfig
pagination分页配置boolean | PaginationConfigfalse
summary-config汇总行配置SummaryConfig
toolbar-config工具栏配置ToolbarConfig
drag-config拖拽配置DragConfig
row-config行配置RowConfig
header-config表头配置HeaderConfig
context-menu-config右键菜单配置ContextMenuConfig
empty-config空状态配置EmptyConfig
index-config序号列配置IndexConfig
sync-scroll是否同步滚动表头表尾booleantrue

Table 事件

事件名说明类型
row-click行点击时触发(row, column, event) => void
row-dblclick行双击时触发(row, column, event) => void
row-contextmenu行右键时触发(row, column, event) => void
cell-click单元格点击时触发(row, column, cell, event) => void
cell-dblclick单元格双击时触发(row, column, cell, event) => void
header-click表头点击时触发(column, event) => void
header-contextmenu表头右键时触发(column, event) => void
sort-change排序状态改变时触发(params: { column, prop, order }) => void
filter-change筛选条件改变时触发(filters: Record<string, unknown[]>) => void
page-change分页改变时触发(params: { currentPage, pageSize }) => void
selection-change选择状态改变时触发(rows, keys) => void
select选中某一行时触发(selection, row) => void
select-all全选/取消全选时触发(selection) => void
current-change当前行改变时触发(currentRow, oldRow) => void
expand-change展开状态改变时触发(row, expandedRows) => void
scroll表格滚动时触发(params: { scrollTop, scrollLeft, isEnd }) => void
drag-end拖拽结束时触发(params: { type, oldIndex, newIndex, data }) => void
column-resize列宽调整时触发(column, width) => void
column-visible-change列可见性改变时触发(columns: TableColumn[]) => void
update:data数据更新时触发(data: unknown[]) => void
update:currentRowKey当前行 key 更新时触发(key: string | number) => void

Table 方法

方法名说明参数返回值
getSelectionRows获取选中的行数据unknown[]
getSelectionRowKeys获取选中的行 key(string | number)[]
toggleRowSelection切换行选中状态(row, selected?)
toggleAllSelection切换全选状态
clearSelection清空选择
setCurrentRow设置当前行(row: unknown | null)
toggleRowExpansion切换行展开状态(row, expanded?)
setExpandedRowKeys设置展开的行(keys: (string | number)[])
getExpandedRowKeys获取展开的行 key(string | number)[]
sort手动排序(prop: string, order: 'asc' | 'desc' | null)
clearSort清空排序
filter手动筛选(prop: string, values: unknown[])
clearFilter清空筛选(prop?: string | string[])
doLayout重新计算布局
refresh刷新表格
scrollTo滚动到指定位置(options: { left?, top?, row?, rowIndex?, column?, columnIndex? })
getTableData获取表格数据{ fullData, tableData }
exportData导出数据(config?: ExportConfig)Promise<string | void>
openImport打开文件选择器导入(config?: ImportConfig)Promise<unknown[]>
importFile从 File 对象导入(file: File, config?: ImportConfig)Promise<unknown[]>
importData从文本/数组导入(content: string | unknown[], config?: ImportConfig)Promise<unknown[]>
print打印表格(config?: PrintConfig)Promise<void>
printMultiple打印多张表格(tables: Array<{ title?, data, columns?, config? }>, config?)Promise<void>
printTemplate打印自定义模板(templateHtml: string, config?: PrintConfig)Promise<void>
toggleFullscreen切换全屏
getColumns获取列配置TableColumn[]
setColumnVisible设置列可见性(prop: string, visible: boolean)
resetColumns重置列配置
insertRow插入行(row, index?)
removeRow删除行(row | rows)
updateRow更新行(row, newRow)

Table 插槽

插槽名说明参数
toolbar工具栏内容
toolbar-left工具栏左侧内容
toolbar-right工具栏右侧内容
empty空数据时显示的内容
loading加载状态时显示的内容
expand展开行内容{ row, rowIndex }
summary汇总行内容
[prop]自定义列内容{ row, column, rowIndex, cellValue }
header-[prop]自定义表头内容{ column, columnIndex }
summary-[prop]自定义汇总列内容{ column, columnIndex, data }

TableColumn 配置

属性说明类型默认值
key列唯一标识string
prop列字段名string
label列标题string
width列宽number | string
minWidth最小列宽number | string80
maxWidth最大列宽number | string
align内容对齐方式'left' | 'center' | 'right''left'
headerAlign表头对齐方式'left' | 'center' | 'right''left'
fixed列固定位置'left' | 'right' | true
sortable是否可排序boolean | 'custom'false
filterable是否可筛选booleanfalse
filters筛选选项Array<{ text, value }>
filterMultiple是否多选筛选booleantrue
filterMethod筛选方法(value, row, column) => boolean
resizable是否可调整宽度booleantrue
draggable是否可拖拽排序boolean
showOverflowTooltip是否显示溢出提示boolean | { effect?, placement?, offset? }false
ellipsis省略号配置boolean | { tooltip?: boolean, lineClamp?: number }
className列类名string
headerClassName表头类名string
style列样式CSSProperties
headerStyle表头样式CSSProperties
visible是否可见booleantrue
type列类型'selection' | 'index' | 'expand' | 'radio'
formatter格式化函数(row, column, cellValue, rowIndex) => string
displayMap值到显示文案的映射Record<string, string>
render自定义渲染函数(params) => VNode
headerRender自定义表头渲染函数(params) => VNode
headerPrefixIcon表头前缀图标string | Component
headerSuffixIcon表头后缀图标string | Component
children子列(多级表头)TableColumn[]
treeNode是否为树形展开列booleanfalse
colSpan列合并数量number
sortMethod自定义排序方法(a, b, order) => number
sortBy自定义排序字段string | ((row) => unknown)
defaultSort默认排序'asc' | 'desc' | null

SelectionConfig 配置

属性说明类型默认值
type选择类型'checkbox' | 'radio''checkbox'
selectedRowKeys已选中的行 key(string | number)[]
reserve是否保留跨页选中项booleantrue
checkable判断行是否可选函数(row, rowIndex) => boolean
selectAllMode全选模式'all' | 'currentPage''currentPage'
columnWidth选择列宽度number | string50
showSelectAll是否显示全选booleantrue
onChange选择变化回调(keys, rows) => void

VirtualConfig 配置

属性说明类型默认值
enabled是否启用虚拟滚动booleanfalse
rowHeight行高number | ((row, index) => number)48
buffer缓冲区行数number5
overscan预渲染行数number3
columnVirtual是否启用列虚拟滚动booleanfalse
columnBuffer列缓冲区数量number3

TreeConfig 配置

属性说明类型默认值
childrenKey子节点字段名string'children'
indent缩进像素number16
accordion是否手风琴模式booleanfalse
expandAll是否默认全部展开booleanfalse
defaultExpandLevel默认展开层级number
defaultExpandedKeys默认展开的节点(string | number)[]
lazy是否懒加载booleanfalse
loadMethod懒加载方法(row) => Promise<unknown[]>
trigger展开触发方式'default' | 'row' | 'cell''default'
expandIcon展开图标string | Component
collapseIcon折叠图标string | Component
leafIcon叶子节点图标string | Component
showLine是否显示连接线booleanfalse
lineStyle连接线样式'solid' | 'dashed' | 'dotted''solid'

ExpandConfig 配置

属性说明类型默认值
defaultExpandedRowKeys默认展开行的 key(string | number)[]
expandAll是否展开所有行booleanfalse
accordion是否手风琴模式booleanfalse
iconPosition展开图标位置'left' | 'right''left'
columnWidth展开列宽度number | string50
expandable行是否可展开判断函数(row, rowIndex) => boolean
render自定义渲染函数(params: { row, rowIndex }) => VNode
lazy是否懒加载booleanfalse
loadMethod懒加载方法(row) => Promise<VNode>
showIcon是否显示展开图标booleantrue
onChange展开行变化回调(expandedRowKeys) => void

SortConfig 配置

属性说明类型默认值
defaultSort默认排序列{ prop: string, order: 'asc' | 'desc' | null }
multiple是否多列排序booleanfalse
trigger排序触发方式'cell' | 'header''header'
remote是否远程排序booleanfalse
iconPosition排序图标位置'left' | 'right''right'
sortMethods自定义排序方法合集Record<string, (a, b, order) => number>

SummaryConfig 配置

属性说明类型默认值
position汇总行位置'top' | 'bottom''bottom'
fixed是否固定汇总行booleanfalse
text汇总文本string'合计'
className汇总行类名string
style汇总行样式CSSProperties
method汇总计算方法(params: { columns, data }) => Array<string | number | VNode>

DragConfig 配置

属性说明类型默认值
row是否可拖拽行booleanfalse
column是否可拖拽列booleanfalse
handle拖拽手柄选择器string
animation动画时长(毫秒)number150
onDragStart拖拽开始回调(params) => void
onDragEnd拖拽结束回调(params) => void
crossTable是否跨表格拖拽booleanfalse
dragClass拖拽时的样式类string
ghostClass幽灵元素样式类string

FilterConfig 配置

属性说明类型默认值
remote是否远程筛选booleanfalse
icon筛选图标string | Component
maxHeight筛选面板最大高度number | string
width筛选面板宽度number | string

PaginationConfig 配置

属性说明类型默认值
currentPage当前页码number1
pageSize每页条数number10
total总条数number
pageSizes每页条数选项number[][10, 20, 50, 100]
layout分页布局string'total, sizes, prev, pager, next, jumper'
position分页位置'top' | 'bottom' | 'both''bottom'
remote是否后台分页booleanfalse
align对齐方式'left' | 'center' | 'right''left'
small是否小型分页booleanfalse
background是否显示背景booleanfalse
hideOnSinglePage单页时隐藏分页booleanfalse

LoadingConfig 配置

属性说明类型默认值
visible是否加载中booleanfalse
text加载文本string
icon加载图标string | Component
background加载背景色string
render自定义渲染() => VNode

EmptyConfig 配置

属性说明类型默认值
image空状态图片string
description空状态描述string'暂无数据'
render自定义渲染() => VNode

IndexConfig 配置

属性说明类型默认值
label序号列标题string'序号'
width序号列宽度number | string60
fixed序号列固定位置'left' | 'right' | true
method自定义序号方法(rowIndex) => number | string

ToolbarConfig 配置

属性说明类型默认值
visible是否显示工具栏booleantrue
refresh是否显示刷新按钮booleanfalse
columnSetting是否显示列设置booleanfalse
density是否显示密度设置booleanfalse
fullscreen是否显示全屏按钮booleanfalse
export是否显示导出按钮boolean | ExportConfigfalse
print是否显示打印按钮booleanfalse
search是否显示搜索框boolean | { placeholder?, width? }false
custom自定义按钮Array<{ icon?, text?, onClick?, disabled? }>

RowConfig 配置

属性说明类型默认值
height行高number | string
className行类名string | ((params) => string)
style行样式CSSProperties | ((params) => CSSProperties)
highlightCurrent是否高亮当前行booleanfalse
stripe是否显示斑马纹booleanfalse
hover是否悬浮高亮booleantrue

HeaderConfig 配置

属性说明类型默认值
height表头高度number | string
className表头类名string
style表头样式CSSProperties
visible是否显示表头booleantrue
background表头背景色string

ContextMenuConfig 配置

属性说明类型默认值
enabled是否启用右键菜单booleanfalse
items菜单项配置Array<{ key, label, icon?, disabled?, onClick?, divider?, children? }>
render自定义渲染(params: { row, column, rowIndex }) => VNode

主题变量

变量名说明默认值
--yh-table-border-color边框颜色var(--yh-border-color-lighter)
--yh-table-header-bg表头背景色var(--yh-fill-color-light)
--yh-table-header-text-color表头文字颜色var(--yh-text-color-primary)
--yh-table-header-font-weight表头字重var(--yh-font-weight-semibold)
--yh-table-row-bg行背景色var(--yh-bg-color)
--yh-table-row-hover-bg行悬停背景色var(--yh-fill-color-light)
--yh-table-row-stripe-bg斑马纹背景色var(--yh-fill-color-lighter)
--yh-table-row-current-bg当前行背景色var(--yh-color-primary-light-9)
--yh-table-row-selected-bg选中行背景色var(--yh-color-primary-light-8)
--yh-table-row-success-bg成功行背景色var(--yh-color-success-light-9)
--yh-table-row-warning-bg警告行背景色var(--yh-color-warning-light-9)
--yh-table-text-color文字颜色var(--yh-text-color-regular)
--yh-table-empty-text-color空状态文字颜色var(--yh-text-color-secondary)
--yh-table-font-size字体大小var(--yh-font-size-base)
--yh-table-cell-padding单元格内边距12px 0
--yh-table-cell-spacing单元格内容间距12px
--yh-table-fixed-left-shadow左固定列阴影inset 10px 0 8px -8px rgba(0,0,0,0.15)
--yh-table-fixed-right-shadow右固定列阴影inset -10px 0 8px -8px rgba(0,0,0,0.15)

Released under the MIT License.