PageTable 分页表格
基于 TanStack Table 构建,支持搜索、排序、列管理、行选择、行操作、拖拽排序、无限滚动等。
何时使用
- 需要展示结构化表格数据时。
- 需要搜索、排序、分页、行选择等表格能力时。
基础用法
名称 | 邮箱 |
|---|---|
| 张三 | zhang@example.com |
| 李四 | li@example.com |
共 2 条
每页条
第 1-2 条1 / 1
搜索
通过 searchable、search-keys 开启搜索功能,使用 v-model:search 双向绑定搜索词。
行选择
通过 selectable 开启行选择,使用 v-model:row-selection 双向绑定选中状态。
行操作
通过 row-actions 配置行操作按钮,支持确认弹窗、样式变体等。
加载状态
通过 loading 显示加载状态,loading-animation 控制动画样式。
无限滚动
通过 infinite-scroll 替代分页,配合 loading-more、has-more 和 load-more 事件。
列管理
用户可通过列管理按钮控制列的显示/隐藏,支持拖拽排序。
导入
Props
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
columns | ColumnDef[] | - | 列定义(TanStack Table) |
data | TData[] | - | 数据 |
total | number | 0 | 总条数 |
page | number | 1 | 当前页(v-model) |
pageSize | number | 20 | 每页条数(v-model) |
loading | boolean | false | 加载中 |
loadingColor | string | currentColor | 加载颜色 |
loadingAnimation | "spin" | "pulse" | "bounce" | "spin" | 加载动画 |
searchable | boolean | true | 可搜索 |
searchPlaceholder | string | - | 搜索占位 |
searchKeys | string[] | - | 搜索字段 |
search | string | - | 搜索词(v-model) |
selectable | boolean | false | 可选择行 |
rowSelection | RowSelectionState | - | 选中行(v-model) |
rowActions | RowAction[] | - | 行操作 |
pageSizeOptions | number[] | [10, 20, 50, 100] | 每页选项 |
infiniteScroll | boolean | false | 无限滚动 |
loadingMore | boolean | false | 加载更多中 |
hasMore | boolean | false | 有更多数据 |
rowClass | (row) => string | - | 行 class |
buttonPermissionMode | "hide" | "disable" | 全局配置 | 无权限行操作的展示方式 |
Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
update:page | 页码变化 | (page: number) |
update:pageSize | 每页条数变化 | (pageSize: number) |
update:search | 搜索变化 | (search: string) |
update:rowSelection | 选择变化 | (rowSelection) |
rowSelectionChange | 选择变化 | (rowSelection) |
loadMore | 加载更多 | () |
类型
RowAction
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
key | string | - | 唯一标识 |
label | string | - | 显示文字 |
icon | any | - | 图标 |
variant | "default" | "destructive" | "outline" | "ghost" | "default" | 样式 |
show | (row) => boolean | - | 是否显示 |
confirm | { title, description? } | - | 确认弹窗 |
tooltip | string | - | 提示 |
onClick | (row) => void | - | 点击回调 |
