Table 表格

February 27, 2026 · View on GitHub

数据表格组件,支持排序、筛选、分页、导出等功能。

引入

import { ATable } from '@airpower/web'

Props

参数说明类型默认值必填
buttons自定义按钮列表ITableButton<E>[][]
useHook直接使用表格 HookITableResult<E, S>undefined
disablePage禁用分页booleanfalse
loading表格加载中booleanfalse
hideAdd隐藏添加按钮booleanfalse
editPermission行尾编辑按钮权限stringundefined
disablePermission行尾禁用按钮权限stringundefined
enablePermission行尾启用按钮权限stringundefined
detailPermission行尾详情按钮权限stringundefined
deletePermission行尾删除按钮权限stringundefined
addRowPermission行尾添加按钮权限stringundefined
addPermission左侧添加按钮权限stringundefined
exportPermission导出按钮权限stringundefined
importPermission导入按钮权限stringundefined
dataList表格显示的数据数组E[][]
selectList默认选中的数据数组E[][]
columnList显示字段列表ITableColumn<E>[][]
emptyText表格空文案stringundefined
hideEdit隐藏编辑按钮booleanfalse
disableEdit禁用行内编辑按钮回调(row: E) => booleannull
disableAddRow禁用行内添加按钮回调(row: E) => booleannull
disableChangeStatus禁用启用/禁用操作回调(row: E) => booleannull
disableDetail禁用行内详情按钮回调(row: E) => booleannull
disableDelete禁用行内删除按钮回调(row: E) => booleannull
disableRow整行显示禁用状态回调(row: E) => booleannull
selectable禁用多选按钮回调(row: E) => booleannull
showSelect显示多选框booleanfalse
showEnableAndDisable显示启用/禁用按钮booleanfalse
fieldCacheKey表格字段缓存 Keystringundefined
hideColumnSelector隐藏字段选择booleanfalse
ctrlWidth操作区宽度string''
autoHeight自动撑起高度booleanfalse
hideCtrl隐藏操作按钮booleanfalse
showDetail显示详情按钮booleanfalse
showAddRow显示行添加按钮booleanfalse
customDelete自定义删除事件booleanfalse
deleteTitle删除确认框标题string''
deleteContent删除确认框内容string''
entity表格数据实体类ITransformerConstructor<E>undefined
showImport显示导入按钮booleanfalse
importTitle导入上传标题stringundefined
exportParam导出请求参数QueryRequestundefined
showExport显示导出按钮booleanfalse
service接口服务类CurdServiceConstructor<E, S>undefined
defaultFilter默认筛选器Eundefined
searchParams搜索参数ISearchField[]undefined
importUrl导入接口地址stringundefined
importTemplateUrl导入模板下载地址stringundefined
fileEntity导入文件实体类ITransformerConstructor<IFile>undefined
onAdd自定义添加事件() => voidundefined
onDetail自定义详情事件(row: E) => voidundefined
onDelete自定义删除事件(row: E) => voidundefined
onEdit自定义编辑事件(row: E) => voidundefined
onSelected选择变更事件(list: E[]) => voidundefined
onAddRow行添加事件(row: E) => voidundefined
onSortChange排序变更事件(sort?: QuerySort) => voidundefined
onDisable禁用事件(row: E) => voidundefined
onEnable启用事件(row: E) => voidundefined
onSearch搜索事件(request: QueryRequestPage<E>) => voidundefined
isTree是否树形表格booleanfalse

Emits

无(通过 Props 回调)

Slots

插槽名说明作用域参数
自定义列插槽自定义列显示{ data: E, index: number }
customRow自定义行操作{ data: E }

示例

<template>
  <!-- 基础用法 -->
  <ATable
    :entity="User"
    :service="UserService"
    :data-list="userList"
  />

  <!-- 带搜索和分页 -->
  <ATable
    :entity="User"
    :service="UserService"
    :search-params="searchParams"
    @search="handleSearch"
  />

  <!-- 多选 -->
  <ATable
    :entity="User"
    :service="UserService"
    show-select
    :select-list="selectedList"
    @selected="handleSelected"
  />

  <!-- 自定义列 -->
  <ATable
    :entity="User"
    :service="UserService"
  >
    <template #status="{ data }">
      <ElTag :type="data.enabled ? 'success' : 'danger'">
        {{ data.enabled ? '启用' : '禁用' }}
      </ElTag>
    </template>
  </ATable>

  <!-- 自定义操作 -->
  <ATable
    :entity="User"
    :service="UserService"
    hide-edit
    hide-delete
    :on-add="handleAdd"
    :on-edit="handleEdit"
    :on-delete="handleDelete"
  />
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { User } from '@/model/User'
import { UserService } from '@/service/UserService'

const userList = ref([])
const selectedList = ref([])

function handleSearch(request: QueryRequestPage<User>) {
  // 搜索逻辑
}

function handleSelected(list: User[]) {
  selectedList.value = list
}

function handleAdd() {
  // 添加逻辑
}

function handleEdit(row: User) {
  // 编辑逻辑
}

function handleDelete(row: User) {
  // 删除逻辑
}
</script>

注意事项

  • entityserviceuseHook 三者必须传入一个
  • 支持所有 @Table 装饰器配置
  • 支持字段缓存(通过 fieldCacheKey 配置)
  • 支持树形表格(通过 isTree 配置)
  • 支持导入/导出功能
  • 支持权限控制