Skip to content

ProTable - 高级表格

基于 ant-design-vueTable 组件二次封装,并将 QueryFilter 及部分表格常用功能封装成组件

基本用法

一个基本的例子

无查询表格

不带查询条件的表格

自定义工具栏

能够对工具栏的内容自定义,默认的设置配置key即可

筛选和排序

需要对表格进行筛选和排序

搜索项插槽

使用插槽自定义搜索项

简单的例子

常见的列表展示页的组装例子

API

仅列出额外功能的API,原有 Table API请访问 Ant Design Vue 官网.

属性

属性说明类型默认值
request请求表格数据的方法(arg: QueryData<T>, filters?: Filters, sorter?: Sorter<RecordType>) => Promise<RequestData>-
params搜索条件初始值Record<string, any>{}
columnsTable 组件同名参数,在原有的基础上增加额外配置ProSchema[][]
columnsState初始columns展示配置(注意:持久化配置暂未开发)ColumnsStateType{}
search搜索条件配置,传递给 QueryFilter 的 props,为 false 不展示QueryFilterProps | booleanfalse
toolbar工具栏配置,为 false 不展示ToolBarProps | booleantrue
toolbar.title工具栏左侧展示的标题string-
toolbar.settings工具栏具体内容,默认工具栏的key:reloaddensitysettingfullScreenToolBarSetting[]-
beforeSearchSubmit调用请求表格数据前,处理参数的回调(params: T) => U-
postData获取表格数据后,赋值给表格组件前,处理数据的回调(data: T[]) => U[]-
cardBordered是否展示组件外边框booleanfalse
autoHeight根据父节点自适应高度,通过 { offset: 0 } 可设置偏移量AutoHeight | booleanfalse
manualRequest是否需要手动触发首次请求booleanfalse

暴露

方法或属性说明类型
reload请求第一页表格数据()=> void
fetch重新加载当前表格页数据()=> void
reset重置筛选条件并重新请求()=> void
query搜索数据Ref<QueryData>
setQuery设置搜索数据(query: QueryData) => void
tableSize表格尺寸Ref<"small" | "middle" | "large">
setTableSize设置表格尺寸(tableSize: "small" | "middle" | "large") => void
columnsMap列展示配置Ref<Record<string, ColumnsState>>
setColumnsMap设置列展示配置(columnsMap: Record<string, ColumnsState>) => void
computeTableHeight重新计算表格高度()=> void

插槽

TableQueryFilter 的 slot 上增加了以下插槽

名称说明类型
toolbar表格标题位置的插槽{}
tools工具栏的插槽内容{}
formItem自定义筛选条件项{ record: any, column: ProTableColumn }

Type Declarations

ts
export interface ToolBarSetting {
  icon?: any
  tooltip?: string
  key?: string
  onClick?: (key?: string) => void
}

export interface ColumnsStateType {
  /* 持久化的类型,支持 localStorage 和 sessionStorage */
  persistenceType?: 'localStorage' | 'sessionStorage'
  /* 持久化的key,用于存储到 storage 中 */
  persistenceKey?: string
  /* ColumnsState 的值 */
  defaultValue?: Record<string, ColumnsState>
  /* ColumnsState 的值 */
  value?: Record<string, ColumnsState>
  onChange?: (map: Record<string, ColumnsState>) => void
}

export interface ColumnsState {
  show?: boolean
  fixed?: 'right' | 'left' | undefined
}

export interface AutoHeight {
  offset?: number
}

interface ToolBarProps {
  settings?: ToolBarSetting[] | undefined
  title?: string | undefined
}

export type QueryData<T extends Recordable = any> = {
  current?: number
  pageSize?: number
} & T