Skip to content

Table 表格

AhTable 是对 Element Plus Table 的封装,支持分页、条件查询、导出等功能。

基本用法

vue
<template>
  <ah-table
    :api="fetchList"
    :search-form="searchForm"
    :columns="columns"
  />
</template>

<script setup>
import { ref } from 'vue'
import { AhTable, AhTableColumn } from '@huazio/ah-ui'

const columns = [
  { prop: 'name', label: '姓名' },
  { prop: 'age', label: '年龄' },
  { prop: 'address', label: '地址' }
]

const searchForm = [
  { prop: 'name', label: '姓名', component: 'input' },
  { prop: 'status', label: '状态', component: 'select', options: [
    { label: '启用', value: 1 },
    { label: '禁用', value: 0 }
  ]}
]

const fetchList = async (params) => {
  const res = await api.getList(params)
  return res
}
</script>

Props

参数说明类型默认值
data表格数据array-
api获取数据的 API 函数function-
search-form搜索表单配置array[]
show-search是否显示搜索区域booleantrue
show-pagination是否显示分页booleantrue
show-export是否显示导出按钮booleantrue
export-mode导出模式,可选 front / apistring'front'
export-api导出接口(export-mode="api" 时必填)function-
export-file-name导出文件名string'导出数据'
remote-paging是否后端分页booleantrue

Events

事件名说明回调参数
search-change搜索参数变化时触发(params: object)
selection-change选择项变化时触发(selection: array)
page-change分页变化时触发(page: number, size: number)
export-success导出成功后触发-
export-error导出失败时触发(error: any)

导出

支持两种导出模式:通过 export-mode 控制。

前端导出(默认)

纯前端处理,使用 xlsx 库将当前表格已有数据导出为 Excel。

vue
<ah-table
  :api="fetchList"
  :export-mode="'front'"
  export-file-name="用户列表"
/>
  • 导出当前页或选中行的数据
  • 列头以表格 label 为准
  • 如列配置了 export: false,该列不会导出

接口导出

由后端接口返回文件流,前端触发下载。

vue
<ah-table
  :api="fetchList"
  :export-mode="'api'"
  :export-api="exportApi"
  export-file-name="用户列表"
  @export-success="handleExportSuccess"
  @export-error="handleExportError"
/>
ts
const exportApi = async (params) => {
  return await axios.post('/api/user/export', params, {
    responseType: 'blob'
  })
}

接口支持的返回格式:

格式说明
直接返回 Blob直接下载
{ data: Blob, filename: string }从 data 取 Blob,从 filename 取文件名
{ url: string }{ href: string }通过链接下载

对比

模式适用场景数据来源
front数据量小(千级以下)、无需后端参与当前表格已有数据
api数据量大、需要后端分页/权限过滤后端接口返回文件流

Methods

方法名说明参数
loadData重新加载数据(params?: object)
getTableData获取表格数据-
getSelectedRows获取选中的行-

搜索表单配置

search-form 支持的组件类型:

  • input: 输入框
  • select: 选择器
  • date: 日期选择器
  • daterange: 日期范围选择器
  • datetimerange: 日期时间范围选择器
  • cascader: 级联选择器

每个配置项支持以下属性:

  • prop: 字段名
  • label: 标签名
  • component: 组件类型
  • placeholder: 占位符
  • props: 组件额外属性
  • change: 值变化回调

Released under the MIT License.