Skip to content

AdTable组件 ​

通过配置JSON快速构建列表、分页、搜索、导出、自定义列、自定义排序等功能。

按钮权限控制 ​

如何设置权限数据

标准的列表的数据结构 ​

js
const res = {
  data: {
    records: [],
    total: 0,
  },
};

快捷列表配置 ​

请求响应数据格式化 ​

如果返回的数据不是标准的格式,可以通过respHandler进行格式化

请求的数据可以通过reqHandler进行格式化

headerAction按钮禁用控制 ​

  • effect默认没有控制按钮
  • effect配置是one时,单个选中才能启用
  • effect配置是more时,只有有选择就启用

插槽的运用 ​

插槽名就是prop字段对应的的key

AdTable Prop ​

属性名说明类型默认值属性
model-value / v-model绑定值Record<string, any>——
headerAction表头操作按钮Array<Action<T>>——
columnAction列操作按钮Array<Action<T>>——
columnActionLabel列操作按钮标签string——
columnActionWidth列操作按钮宽度number | string——
actionClick操作按钮点击回调
——
table表格配置Partial<TableProps<T>>—查看
events表格事件配置Partial<TableEmits<T>>—查看
columns列配置Array<Partial<Column<T>>>—查看
doubleClickPickOn双击行是否选中boolean——
handleTableHeaderClick表头点击回调
——
handleTableRowClick行点击回调
——
isAutoLoadable是否自动加载数据booleantrue—
api数据获取 API
——
exportExcelApi导出Excel数据 API
——
reqHandler请求参数处理器
——
respHandler响应数据处理器
——
toolbarSearchText搜索按钮文本string隐藏搜索—
toolbarSearchHiddenText隐藏搜索按钮文本string显示搜索—
toolbarDownloadText下载按钮文本string导出—
toolbarRefreshText刷新按钮文本string刷新—
toolbarColumnsText列显示/隐藏按钮文本string显隐列—
toolbarSortText排序按钮文本string排序—
toolbarDownloadPerm下载权限配置Array<string> | string——
isToolbarDownload是否显示下载按钮booleantrue—
isToolbarColumns是否显示列按钮booleantrue—
isToolbarSort是否显示排序按钮booleantrue—
isToolbar是否显示工具栏boolean——
isPaging是否启用分页booleantrue—
pageSize每页显示条目数number10—
pageSizes每页显示条目数选项Array<number>[10, 20, 30, 40, 50]—

Action Prop ​

属性名说明类型默认值
actionType操作类型string—
actionName操作名称string—
perm权限配置string | Array<string>—
icon图标string—
color颜色
primary
hidden是否隐藏(row: T) => boolean—
formatter格式化函数(row: T) => string—
effect操作按钮禁用
—

AdTable Exposes ​

名称描述类型
fetchData刷新列表AdTableInstance
list列表数据AdTableInstance

AdTable Slot ​

名称描述类型
default表单组件—
total汇总数据—

类型声明 ​

显示类型声明
ts
import type { TableProps, TableColumnCtx } from 'element-plus';

export interface Action<T = any> {
  actionType: string;
  actionName: string;
  perm?: string | Array<string>;
  icon?: string;
  color?: 'primary' | 'success' | 'info' | 'warning' | 'danger';
  hidden?: (row: T) => boolean;
  formatter?: (row: T) => string;
  effect?: 'one' | 'more';
}

interface TableEmits<T = any> {
  select: (selection: T[], row: T) => void;
  selectAll: (selection: T[]) => void;
  selectionChange: (selection: T[]) => void;
  cellMouseEnter: (row: T, column: TableColumnCtx<T>, cell: any, event: Event) => void;
  cellMouseLeave: (row: T, column: TableColumnCtx<T>, cell: any, event: Event) => void;
  cellClick: (row: T, column: TableColumnCtx<T>, cell: any, event: Event) => void;
  cellDblclick: (row: T, column: TableColumnCtx<T>, cell: any, event: Event) => void;
  cellContextmenu: (row: T, column: TableColumnCtx<T>, cell: any, event: Event) => void;
  rowClick: (row: T, column: TableColumnCtx<T>, event: Event) => void;
  rowContextmenu: (row: T, column: TableColumnCtx<T>, event: Event) => void;
  rowDblclick: (row: T, column: TableColumnCtx<T>, event: Event) => void;
  headerClick: (column: TableColumnCtx<T>, event: Event) => void;
  headerContextmenu: (column: TableColumnCtx<T>, event: Event) => void;
  sortChange: (sortData: { column: TableColumnCtx<T>; prop: string; order: string }) => void;
  filterChange: (filterData: { filters: any[]; columnKey: string }) => void;
  currentChange: (currentrow: T, oldCurrentrow: T) => void;
  headerDragend: (dragData: { newWidth: number; oldWidth: number; column: any; event: Event }) => void;
  expandChange: (row: T, expandedRows: any[] | boolean) => void;
}

export type Column<T = any> = TableColumnCtx<T> & { hidden: boolean, tag:boolean };

export interface AdTablePorps<M = any, T = any> {
  modelValue?: Record<string, any>;
  headerAction?: Array<Action<T>>;
  columnAction?: Array<Action<T>>;
  columnActionLabel?: string;
  columnActionWidth?: number | string;
  actionClick?: (action: Action<T>, rows: Array<T>) => void;
  table?: Partial<TableProps<T>>;
  events?: Partial<TableEmits<T>>;
  columns?: Array<Partial<Column<T>>>;
  doubleClickPickOn?: boolean;
  handleTableHeaderClick?: (key: string, column: Partial<Column<T>>) => void;
  handleTableRowClick?: (key: string, row: T, rowIndex: number) => void;
  isAutoLoadable?: boolean;
  api: (queryForm?: Record<string, any>) => Promise<any>;
  exportExcelApi?: (queryForm?: Record<string, any>) => void;
  reqHandler?: (queryForm?: M) => M;
  respHandler?: (data?: Record<string, any>) => Record<string, any>;
  toolbarSearchText?: string;
  toolbarSearchHiddenText?: string;
  toolbarDownloadText?: string;
  toolbarRefreshText?: string;
  toolbarColumnsText?: string;
  toolbarSortText?: string;
  toolbarDownloadPerm?: Array<string> | string;
  isToolbarDownload?: boolean;
  isToolbarColumns?: boolean;
  isToolbarSort?: boolean;
  isToolbar?: boolean;
  isPaging?: boolean;
  pageSize?: number;
  pageSizes?: Array<number>;
}

export interface AdTableEmits {}

export interface AdTableInstance {
  fetchData: (params?: { isResetPageNumber: boolean }) => Promise<void>;
	list: Array<any>;
}