2025-10-22 14:43:42 +08:00
|
|
|
|
import type { AntdTableOptions, AntdTableResult, Data, Params, Service } from "ahooks/lib/useAntdTable/types";
|
|
|
|
|
|
import type { FormInstance } from "antd/es/form";
|
|
|
|
|
|
|
|
|
|
|
|
type FormValues = Record<string, any>;
|
|
|
|
|
|
/**
|
|
|
|
|
|
* useTable 钩子的选项参数
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface UseTableOptions<TData extends Data, TParams extends Params> extends Omit<AntdTableOptions<TData, TParams>, "defaultParams" | "form"> {
|
|
|
|
|
|
/** 是否使用分页,默认是 */
|
|
|
|
|
|
usePagination?: boolean;
|
|
|
|
|
|
/** 默认分页参数,默认 { current: 1; pageSize: 10 } */
|
|
|
|
|
|
defaultPagination?: { current: number; pageSize: number };
|
|
|
|
|
|
/** 是否使用存储查询条件,默认是 */
|
|
|
|
|
|
useStorageQueryCriteria?: boolean;
|
|
|
|
|
|
/** 额外参数 */
|
2025-10-23 16:52:53 +08:00
|
|
|
|
params?: Record<string, any> | (() => Record<string, any>);
|
2025-10-22 14:43:42 +08:00
|
|
|
|
/** 表单数据转换函数,在每次请求之前调用,接收当前搜索的表单项,要求返回一个对象 */
|
|
|
|
|
|
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<TData extends Data, TParams extends Params> extends AntdTableResult<TData, TParams> {
|
|
|
|
|
|
/** 表格属性 */
|
|
|
|
|
|
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<TData extends Data, TParams extends Params>(
|
|
|
|
|
|
service: Service<TData, TParams>,
|
|
|
|
|
|
options?: UseTableOptions<TData, TParams>
|
|
|
|
|
|
): UseTableResult<TData, TParams>;
|
|
|
|
|
|
|
|
|
|
|
|
export default useTable;
|