Skip to content

BizTable 业务表格 ​

基于 el-table 二次封装的业务表格:schema 配置化渲染列、多选、序号列、分页封装、默认自适应父级高度,可选工具栏(刷新 / 列显隐 / 密度 / 全屏)与远程数据源。原生 props、事件、插槽通过 v-bind="$attrs" 完整透传给 el-table。

基础用法 ​

本地数据 + schema 列配置。type: 'selection' 开启多选,type: 'index' 开启序号列,enums 将枚举值映射为 el-tag,slot 自定义单元格。组件默认自适应父级高度(父容器设置确定高度即可),表头固定、内容滚动、分页常驻底部。

共 37 条
  • 1
  • 2
  • 3
  • 4
前往
页
本地数据自动分页(传入 data 时组件内部按页切片),勾选行后点击「获取选中行」查看 expose 方法效果。

远程数据源 ​

传入 dataSource 函数即切换为远程模式:组件自动管理 loading、分页、sortable: 'custom' 排序联动刷新;params 变化后自动回到第一页重新请求(常配合搜索表单使用)。组件内不耦合任何接口实现,mock 仅在 demo 中。

部门列表
暂无数据
搜索触发 params 变化 → 自动回页并重新请求;点击「成立时间 / ID」表头体验远程排序;工具栏默认全量开启。

工具栏 ​

toolbar 传 true 全量开启,或传对象细项控制 title / refresh / columnSetting / density / fullscreen;toolbar-left、toolbar-right 插槽可放置业务内容。

订单流水
实时同步
刷新、列显隐、密度切换(宽松 / 默认 / 紧凑)、全屏(Esc 退出)。

列设置增强(拖拽排序 + 固定列) ​

工具栏「列设置」面板能力:勾选控制列显隐;拖动行调整列顺序——功能性列(多选 / 序号 / 展开)始终保持在最前,拖拽之后新增的列自动追加到末尾;点「左 / 右」固定列,再点同侧取消固定(也可取消列配置自带的 fixed)。设置随 remember-settings 持久化到 localStorage(列配置变更后失效 key 自动清理),column-setting-change 事件携带完整设置快照 { hidden, order, fixed },其中 fixed 值为 'left' | 'right' | false(false 表示显式取消固定)。

打开工具栏「列设置」:拖动行调整列顺序、点「左 / 右」固定列(再点取消)、勾选控制显隐; remember-settings 持久化后刷新页面仍在。当前设置快照: 未调整

拖动行调整列顺序、点「左 / 右」固定列(再点取消)、勾选控制显隐;remember-settings 持久化后刷新页面仍在。

自定义渲染 ​

多级表头(children 嵌套)、自定义表头(headerSlot)、自定义单元格(slot)、展开行(type: 'expand' 配合 #expand 插槽)。

优先级:slot > enums > formatter(el-table 原生)。

高度说明 ​

  • 默认 auto-height:容器 display: flex 纵向布局,表格区域撑满剩余高度,需父级有确定高度;
  • 直接透传 el-table 原生 height / max-height 属性时,以透传值为准;
  • auto-height: false 时表格按内容自然撑高,随页面滚动。

区域-设备树形表 ​

共 2 条
  • 1
前往
页
树形场景:children 层级数据 + tree-props / default-expand-all 经 attrs 透传 el-table,三层展开。

发货汇总表(合计行) ​

共 4 条
  • 1
前往
页
汇总场景:show-summary + 自定义 summaryMethod 千分位合计(attrs 透传 el-table),formatter 格式化金额列。

主从联动(单选高亮) ​

共 3 条
  • 1
前往
页

点击左侧行查看详情

主从场景:highlight-current-row + current-change(attrs 透传),点击行右侧实时预览详情,未选中显示空态。

订单管理(远程搜索 + 排序 + 左右固定列) ​

全部状态
订单管理
暂无数据
业务列表典型形态:关键词 / 状态搜索(提交到 params 后自动回页重新请求)、金额与时间远程排序(sortable: 'custom')、 状态枚举 el-tag、金额 formatter 千分位、订单号固定左侧 + 操作列固定右侧(横向滚动时常驻可见)。

库存预警(单元格 / 行高亮 + 合计) ​

库存预警清单
共 23 条
  • 1
  • 2
  • 3
前往
页
低库存场景:slot 自定义单元格,低于预警线的库存红色高亮;row-class-name 整行淡红底、 show-summary 合计本页件数与库存金额(均经 attrs 透传 el-table),stripe / border 原生属性透传。

成员跨页多选(reserve-selection + 批量操作) ​

选择项目成员 已选 0 人
共 26 条
  • 1
  • 2
  • 3
前往
页
选择场景:selection 列配置 reserve-selection 跨页 / 回页保留选中(依赖 row-key 唯一), selectable 禁用离职成员;toolbar-left 插槽放「批量移除 / 清空选中」,expose 提供 getSelectionRows / clearSelection。

合同台账(多列固定 + 超长省略 + 本地排序) ​

合同台账
共 35 条
  • 1
  • 2
  • 3
  • 4
前往
页
横向滚动场景:左右多列 fixed + show-overflow-tooltip 超长文案省略浮层;sortable: true 为本地排序(当前页内排序,无需远程); row-dblclick 双击行查看(el-table 原生事件透传)。

Props ​

属性名类型默认值说明
columnsBizTableColumn[][]列 schema 配置,见下方 BizTableColumn
dataT[][]本地数据(与 dataSource 二选一,dataSource 优先)
data-sourceBizTableDataSource<T>—远程数据源函数,自动管理 loading / 分页 / 排序
loadingbooleanfalse外部受控 loading(本地模式常用)
row-keystring'id'行 key 字段,reserveSelection 保留选中时必需唯一
auto-heightbooleantrue自适应父级高度(需父级确定高度)
paginationbooleantrue是否显示分页器;本地模式自动按页切片
v-model:current-pagenumber1当前页码(支持 v-model)
v-model:page-sizenumber10每页条数(支持 v-model)
page-sizesnumber[][10, 20, 50, 100]每页条数可选项
pager-layoutstring'total, sizes, prev, pager, next, jumper'分页布局
toolbarboolean | BizTableToolbarfalse工具栏开关与配置 { title, refresh, columnSetting, density, fullscreen }
density'large' | 'default' | 'small''default'初始密度,工具栏可切换
paramsRecord<string, unknown>{}远程模式业务查询参数,变化后回第一页重新请求
auto-loadbooleantrue远程模式挂载后自动请求
auto-fetchbooleantrue分页 / 排序 / params 变化自动请求;关闭后由 refresh() 手动触发

未列出的属性(height、max-height、stripe、border、show-header、lazy 等)全部透传 el-table 原生 props。

BizTableColumn 结构 ​

字段类型说明
type'default' | 'selection' | 'index' | 'expand'列类型:多选 / 序号 / 展开行
prop / labelstring字段名 / 表头文案
width / min-width / fixed / align / header-align—同 el-table-column
sortableboolean | 'custom''custom' 时远程模式自动携带排序参数重新请求
enumsBizTableEnumItem[]枚举映射 { value, label, tag } 渲染 el-tag
slot / headerSlotstring自定义单元格 / 表头插槽名
childrenBizTableColumn[]多级表头子列
selectable / reserve-selection / index / formatter / sort-method 等—同 el-table-column 原生能力

Events ​

事件名参数说明
update:current-page(page: number)页码变化(v-model:current-page)
update:page-size(size: number)每页条数变化(v-model:page-size)
page-change(page: { currentPage, pageSize })页码或条数变化
load-success(result: { list, total })远程加载成功
load-error(error: unknown)远程加载失败
refresh—工具栏刷新或调用 refresh()
density-change(density: BizTableSize)密度变化
column-setting-change(hidden, settings)列设置变化:hidden 为被隐藏列 key 集合,settings 为完整快照 { hidden, order, fixed }(含用户拖拽顺序与固定列;fixed 值 'left' | 'right' | false,false 为显式取消列配置自带的固定)
selection-change / select / select-all / sort-change / filter-change / row-click / cell-click / current-change / expand-change 等—透传 el-table 原生事件

Slots ​

插槽名说明
default直接书写 el-table-column,与 schema 列混合使用
动态插槽(column.slot)自定义单元格,作用域 { row, column, $index }
动态插槽(column.headerSlot)自定义表头,作用域 { column, $index }
expand展开行内容(type: 'expand'),作用域 { row }
empty空数据内容(透传 el-table)
append最后一行追加内容(透传 el-table)
toolbar-left工具栏左侧(替换标题)
toolbar-right工具栏右侧按钮区(追加自定义按钮)

Expose ​

属性 / 方法说明
tableRefel-table 实例,可调用任意原生方法
getSelectionRows() => T[],当前多选行
clearSelection清空多选
toggleRowSelection(row, selected?) 设置行选中态
toggleAllSelection全选 / 反选
toggleRowExpansion(row, expanded?) 展开行开关
setCurrentRow(row) 单选高亮行
clearSort / clearFilter清空排序 / 筛选
doLayout重新计算表格布局(容器尺寸变化时组件已自动调用)
refresh远程模式重新请求;本地模式派发 refresh 事件
setDensity(density) 设置密度