| 
									
										
										
										
											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; |