import type { AntdTableOptions, AntdTableResult, Data, Params, Service } from "ahooks/lib/useAntdTable/types"; import type { FormInstance } from "antd/es/form"; type FormValues = Record; /** * useTable 钩子的选项参数 */ export interface UseTableOptions extends Omit, "defaultParams" | "form"> { /** 是否使用分页,默认是 */ usePagination?: boolean; /** 默认分页参数,默认 { current: 1; pageSize: 10 } */ defaultPagination?: { current: number; pageSize: number }; /** 是否使用存储查询条件,默认是 */ useStorageQueryCriteria?: boolean; /** 额外参数 */ params?: Record | (() => Record); /** 表单数据转换函数,在每次请求之前调用,接收当前搜索的表单项,要求返回一个对象 */ transform?: (formData: FormValues) => FormValues; /** 回调函数 */ callback?: (list: any[], data: any) => void; /** 表单实例(通过 Form.useForm() 创建) */ form?: FormInstance; } /** * 基础分页配置接口 */ export interface BasePaginationConfig { /** 当前页码 */ current: number; /** 每页数量 */ pageSize: number; /** 总数 */ total: number; } /** * 扩展分页配置接口 */ export interface ExtendedPaginationConfig extends BasePaginationConfig { /** 显示快速跳转 */ showQuickJumper: boolean; /** 显示页码选择器 */ showSizeChanger: boolean; } /** * useTable 钩子返回的结果 */ export interface UseTableResult extends AntdTableResult { /** 表格属性 */ tableProps: { /** 表格数据 */ dataSource: TData["list"]; /** 表格加载状态 */ loading: boolean; /** 表格改变 */ onChange: (pagination: any, filters?: any, sorter?: any) => void; /** 分页属性 */ pagination: false | ExtendedPaginationConfig; [key: string]: any; }; /** 查询方法,等于直接调用 search.submit */ getData: () => void; } /** * 自定义 useTable,继承 ahooks 的 useAntdTable,根据需求进行扩展 */ declare function useTable( service: Service, options?: UseTableOptions ): UseTableResult; export default useTable;