import { type Ref, type WritableComputedRef, type UnwrapNestedRefs } from 'vue'; export type SearchPage = { page?: number; pageSize?: number; }; export type Pagination = SearchPage & { total?: number; pages?: number; }; export type Payload = SearchPage & T; interface ExportTableType { state: UnwrapNestedRefs; isLoading: Ref; pagination: WritableComputedRef; fetchList: (payload?: U) => Promise; handleChangePage: (page: number) => Promise; handleChangePageSize: (pageSize: number) => Promise; handleRefresh: () => Promise; } interface ExportFormType { filterData: UnwrapNestedRefs; handleSearch: () => Promise; } interface TemplateAny { (payload: Payload): Promise; } /** * @param api 请求函数 * @param defaultQuery 表单查询默认参数 * @param config * * 1.当toolbar存在默认值时,通过 defaultQuery 参数设定 * 2.当需要对api返回值预处理时,api then方法里处理后,return处理后的结果 * 3.delay:可以配置通过延时启动loading动画尽量规避loading动画过短 * 4.immediate:是否在onBeforeMount中自动执行api * 5.noPagination:屏蔽默认的分页行为 */ export declare function useQueryTable[0], InputParameter extends Parameter, ReturnValue extends Awaited>, FilterData extends Omit>(api: Service, // (payload?: P) => Promise, defaultQuery?: InputParameter, { delay, immediate, noPagination, }?: { delay?: number | undefined; immediate?: boolean | undefined; noPagination?: boolean | undefined; }): [ExportTableType, ExportFormType]; export {};