Skip to content

表格


image

介绍

表格组件是中后台系统中最为常用的数据组件,组件内包含了数据的表格展示、表格的操作按钮以及表格的查询搜索等功能,我们提供了丰富的功能和样式选择以满足不同场景下对表格展示的需要。为了保证交互配置的便捷性,我们不再对表格组件进行更多的组件拆分,全部通过配置项的形式提供给用户进行低代码配置。

API

Props


Props 属性-基础配置

参数说明类型默认值
默认状态表格的显示隐藏状态, "默认"|"隐藏"string'default'
标题表格上方显示的标题string''
显示标题控制标题的显示隐藏状态booleanfalse
显示序号控制序号列的显示隐藏状态booleanfalse

Props 属性-数据列

参数说明类型默认值
标题表格列标题string'default'
数据字段与表格数据的映射字段名称string''
数据展示类型该字段在表格单元格中的展示类型(文本、连接、图片、附件、状态、标签等)string'text'
自定义展示配置当字段展示类型为'自定义'时,可配置自定义渲染函数。渲染函数同时支持配置 '鼠标点击' 等事件,详情参考帮助文档function渲染函数默认见下面自定义展示配置
数据编辑格式内置的新增、修改、查询区域中该字段的编辑格式(见下面表格Props 属性-数据列-数据编辑格式--
隐藏列是否在表格中隐藏该列展示booleanfalse
分组标题用于复合表头类型表格,当多个连续列的分组标题设置为相同内容时,这多个列会展示为复合表头形式,复合表头标题为填写内容string''
列宽表格列宽度number-
列头提示文字若进行设置,会在表头标题旁显示提示图标,鼠标移入展示提示内容string''
列头对齐表格列标题单元格的对齐方式,'居左' | '居中' | '居右'string'left'
数据对齐表格内容单元格的对齐方式,'居左' | '居中' | '居右'string'left'
内筒超出...截断表格单元格内容超出时是否显示...booleanfalse
自定义展示配置
javascript
/**
 *  自定义渲染函数 
 *  data: { record: TableData; column: TableColumnData; rowIndex: number; }
 *  ctx: PangeaContext
 **/
function render(data, ctx) {
  // 支持返回jsx渲染内容
  // 例如 return <span style="color: orange">{record[column.dataIndex]}</span>;
  const record = data.record;
  const column = data.column;
  return record[column.dataIndex]
}
Props 属性-数据列-数据编辑格式
参数说明类型默认值
数据编辑格式数据编辑的预设格式,可选。【 文本 | 数字 | 文本域 | 下拉选择 | 日期选择 】string'input'
占位提示数据编辑时的占位提示信息string-
数据校验数据校验方式,可选无校验或预设的优先校验或自定义校验string-
正则表达式自定义数据校验的正则表达式string-
数字精度通过控制数字的小数位数,来控制数字精度number-
最大值数字的最大值number-
最小值数字的最小值number-
最大长度文本域的最大字符长度number-
自适应内容高度是否开启自适应内容高度booleanfalse
字数统计是否开启字数统计booleanfalse
允许清除是否开启允许清除booleanfalse
按钮是否显示控件后的按钮booleanfalse
图标选择控件后的按钮的图标string-
数据编辑格式-单选/复选数据仅支持单选还是支持复选string'single'
选项类型下拉选择的选项来源类型,可选。【 自定义接口获取数据联动 】
指定字段配置项选项数据中 key 和 title 对应的取值字段FieldNames
数据配置配置下拉选择选项数据属性Object[]-
搜索是否开启搜索booleanfalse
查询API选项的来源类型为接口获取时,配置接口api,可选项来源于页面API管理面板维护列表API-
关联数据选项的来源类型为数据联动时,关联数据的字段名string-
联动查询API选项的来源类型为数据联动时,关联数据变化时调用的查询API,可选项来源于页面API管理面板维护列表API-
日期类型数据编辑格式为日期选择时,日期类型的配置,可选。【 默认
范围选择数据编辑格式为日期选择时,是否开启日期范围选择booleanfalse
日期格式数据编辑格式为日期选择时,日期格式的配置,可选。【 YYYY-MM-DDMM-DDYYYY-MM-DD HH:mm

Props 属性-数据源

参数说明类型默认值
通过API获取表格数据是否通过API获取booleanfalse
表格数据配置表格数据属性,需包含rows和total属性。表格数据支持数据绑定。{ rows: Record<string,any>[], total: number }{ "rows": [],"total": 0}
表格数据(API获取)绑定API,可先在API管理面板维护表格的查询API信息,再在表格数据源配置处打开通过API获取开关,表格数据(API获取)选择创建好的API。API-

注意

请不要忘记数据主键属性的配置,该属性用于标注表格数据的唯一值字段,通常为id字段。该字段会用于删除操作传参。

Props 属性-顶部操作

参数说明类型默认值
显示操作栏顶部操作区域的显隐状态booleantrue
操作按钮顶部操作区域的按钮设置,支持内置新增、删除按钮及自定义按钮。OButton[]-
表单值在新增按钮配置面板中的内置表单中配置,支持绑定变量Record<string,any>{}
刷新刷新快捷操作按钮显隐状态booleanfalse
筛选筛选快捷操作按钮显隐状态,筛选操作用于用户自定义查询条件及查询操作符booleanfalse
设置设置快捷操作按钮显隐状态,设置操作用于用户自定义表格行密度、自定义列显隐状态及展示顺序。booleanfalse

Props 属性-行操作

参数说明类型默认值
行选择器表格勾选操作列的状态(关、单选、复选)string'none'
勾选方式表格行勾选方式(勾选框、点击行)string'checkbox'
已选中的行勾选的行数据,可绑定变量,当用户进行勾选行操作时,绑定的变量会同步进行改变Record<string,any>[][]
勾选行数据改变时用户勾选行回调事件配置,事件函数params参数对象包含selectedRowKeys(勾选行的数据主键数组)和selectedRows(勾选行数据数组)两个属性action-
点击行选择器时触发用户勾选行回调事件配置,事件函数params参数对象包含rowKeys(勾选行的数据主键数组)、rowKey(勾选行主键)、record(当前行数据)三个属性action-
点击全选选择器时触发用户勾选行回调事件配置,事件函数params参数对象包含checked(勾选状态)和rows(当前表格数据)两个属性action-
行拖拽是否开启表格行拖动排序(关、锚点)string'none'
显示操作栏操作列显隐状态booleantrue
宽度操作列宽度number200
操作配置操作栏中操作的配置OButton[]-
表单值在操作配置中编辑操作配置面板中的内置表单中配置,支持绑定变量Record<string,any>{}
最大展示数量操作列按钮的最大展示数量,超过数量会将超出按钮显示到更多按钮中number3
当前操作行当前操作的行数据,可绑定变量,当用户进行操作列按钮点击操作时,绑定的变量会同步进行改变Record<string,any>-

Props 属性-搜索

参数说明类型默认值
类型搜索区域的类型(完整、简约、关)string'default'
默认展开搜索区域默认是否展开(类型===完整)booleanfalse
展开收起通栏展示展开收起操作是否单独一行展示,关闭后展开收起放在按钮操作上(类型===完整)booleantrue
查询条件查询条件配置EditColumn[][]
查询默认值查询默认值配置Record<string,any>{}
标题宽度查询区域表单项标题宽度number100
布局查询条件的响应式栅格设置Record<string,any>{xs:24,sm:12,md:12,lg:12,xl:8,xxl:6}

Props 样式

参数说明类型默认值
自定义样式表格整体自定义样式string-
尺寸表格整体尺寸大小,可选('大' | '中' | '小' | '迷你')string'medium'
表格宽度表格的宽度,可选单位为像素或百分比number-
滚动容器宽度表格实际宽度超出时出现滚动条,可选单位为像素或百分比number-
滚动容器高度表格实际高度超出时出现滚动条,可选单位为像素或百分比number-
显示边框控制表格是否显示边框booleanfalse
显示斑马纹控制表格是否显示斑马纹booleanfalse
显示表头控制表格是否显示表头booleantrue

Props 高级-基础配置

参数说明类型默认值
唯一标识组件的唯一标识string-
空数据文案表格数据为空时显示的文案内容string'暂无数据'
行高亮显示决定高亮显示的数据,值为「数据主键」数组array<string | number>-
合并单元格通过调用函数返回合并的行数和合并的列数,函数示例见下方代码function-
是否允许调整列宽控制是否允许用户调整列宽booleantrue
单元格合并示例
js
/**
 *  单元格合并函数 
 *  params: { rowIndex: number; columnIndex: number; column: TableColumnData; record: object; }
 **/
function spanMethod(params, ctx) {
  if (params.rowIndex === 1 && params.columnIndex === 1) {
    return {
      rowspan: 2,
      colspan: 3
    }
  }
}

Props 高级-分页

参数说明类型默认值
是否分页控制是否开启分页booleantrue
类型分页器的样式风格类型,可选('默认' | '简约')string'default'
当前页数分页器的当前页数,支持绑定变量number-
每页展示数量表格每页最多展示数据的条数number-
单页时隐藏分页是否在只有一页时隐藏分页器booleanfalse
显示数据总数是否显示数据总数booleantrue
自定义总条数内容自定义显示数据总数的逻辑function-
显示数据条数选择器是否显示数据条数选择器booleantrue
条数选项列表数据条数选择器的可选项string10,20,30,40,50
显示跳转是否显示跳转booleantrue

Props 高级-树形表格

参数说明类型默认值
启用树形控制是否开启树形表格booleanfalse
展开渲染的行决定展开的行数据Record<string,any>[]-
展开收起触发的事件展开收起触发的动作function-

Props 高级-树形表格

参数说明类型默认值
固定列控制是否开启固定列booleanfalse
左侧固定列数左侧固定的列数number-
右侧固定列数右侧固定的列数number-

Events


Events 属性-基础配置

事件名说明回调参数
onSearch分页、搜索、排序时触发ctx, params: { pageNum:number, pageSize:number, searchInfo: Record<string, any>, from: "search"|"reset"|"pagination"|"order"|"filter" }
onDragEnd表格拖拽排序时触发ctx, params: Array<Record<string,any>>

Events 属性-数据列

事件名说明回调参数
onClick在数据编辑格式配置面板内配置,适用于文本、数字、文本域类型的字段,在新增弹窗、编辑弹窗、搜索面板的表单内的相应字段点击时触发ctx

Type

OButton

参数名描述类型
name操作按钮名称string
title操作按钮标题string
type按钮边框类型string
status按钮状态类型string
authControl是否权限控制boolean
showCondition按钮显示条件string
ableCondition按钮可用条件string
icon按钮图标string
columns按钮操作(如新增、修改)涉及的表单所包含字段EditColumn[]
deleteText删除时的提示文案string

EditColumn

参数名描述类型
name列名称string
title列标题string
spanNum合并列数number
required是否必填boolean
selected是否选中boolean
default字段默认值string

FieldNames

参数说明类型默认值
key指定 key 值在选项数据中对应的字段名stringkey
title指定 title 在选项数据中对应的字段名stringvalue
...指定其他字段名,可根据需要自行定义,组件存取值会根据该对象配置进行扩展string-

常见场景配置

设置表格高度撑满页面剩余高度

1、表格自定义样式设置

less
:rootNode {
  height: calc(100vh - 200px); // 整个表格高度,根据页面剩余高度自行调整
  display: flex;
  flex-direction: column;
  .arco-table {
    flex: 1;
  }
}

2、设置表格容器滚动高度为任意固定值

image

跨页选择数据处理 (示例如下)

1、定义三个变量

  • allSelectedRows 表格所有的勾选行数据
  • selectedRows 表格当前分页勾选行数据
  • tableData 表格数据

表格设置的数据主键为:loginName

2、切换分页,表格接口数据获取后对selectedRows进行赋值,可直接将allSelectedRows的值赋给selectedRows,注意:赋值时数据深拷贝一下。

3、行操作设置-点击行选择器时触发

javascript
  const {rowKeys, rowKey, record} = params;
  // 判断当前点击行选择器是勾选还是取消勾选
  if (rowKeys.includes(rowKey)) {
    // 为勾选数据
    if (!ctx.state.allSelectedRows.some(i => i.loginName === rowKey)) {
      ctx.state.allSelectedRows.push(record)
    }
  } else {
    // 为取消勾选数据
    const index = ctx.state.allSelectedRows.findIndex(i => i.loginName === rowKey)
    if (index >= 0) {
      ctx.state.allSelectedRows.splice(index, 1)
    }
  }

4、行操作设置-点击全选选择器时触发

javascript
const {
    checked,
    rows
  } = params
  if (checked) {
    // 全勾选
    rows.forEach(item => {
      if (!ctx.state.allSelectedRows.some(i => i.loginName === item.loginName)) {
        ctx.state.allSelectedRows.push(item)
      }
    })
  } else {
    // 取消全勾选
    rows.forEach(item => {
      const index = ctx.state.allSelectedRows.findIndex(i => i.loginName === item.loginName)
      if (index >= 0) {
        ctx.state.allSelectedRows.splice(index, 1)
      }
    })
  }