Skip to content

DataTablePlus 数据表格增强

Demo

loading

Types

ts
export interface DataTablePlusExposeActions<P extends RObject, D extends RObject> {
  run: (params: P) => void
  runAsync: (params: P) => Promise<D>
  refresh: () => void
  refreshAsync: () => Promise<D>
  cancel: () => void
  mutate: (data?: D | ((oldData?: D | undefined) => D | undefined) | undefined) => void
  setParams: (params: Partial<P>) => void
  runParams: (params: Partial<P>) => void
  runParamsAsync: (params: Partial<P>) => Promise<D>
}
export interface DataTablePlusPagination {
  page: number
  pageSize: number
  itemCount: number
}
export type DataTablePlusExposeRefsBase<P extends RObject, D extends RObject, R extends RObject> = Pick<useRequestResult<D, P[], false, false>, 'loading' | 'data' | 'error' | 'params'> & {
  pagination: Readonly<Ref<DataTablePlusPagination, DataTablePlusPagination>>
  rawList: ComputedRef<R[]>
}
export type DataTablePlusExposeRefs<P extends RObject, D extends RObject, R extends RObject> = DataTablePlusExposeRefsBase<P, D, R> & {
  dataTableRef: Readonly<ShallowRef<DataTableInst | null>>
}
export type DataTablePlusFilterOptions<P extends RObject, D extends RObject, R extends RObject> = (PresetInputOptions & {
  key?: keyof P
  label?: string | boolean | (FormItemProps & {
    style?: CSSProperties
    class?: string
  })
  collapsed?: boolean
  gridItemProps?: GridItemProps
  render?: (refs: DataTablePlusExposeRefs<P, D, R>, actions: DataTablePlusExposeActions<P, D>) => VNode
})[]
export interface DataTablePlusClickRowType<R extends RObject> {
  row: R
  index: number
  event: MouseEvent
}
export interface ContextMenuSelectType<R extends RObject> {
  key: string | number
  option: DropdownOption
  row?: R
}
export type DataTablePlusFields = Partial<Record<'page' | 'pageSize' | 'filter' | 'sorter' | 'list' | 'count' | 'rowKey' | 'search', string>>
export type DataTablePlusProps<P extends RObject, D extends RObject, R extends RObject> = RemoteRequestProps<P, D> & {
  title?: string
  columns?: DataTableColumns<R>
  filterOptions?: DataTablePlusFilterOptions<P, D, R>
  filterGridProps?: GridProps
  filterFlexProps?: FlexProps
  filterLayout?: 'grid' | 'flex' | ['grid' | 'flex']
  contextMenuOptions?: DropdownOption[]
  fields?: DataTablePlusFields
  search?: SearchInputProps | boolean
  pagination?: Omit<PaginationProps, 'page' | 'pageSize'> | boolean
  dataTableProps?: DataTableProps
  customStyle?: CSSProperties
  customClass?: string
}
export type DataTablePlusEmits<P extends RObject, D extends RObject, R extends RObject> = RemoteRequestEmits<P, D> & {
  (e: 'clickRow', data: DataTablePlusClickRowType<R>): void
  (e: 'contextMenuRow', data: DataTablePlusClickRowType<R>): void
  (e: 'contextMenuSelect', data: ContextMenuSelectType<R>): void
  (e: 'load', row: R): Promise<void>
  (e: 'scroll', ev: Event): void
  (e: 'update:checkedRowKeys', keys: (string | number)[], rows: (R | undefined)[], meta: {
    row: R | undefined
    action: 'check' | 'uncheck' | 'checkAll' | 'uncheckAll'
  }): void
  (e: 'update:expandedRowKeys', keys: (string | number)[]): void
  (e: 'update:filters', filterState: FilterState, sourceColumn: TableBaseColumn): void
  (e: 'update:sorter', options: DataTableSortState | DataTableSortState[] | null): void
  (e: 'update:page', page: number): void
  (e: 'update:pageSize', pageSize: number): void
}

Props

NameTypeDefaultDescription
api(params:Object)=>Promise-异步接口返回的数据的方法
defaultParamsObject-默认的参数
manualboolean-是否手动触发请求
titleString-标题
columnsDataTableColumns-数据表格的列
filterOptionsDataTableFilterOptions-数据表格的筛选选项配置
filterGridPropsGridProps-筛选选项的网格配置
filterFlexPropsFlexProps-筛选选项的弹性布局配置
filterLayoutString or String[]-筛选选项的布局配置
contextMenuOptionsDropdownOption[]-数据表格的上下文菜单配置
fieldsObject-内置参数的字段
searchSearchInputProps or Boolean-搜索框配置
paginationPaginationProps or Boolean-数据表格的分页配置
dataTablePropsDataTableProps-数据表格的配置
requestOptionsUseRequestOptions-VueHooks UseRequest 的请求配置
requestPluginsUseRequestPlugin[]-VueHooks UseRequest 的插件配置
customStyleCSSProperties-自定义样式
customClassstring-自定义类名

Emits

NameTypeDescription
before(params: D[]) => void数据加载前
success(data: D, params: P[]) => void数据加载完成
error(error: Error, params: P[]) => void数据加载失败
finallyparams: (P[], data?: D, err?: Error) => void数据加载完成或失败
click-row(data: DataTablePlusClickRowType) => void行点击事件
context-menu-row(data: DataTablePlusClickRowType) => void上下文菜单点击事件
context-menu-select(data: ContextMenuSelectType) => void上下文菜单选择事件
n-data-table-emitslink