import type { ServicePageParams, ServicePageRes, ServicePagination, ServicePaginationOptions, useServicePagination } from 'qidian-shared'; import type { BaseTableCellParams, EnhancedTableInstanceFunctions, ErrorListObjectType, OptionData, PrimaryTableInstanceFunctions, TableColumnFilter, TableErrorListMap, TableRowData, TableRowValue, TableTreeNodeExpandOptions, TdEmptyProps, TdEnhancedTableProps, TdPaginationProps, TNode } from 'tdesign-vue-next'; import type { MaybeRef } from 'vue'; import type { QdComponentConfig } from '../../config-renderer'; import type { QdFormItemProps } from '../../form'; type TDesignServiceTableCol = NonNullable['columns']>[number]; export type QdServiceTableScroll = NonNullable & { xVirtual?: boolean; virtualUpdateInterval?: number; }; export interface QdServiceTableCol extends Omit, 'children' | 'foot'> { children?: QdServiceTableCol[]; foot?: string | TNode>; cellSelectable?: boolean; transformCopy?: (context: { row: D; rowIndex: number; column: QdServiceTableCol; value: unknown; }) => string | undefined; transformPaste?: (context: { row: D; rowIndex: number; column: QdServiceTableCol; value: string | undefined; label: string; }) => unknown; filterItem?: true | QdServiceTableFilterItem; formItem?: QdServiceTableFormItem; } export interface QdServiceTableFilterOption extends OptionData { label: string; value: NonNullable; count?: number; } export interface QdServiceTableFilterItem extends Omit { component?: QdComponentConfig; options?: QdServiceTableFilterOption[]; reuseCell?: boolean; type?: 'input' | 'single' | 'multiple'; } export type QdServiceTableFormItem = Omit & { lazy?: boolean; virtualValidateRender?: boolean; }; export type QdServiceTableEditCellValidationBlock = 'none' | 'error' | 'warning' | 'all'; export interface QdServiceTablePaginationConfig { pageSize?: number; pageSizeOptions?: TdPaginationProps['pageSizeOptions']; } export type QdServiceTablePagination = MaybeRef; export type QdServiceTableDeleteCheckResult = void | boolean | { success: boolean; message?: string; }; export interface QdServiceTableDeleteCheckContext { row?: D; rows: D[]; selectedRowKeys: TableRowValue[]; rowKey: string; childrenKey: string; tableData: D[]; } export interface QdServiceTableCellCopyContext { text: string; valueText: string; cells: { row: D; colKey: string; }[]; } export interface QdServiceTableCellPasteContext { text: string; written: { row: D; colKey: string; value: unknown; }[]; skipped: number; } export interface QdServiceTableValidateParams { showErrorMessage?: boolean; scrollToFirstError?: boolean; } export interface QdServiceTableValidateTableContext { result: TableErrorListMap; results: ErrorListObjectType[]; validateResult: boolean; firstError?: string; } export interface QdServiceTableValidateRowContext { result: ErrorListObjectType[]; trigger: 'parent'; validateResult: boolean; firstError?: string; } export interface QdServiceTableSubmitTableContext extends QdServiceTableValidateTableContext { showErrorMessage: boolean; tableData: D[]; } export interface QdServiceTableSubmitRowContext extends QdServiceTableValidateRowContext { showErrorMessage: boolean; rowData?: D; } export interface QdServiceTableProps extends Omit, 'columns' | 'rowKey' | 'pagination' | 'tree' | 'lazyLoad' | 'scroll' | 'size' | 'activeRowType'>, ServicePaginationOptions { columns?: QdServiceTableCol[]; rowKey?: string; size?: TdEnhancedTableProps['size'] | 'mini'; widthCompensation?: boolean; selectType?: 'single' | 'multiple'; activeRowType?: 'single' | 'multiple' | false; cellSelectable?: boolean; cellClipboard?: boolean; onCellCopy?: (context: QdServiceTableCellCopyContext) => void; onCellPaste?: (context: QdServiceTableCellPasteContext) => void; reserveSelectedRowOnFilter?: boolean; headerBg?: boolean; showFilterResult?: boolean; searchData?: Record; emptyText?: string; emptyImage?: boolean | TdEmptyProps['image']; readonly?: boolean; lazyForm?: boolean; editCellValidationBlock?: QdServiceTableEditCellValidationBlock; scroll?: QdServiceTableScroll; tree?: TdEnhancedTableProps['tree'] & { lazyLoad?: boolean; transformParams?: (options: TableTreeNodeExpandOptions) => TP | Promise; transformRes?: (res: R, options: TableTreeNodeExpandOptions) => ServicePageRes | Promise>; maxLevel?: number; delCheckChildren?: boolean | ((context: QdServiceTableDeleteCheckContext) => QdServiceTableDeleteCheckResult | Promise); }; loadingWithData?: boolean; disableHorizontalScroll?: boolean; } type QdServiceTableBaseInstanceFunctions = HasTree extends true ? EnhancedTableInstanceFunctions : PrimaryTableInstanceFunctions & { getData: (key: TableRowValue) => D | undefined; }; export type QdServiceTableInstanceFunctions = Omit, 'validateTableData' | 'validateRowData'> & UnwrapAllRefs>, 'data' | 'firstLoad' | 'manualTriggerLoad' | 'loading' | 'current' | 'pageSize' | 'total' | 'changeCurrent' | 'changePageSize' | 'changePagination' | 'runAsync' | 'run' | 'cancel' | 'refresh' | 'refreshAsync' | 'setPollingInterval'>> & { tableLoad?: boolean; validateTableData: (params?: QdServiceTableValidateParams) => Promise>; validateRowData: (rowValue: TableRowValue, params?: QdServiceTableValidateParams) => Promise>; submitTableData: (params?: QdServiceTableValidateParams) => Promise>; submitRowData: (rowValue: TableRowValue, params?: QdServiceTableValidateParams) => Promise>; }; export {};