Skip to content

配置项

Columns 配置项

属性名说明类型默认值
prop列字段名,对应数据的 keystring
label列名称,表头显示内容string / number
width列宽度string / number
type列类型(如 indexselectionexpandradiooperationstring
hidden是否隐藏列booleanfalse
disabledHidden列配置中是否禁用列隐藏选择booleanfalse
options字典数据,配置 options 后可自动格式化 valuelabelarray
optionsProp指定 optionskey,优先从缓存获取对应 keyoptions 数据string
optionField指定 optionslabelvaluechildrendisabled 的 keyobject
isFilterOptions当前单元格值是否根据 options 格式化(根据 value 找 label)booleantrue
ignoreOptionIfAbsentoptions 里找不到 label 时,是否使用 value 作为 labelbooleanfalse
transformOption自定义当前 option 选项的查找逻辑function
render自定义单元格内容渲染(tsx 语法)function
renderHTML自定义单元格内容渲染(返回 HTML 字符串)function
formatValue自定义单元格内容格式化function
renderHeader自定义表头内容渲染(tsx 语法)function
renderHeaderHTML自定义表头内容渲染(返回 HTML 字符串)function
formatLabel自定义表头内容格式化function
children多级表头,子列配置array
tooltip表头右侧 ElToolTip 提示string / object
filter是否开启 filter 功能booleanfalse
disabledFilter是否禁用 filter 功能选择booleanfalse
filterProps表头筛选配置项object
beforeFilter过滤前置处理,可以返回新的过滤值或 false 阻止过滤function false
disabledSortable是否禁用列排序选择booleanfalse
disabledDragSort是否禁用列拖拽排序booleanfalse
editable是否开启编辑功能booleanfalse
editProps编辑功能配置项object
el指定组件进行修饰(如 ElTagElLink  等)string
elProps指定 el 组件的 propsobject / function
elSlotsel 组件的插槽object
buttons操作按钮集合(仅 operation 类型列)array
showNumber显示出来的按钮个数(仅 operation 类型列)number / function 3
confirm二次确认配置(仅 operation 类型列)boolean / objectfalse
...其他扩展属性,支持所有ElTableColumn Attributes

El 组件类型

el 属性除了输入大驼峰 Camel-Case 语法,也支持输入烤肉串 Kebab-Case 语法,例如:输入 ElTag,也可以输入 el-tag

El 字面量对应 ElementPlus 组件对应内置组件说明
ElTextel-text
ElTagel-tag
ElCheckTagel-check-tag
ElLinkel-link
ElProgressel-progress
ElImageel-image
Datespan格式化为日期
Moneyspan格式化为金钱
Copyspan文本后出现复制按钮

自定义 El 组件类型

除了上述的 El 组件类型,你可以自定义一些 El 组件,然后通过字面量快速使用。

pro/table/src/helper/components.ts 文件中添加自定义 El 组件。

TableComponentEnum 新增 El 字面量,Key 要求全大写,使用 _ 连接单词,Value 要求大驼峰命名,如:

ts
export enum TableComponentEnum {
  MY_COMPONENT = "MyComponent",
}

tableElComponentsMap 实现 El 组件,组件引入的命名和上方 TableComponentEnum 新增 Value 一致。

实现 El 组件的方式有两种。

组件形式

单独创建一个 Vue 组件,然后传入 tableElComponentsMap 里,如:

ts
import { MyComponent } from "@/components/core/point-tag";

const tableElComponentsMap: Record<
  TablePascalCaseComponentName,
  Omit<Component, keyof ComponentConfig> | ComponentConfig
> = {
  MyComponent, // 和 TableComponentEnum 的 Value 命名一致
};

columns 配置项的 elProps 会传入 MyComponent 组件的 props 中,elSlots 会传入 MyComponent 组件的 slots 中。

对象形式

通过 is 属性或者 renderEl 属性传入组件,两个不可以同时生效,如果都有存在,则 renderEl 优先级高于 is

NOTE

renderEl 需要搭配 h 函数直接构建一个组件,适合简单灵活的组件。如果是复杂的组件,建议在外部先写好组件,然后再引入。

ts
import { MyComponent } from "@/components/myComponent";

const tableElComponentsMap: Record<
  TablePascalCaseComponentName,
  Omit<Component, keyof ComponentConfig> | ComponentConfig
> = {
  MyComponent: {
    is: MyComponent,
  },
};
ts
import { h } from "vue";

const tableElComponentsMap: Record<
  TablePascalCaseComponentName,
  Omit<Component, keyof ComponentConfig> | ComponentConfig
> = {
  MyComponent: {
    renderEl: h(), // 使用 h 函数自定义组件,适合简单灵活的组件
  },
};

Props 处理

如果想处理 elProps 后再传入 MyComponent 组件,或者传入一些默认的 Props,则使用对象形式传入,如:

ts
import { MyComponent } from "@/components/myComponent";

const tableElComponentsMap: Record<
  TablePascalCaseComponentName,
  Omit<Component, keyof ComponentConfig> | ComponentConfig
> = {
  MyComponent: {
    is: MyComponent,
    props: (elRenderParams: ElRenderParams) => {
      return {
        /** 处理后的 Props*/
      };
    },
  },
};

ElRenderParams 参数类型如下:

ts
export interface ElRenderParams {
  /** 未经过处理的原始值 */
  originValue: unknown;
  /** 经过处理的单元格值,如 originValue 为 0,displayValue 为男 */
  displayValue: unknown;
  /** format 函数处理后的值 */
  formatValue: unknown;
  /** 置项的 elProps */
  props: Record<string, any>;
  /** 配置项的 options(已经处理拿到的实际值) */
  options: ElDisplayProps["options"];
  /** 配置项的 optionField */
  optionField: ElDisplayProps["optionField"];
}

单元格值处理

某些场景下,需要对单元格的值进行格式化,如日期转为 YYYY-MM-DD 格式,或者数字转为 ¥1000.00 格式,则可以使用 format 函数进行格式化。

ts
import { MyComponent } from "@/components/myComponent";

const tableElComponentsMap: Record<
  TablePascalCaseComponentName,
  Omit<Component, keyof ComponentConfig> | ComponentConfig
> = {
  MyComponent: {
    is: MyComponent,
    format: (value, props) => {
      console.log("当前单元格值:", value);
      console.log("经过 props 函数处理或者 elProps 传入的值:", props);

      return transform(value); // 返回格式化后的值
    },
  },
};

隐藏单元格

默认情况下,如果单元格的值为空,则依然会渲染单元格元素,因此如果希望隐藏整个单元格元素,通过 hidden 函数返回 true,如:

ts
import { MyComponent } from "@/components/myComponent";

const tableElComponentsMap: Record<
  TablePascalCaseComponentName,
  Omit<Component, keyof ComponentConfig> | ComponentConfig
> = {
  MyComponent: {
    is: MyComponent,
    hidden: (value, props) => {
      console.log("当前单元格值:", value);
      console.log("经过 props 函数处理或者 elProps 传入的值:", props);

      return value === null || value === undefined;
    },
  },
};

如果您熟读 pro/table/src/plugins/el-display.vue 组件,则可以更改传入对象形式的参数。

ProTable 配置项

Attributes

属性名说明类型默认值
columns表格配置信息TableColumn[][]
data表格数据array[]
requestApi请求表格数据的请求function
defaultRequestParams默认请求参数(请求一定会携带)object
requestParams请求参数object
initRequestParams是否立即执行请求object
requestImmediate分页参数 (默认 false 给参数就显示)booleanfalse
beforeSearch查询数据前的回调函数,可以对查询参数进行处理或禁止查询function
requestError请求失败回调function
transformData对请求成功的数据进行处理function
hideHead是否隐藏表格顶部栏booleanfalse
controlHeadColumn是否显示控制表格顶部栏的图标列booleanfalse
controlHeadColumnProps控制表格顶部栏图标列(ElTableColumn)的 Propsobject
card是否使用卡片样式booleanfalse
pageInfo分页信息object PageInfo
pageField分页信息 key 名配置object PageField
pageScope是否开启分页功能,pageMode 可以指定客户端(前端)分页还是服务端(后端)分页,当为 true 时,默认为客户端(前端)分页boolean / string false
filterScope过滤规则,可以指定客户端(前端)过滤还是服务端(后端)过滤,当为 true 时,默认为客户端(前端)过滤string client
operationProp操作列的 propstringoperation
operationProps操作列 propsobject OperationProps
rowStyleElTablerowStyle 配置项object CSSProperties
cellStyleElTablecellStyle 配置项object CSSProperties
headerRowStyleElTableheaderRowStyle 配置项object CSSProperties
headerCellStyleElTableheaderCellStyle 配置项object CSSProperties
borderElTableborder 配置项booleanfalse
stripeElTablestripe 配置项booleanfalse
showHeaderElTableshowHeader 配置项booleantrue
highlightCurrentRowElTablehighlightCurrentRow 配置项booleanfalse
rowKeyElTablerowKey 配置项string / function id
headerBackground是否显示表头背景booleantrue
paginationProps分页组件 propsobject
emptyText表格无数据时显示的文字string暂无数据
selectedRadio默认选中的 radio,传入 rowKey 对应的值string />
radioPropsElRadio 单选框 propsobject
preventCellEditClass当单元格根元素存在某个 class 时,点击不会进入编辑模式arrayel-icon
editable是否开启编辑功能,或指定编辑功能触发方式boolean / string
toolButton按钮显示数组boolean / array
disabledToolButton按钮禁用数组array []
size表格密度string default
sizeStyle自定义不同尺寸的 rowStylecellStyleheaderCellStylearray
title表格标题string
exportProps表格导出配置object
tooltipPropsElTable Propsobject
columnSetting表格列配置object ColumnSetting
baseSetting表格基础配置object BaseSetting
initNativeRowField是否初始化部分加强属性到 scope.rowbooleanfalse
...其他扩展属性,支持所有 ElTable Attributes......

提示

el-table 的其他属性写法示例 如 stripe, border, fit

示例:

html
<ProTable :stripe="true" :border="true" :fit="false" />

Events

名称说明类型
register注册 ProTable 组件实例和 ElTable 实例function
selectionChange多选框勾选事件function
paginationChange分页触发事件function
dragSortEnd拖拽排序结束事件function
cellClick单元格点击事件function
cellDblClick单元格双击事件function
leaveCellEdit离开单元格编辑事件function
filter过滤事件,返回输入的值以及 propfunction
filterClear清空事件,返回输入的 propfunction
filterReset重置所有表单事件function
formChange表单值改变事件function
buttonClick操作按钮点击时触发function
buttonConfirm二次确认的确定按钮点击时触发function
buttonCancel二次确认的取消按钮点击时触发function
refresh刷新按钮点击事件function
sizeChange密度选择事件function
...其他扩展属性,支持所有 ElTable 事件...

提示

el-table 的其他事件写法示例 如 select, select-all, row-click

示例:

模板中

html
<ProTable @select="handleSelect" @select-all="handleSelectAll" />

setup 中

ts
const handleSelect = (selection: any[], row: any) => {
  console.log(selection, row);
};
const handleSelectAll = (selection: any[]) => {
  console.log(selection);
};

Slots

插槽名说明作用域插槽参数
defaultElTable  的  default 插槽
head-left表格顶部左侧插槽object
head-right表格顶部右侧插槽,覆盖工具栏object
head-tool-before表格顶部工具栏前侧插槽object
head-tool-after表格顶部工具栏后侧插槽object
pagination-left分页器左侧内容 (当 paginationProps.align  属性为  right 时生效)
pagination-right分页器右侧内容  (当 paginationProps.align  属性为  left 时生效)
header-before所有表头内容前
header-right所有表头标签后
refresh-icon表格顶部工具栏刷新按钮 icon
size-icon表格顶部工具栏密度按钮 icon
export-icon表格顶部工具栏导出按钮 icon
column-setting-icon表格顶部工具栏列配置按钮 icon
base-setting-icon表格顶部工具栏基础配置按钮 icon
tooltip-icon表格表头提示 icon
operation-more-icon操作按钮的更多 icon
filter-icon表格表头筛选器 icon
filter-button表格表头筛选器内按钮object
drag-sort-icon表格拖拽行  icon
'prop'自定义表格单元格,自动根据配置项的 prop 生成对应的插槽object
'prop-header'自定义表格项 header,自动根据配置项的 prop 生成对应的插槽object
...el 指定组件类型后,支持传入该组件的插槽,如 el-tag 组件的 default 插槽...
...其他扩展属性,支持所有 ElTable 插槽...

提示

el-table 的其他插槽 如 append, empty

Exposes

名称说明类型
tableData表格数据array
pageInfo分页信息object 
searchParams查询参数object
searchInitParams查询参数(初始化参数)object
getTableList重新请求表格数据(使用旧的查询参数),当传入 request-api 配置生效function
search重新请求表格数据(使用新的查询参数),当传入 request-api 配置生效function
reset重置查询参数为 searchInitParams,并请求表格数据,当传入 request-api 配置生效function
setProps设置 ProTable 组件的 propsfunction
setColumn设置 columnfunction
addColumn添加 columnfunction
delColumn删除 columnfunction
tableHeadInstanceTableHead 组件实例object
tableMainInstanceTableMain 组件实例object
getElTableInstance获取 ElTable 组件实例function
getElFormInstance获取 ElForm 组件实例,当开启编辑态后获取不为空function
getElFormItemInstance获取 ElFormItem 组件实例,当开启编辑态后获取不为空function
getElFormItemInstance获取指定 propElFormItem 实例function
getElInstance获取表单组件实例function

拿到 tableInstance 后支持所有 ElTable 方法

提示

clearSelection, getSelectionRows