Skip to content

表格


image

介绍

用于数据收集展示、分析整理、操作处理,提供了行选择、行操作、分页、树形表格等功能

API

Props

参数名描述类型默认值
status默认状态,表格的显示隐藏状态, "default"|"hide"string'default'
loading是否为加载中状态booleanfalse
rowOrder显示序号booleanfalse
tableSetting表格设置booleanfalse
storagePolicy存储策略,配置存储本地还是API,"local"|"api"string'local'
saveSettingApi保存表格设置的API,保存数据的APIstring-
querySettingApi查询表格设置的API,查询数据的APIstring-
columns数据列,表格列数据,包含标题、数据字段等参数Columns-
data表格数据,配置表格数据属性,需包含rows和total属性。表格数据支持数据绑定。Rows{ "rows": [],"total": 0}
rowKey数据主键,选中操作时,key值数据string-
rowSelectType行选择器,表格勾选操作行的状态,关、单选、复选;none|single|multiplestring'none'
selectedRows已选中的行,勾选的行数据,可绑定变量,当用户进行勾选行操作时,绑定的变量会同步进行改变Record<string,any>[][]
rowSelectFunc勾选行数据改变时,用户勾选行回调事件配置,事件函数params参数对象包含selectedRowKeys(勾选行的数据主键数组)和selectedRows(勾选行数据数组)两个属性action-
onSelect点击行选择器时触发,用户勾选行回调事件配置,事件函数params参数对象包含rowKeys(勾选行的数据主键数组)、rowKey(勾选行主键)、record(当前行数据)三个属性action-
onSelectAll点击全选选择器时触发,用户勾选行回调事件配置,事件函数params参数对象包含checked(勾选状态)和rows(当前表格数据)两个属性action-
rowClass表格行元素的类名string''
rowDraggable行拖拽,是否开启表格行拖动排序(关、锚点)string'none'
showTableOperate显示操作栏booleantrue
操作栏宽度number200
buttonType操作按钮类型,"text"|"icon"string'text'
tableButtons操作按钮,配置行操作配置按钮array-
baseStyle自定义样式string-
customClass类名绑定string-
size表格整体尺寸大小,可选('large' | 'medium' | 'small' | 'mini')string'medium'
width表格宽度number-
scrollWidth滚动容器宽度,表格实际宽度超出时出现滚动条,可选单位为像素或百分比number-
scrollHeight滚动容器高度,表格实际高度超出时出现滚动条,可选单位为像素或百分比number-
bordered显示边框booleanfalse
stripe显示斑马纹booleanfalse
showHeader显示表头booleantrue
uniqueId唯一标识string-
enptyText空数据文案string'暂无数据'
highLightKeys行高亮显示,决定高亮显示的数据,值为「数据主键」数组array<string | number>-
spanMethod合并单元格,通过调用函数返回合并的行数和合并的列数,函数示例见下方代码function-
columnResizable是否允许调整列宽booleantrue
pagination使用分页booleantrue
paginationType类型,分页器的样式风格类型,可选('default' | 'simple')string'default'
pageNum当前页数number-
pageSize每页展示数量number-
singlePageHidePagination单页时隐藏分页booleanfalse
showTotal显示数据总数booleantrue
customTotalRender自定义总条数内容function-
showPageSizeOptions显示数据条数选择器booleantrue
pageSizeOptions条数选项列表string10,20,30,40,50
showJumber显示跳转booleantrue
treeData启用树形booleanfalse
expandedRowKeys展开渲染的行Record<string,any>[]-
onExpand展开收起触发的事件function-
fixed固定列booleanfalse
fixedLeft左侧固定列数number-
fixedRight右侧固定列数number-

单元格合并示例

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 数据列-操作

参数名描述类型默认值
title标题string'default'
name数据字段,与表格数据的映射字段名称string''
colType数据展示类型,该字段在表格单元格中的展示类型(文本、连接、图片、附件、状态、标签等)string'text'
renderFunc自定义展示配置,当字段展示类型为'自定义'时,可配置自定义渲染函数。渲染函数同时支持配置 '鼠标点击' 等事件,详情参考帮助文档function渲染函数默认见下面自定义展示配置
allowCopy允许复制booleanfalse
hide隐藏列,是否在表格中隐藏该列展示booleanfalse
groupTitle分组标题,用于复合表头类型表格,当多个连续列的分组标题设置为相同内容时,这多个列会展示为复合表头形式,复合表头标题为填写内容string''
width列宽,表格列宽度number-
tip列头提示文字,若进行设置,会在表头标题旁显示提示图标,鼠标移入展示提示内容string''
titleOperate列头操作,配置列头的操作按钮,'无' | '排序'string'left'
titleAlign列头对齐,表格列标题单元格的对齐方式,'居左' | '居中' | '居右'string'left'
dataAlign数据对齐,表格内容单元格的对齐方式,'居左' | '居中' | '居右'string'left'
ellipsis内容超出...截断 ,表格单元格内容超出时是否显示...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 行操作-操作

参数名描述类型默认值
defaultStatus默认状态,"default"|"hide"string'default'
title标题string"自定义"
icon图标string-
status按钮状态,"default"|"normal"|"success"|"warning"|"danger"string'normal'
authControl权限控制booleantrue
enableConditions按条件显示{col:string,operation:string,valueType:string,value:string}[]-
disableconditions按条件禁用function-

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>>
onRowClick点击行数据时触发ctx, params: Array<Record<string,any>>

Type

js
type Columns = {
  id:string,         //数据列id
  title:string//数据列名称
  namestring//数据列字段名
  coltype:string,    //数据展示类型
  allowCopy:boolean, //允许复制
  hide:boolean       //隐藏列
  }
type Rows = { rows: Record<string,any>[], total: number }

常见场景配置

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

1、表格自定义样式设置

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

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

1、定义三个变量

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

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

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

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

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

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

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