import type { ServicePageParams, ServicePagination } from 'qidian-shared'; import type { DialogOptions, PrimaryTableCellParams, TableRowData, TdButtonProps, TdLinkProps, TNode } from 'tdesign-vue-next'; import type { VNodeRef } from 'vue'; import type { Qd2ConfigValue, QdComponentConfig } from '../../config-renderer'; import type { QdDialogFormProps } from '../../dialog'; import type { QdServiceTableCol, QdServiceTableInstanceFunctions, QdServiceTablePagination, QdServiceTableProps } from '../../service'; import type { QdCrudSearchProps } from '../search'; export type TableDialogServiceRes = void | boolean | { success: boolean; message?: string; }; export interface QdCrudDetail { service?: (params: TP) => R | Promise; transformParams?: (params: P) => TP | Promise; transformRes?: (res: R) => unknown | Promise; } export interface QdCrudTableWrapper { crudMode?: QdDialogFormProps['crudMode'] | 'del'; service?: (params: TP) => R | Promise; transformParams?: (params: P) => TP | Promise; transformRes?: (res: R) => TableDialogServiceRes | Promise; form?: Qd2ConfigValue & { ref?: VNodeRef; }>; } export interface QdCrudTableActionContext { tableData: D[]; searchData: QdCrudTableProps['searchData']; selectedRowKeys: NonNullable; activeRowKeys: NonNullable; self: QdCrudTableAction; } export interface QdCrudTableAction extends QdCrudTableWrapper, Qd2ConfigValue> { uid?: string; permiID?: string; permi?: string[]; component?: QdComponentConfig; selectType?: QdServiceTableProps['selectType']; onClick?: (context: QdCrudTableActionContext & Partial>, e: MouseEvent) => void | Promise; } export interface QdCrudTableRowAction extends QdCrudTableWrapper, Qd2ConfigValue>, Pick { uid?: string; permiID?: string; permi?: string[]; component?: QdComponentConfig; selectType?: QdServiceTableProps['selectType']; detail?: QdCrudDetail; onClick?: (context: QdCrudTableActionContext & PrimaryTableCellParams, e: MouseEvent) => void | Promise; } export interface QdCrudTableDeleteAction extends Omit, 'form' | 'onClick'>, Omit, 'form' | 'onClick'> { wrapper?: Pick; onClick?: (context: QdCrudTableActionContext & Partial>, e: MouseEvent) => void | Promise; } export interface QdCrudTableCol extends Required, 'colKey'>>, Omit, 'colKey'> { hidden?: boolean; } export interface QdCrudTableToolContext { tableData: D[]; searchData: Record; selectedRowKeys: unknown[]; activeRowKeys: unknown[]; self: QdCrudTableTool; } export interface QdCrudTableTool { content?: string; icon?: TNode; component?: QdComponentConfig; permiID?: string; permi?: string[]; disabled?: boolean | ((ctx: QdCrudTableToolContext) => boolean); onClick?: (ctx: QdCrudTableToolContext, e: MouseEvent) => void | Promise; } export interface QdCrudTableProps extends Omit, 'columns' | 'displayColumns' | 'searchData'> { title?: string; permiPrefix?: string; tableMinHeight?: string | number | boolean; fitParentHeight?: boolean; search?: Omit; searchData?: QdCrudSearchProps['data']; form?: QdCrudTableWrapper['form']; detail?: QdCrudDetail; add?: false | QdCrudTableAction; actions?: QdCrudTableAction[]; edit?: false | QdCrudTableRowAction; view?: true | false | QdCrudTableRowAction; del?: false | QdCrudTableDeleteAction; rowActions?: QdCrudTableRowAction[]; tools?: QdCrudTableTool[]; hideSearchVisible?: boolean; hideRefresh?: boolean; hideTreeExpand?: boolean; hideColumnController?: boolean; cacheColumnsKey?: string; columns?: QdCrudTableCol[]; } type QdCrudTableServiceInstanceFunctions = QdServiceTableInstanceFunctions; export type QdCrudTableInstanceFunctions = Omit, 'refreshAsync'> & { validateSearch: () => Promise; refreshAsync: () => Promise['refreshAsync']>> | undefined>; }; export {};