XtTable 扩展表格组件
# XtTable 扩展表格组件
基于 ElementUI Table 封装的扩展表格组件,支持虚拟滚动、小计/总计、合并单元格等高级功能。
# 基本用法
复制代码
# 属性说明
# 基础属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tableData | Array | [] | 表格数据 |
columns | Array | [] | 列配置 |
title | String | '' | 表格标题 |
height | Number / String | - | 表格高度 |
maxHeight | Number / String | - | 最大高度 |
showIndex | Boolean | false | 是否显示序号列 |
selection | Boolean | false | 是否显示选择列 |
selectionFixed | Boolean / String | false | 选择列是否固定 |
indexFixed | Boolean / String | false | 序号列是否固定 |
loading | Boolean | false | 是否加载中 |
emptyText | String | 暂无数据 | 空数据提示 |
# 虚拟滚动
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
virtualScroll | Boolean | false | 是否启用虚拟滚动 |
rowInitHeight | Number | 48 | 行初始高度 |
bufferSize | Number | 5 | 缓冲区行数 |
# 小计/总计
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
groupColumns | Array | [] | 合并单元格的列字段 |
subtotalConfig | Object | { enabled: false } | 小计配置 |
totalConfig | Object | { enabled: false } | 总计配置 |
# 分页
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
pagination | Object | null | 分页配置 |
total | Number | 0 | 数据总数 |
# 排序
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
sortGroup | Boolean | false | 是否启用分组内排序 |
defaultSort | Object | null | 默认排序配置 { prop, order } |
# 列配置说明
{
prop: 'name', // 字段名
label: '姓名', // 列标题
width: 100, // 宽度
fixed: true, // 是否固定
align: 'center', // 对齐方式
sortable: true, // 是否可排序
render: (h, { row, index, column }) => {}, // 自定义渲染函数 返回 VNode
formatter: (row, index, column) => {}, // 返回字符串
slot: 'custom-slot', // 自定义插槽名
children: [] // 多级表头
}
# 示例
# 虚拟滚动
复制代码
# 合并单元格
复制代码
# 小计和总计
复制代码
# 排序
列配置中设置 sortable: true 即可启用排序。支持普通排序和分组内排序。
复制代码
复制代码
复制代码
# 分页
复制代码
# 自定义渲染
复制代码
# 事件
| 事件名 | 说明 | 参数 |
|---|---|---|
selection-change | 选择项变化 | selectedRows |
sort-change | 排序变化 | sortInfo |
size-change | 每页条数变化 | size |
page-change | 当前页变化 | page |
# 方法
| 方法名 | 说明 | 参数 |
|---|---|---|
getSelection | 获取选中行 | - |
clearSelection | 清除选中 | - |
toggleRowSelection | 切换行选中状态 | row, selected |
toggleRowsSelection | 批量切换行选中状态 | rows, selected |
doLayout | 重新计算布局 | - |
# 插槽
| 插槽名 | 说明 |
|---|---|
toolbar | 工具栏区域(标题右侧) |
{slotName} | 自定义列插槽(通过 column.slot 配置) |