yuang-framework-ui-pc
Version:
yuang-framework-ui-pc Library
490 lines (449 loc) • 10.7 kB
TypeScript
import type { EleDataTableInstance, EleVirtualTableInstance, ElePaginationProps, EleDialogProps, ElePrinterProps, EleTableProps } from '../ele-app/plus';
import type { PaginationTotal } from '../ele-pagination/types';
import type { DataItem, Column, Columns, Sorter, Filter, TableColumn, TableSize, ResolveFunction } from '../ele-data-table/types';
import type { BodyColumns } from '../ele-virtual-table/types';
export type { DataItem, Column, Columns, Sorter, Filter, TableColumn, TableSize, ResolveFunction };
/**
* 分页参数
*/
export type PageParam = Record<string, number>;
/**
* 搜索参数
*/
export type QueryParam = Record<keyof any, any>;
/**
* 排序参数列表
*/
export type OrderParamList = [Record<string, OrderValue>];
/**
* 筛选参数
*/
export type Filters = Record<string, any>;
/**
* 数据源方法参数
*/
export interface DatasourceParams {
/** 页码 */
currentPage?: number;
/** 每页显示数量 */
pageSize?: number;
/** 分页参数 */
pageParam: PageParam;
/** 搜索参数 */
queryParam: QueryParam;
/** 排序参数 */
orderParamList: OrderParamList;
/** 筛选参数 */
filters: Filters;
/** 排序方式 */
sorter: Sorter;
/** 筛选条件 */
filter: Filter;
/** 树表懒加载父级数据 */
parent?: DataItem;
}
/**
* 数据源方法返回结果
*/
export type DatasourceResult = DataItem[] | Record<string, any> | undefined;
/**
* 数据源方法
* @param params 参数
*/
export type DatasourceFunction = (params: DatasourceParams) => Promise<DatasourceResult>;
/**
* 数据源
*/
export type Datasource = DataItem[] | DatasourceFunction;
/**
* 刷新方法参数
*/
export interface ReloadParams {
/** 当前页码 */
currentPage?: number;
/** 每页数量 */
pageSize?: number;
/** 搜索参数 */
queryParam?: QueryParam;
/** 排序方式 */
sorter?: Sorter;
/** 筛选条件 */
filter?: Filter;
}
/**
* 加载方法
* @param option 刷新参数
* @param parent 树表格父级数据
* @param resolve 树表格懒加载方法
*/
export type LoadFunction = (option?: ReloadParams, parent?: DataItem, resolve?: ResolveFunction) => void;
/**
* 刷新方法
* @param option 刷新参数
* @param parent 树表格父级数据
* @param resolve 树表格懒加载方法
*/
export type ReloadFunction = (option?: ReloadParams, parent?: DataItem, resolve?: ResolveFunction) => void;
/**
* 排序的值
*/
export type OrderValue = string | number | boolean | null | undefined;
/**
* 请求参数设置
*/
export interface RequestOption {
/** 页码参数名称 */
currentPageKey?: string;
/** 每页数量参数名称 */
pageSizeKey?: string;
/** 排序字段参数名称 */
orderColumnNameKey?: string;
/** 排序方式参数名称 */
orderDirectionKey?: string;
/** 升序的排序号 */
ascValue?: OrderValue;
/** 降序的排序号 */
descValue?: OrderValue;
}
/**
* 响应参数设置
*/
export interface ResponseOption {
/** 数据列表字段名称 */
recordsKey?: string;
/** 数据总数字段名称 */
totalCountKey?: string;
}
/**
* 响应数据解析方法
*/
export type ParseData = (data: unknown) => DatasourceResult;
/**
* 排序方式封装
*/
export interface OrderItem {
/** 排序字段名 */
field: string;
/** 是否是降序 */
descend: boolean;
/** 自定义排序方法 */
sortMethod?: (a: DataItem, b: DataItem) => number;
}
/**
* 渲染完成事件参数
*/
export interface DoneParams<T> {
/** 当前页数据 */
records: T[];
/** 总数量 */
totalCount?: PaginationTotal;
/** 当前页码 */
currentPage?: number;
/** 数据源原始数据 */
response?: any;
}
/**
* 渲染完成事件
*/
export type DoneFunction<T> = (
/** 返回结果 */
result: DoneParams<T>,
/** 树形表格时父级数据 */
parent?: T
) => void;
/**
* 分页组件属性
*/
export interface TablePagination extends ElePaginationProps {
/** 是否自动修正页码 */
autoAmend?: boolean;
}
/**
* 内置工具按钮
*/
export type TableTool = 'reload' | 'size' | 'columns' | 'maximized' | 'export' | 'print' | string;
/**
* 列配置
*/
export interface ColItem {
/** 列配置标识 */
uid: string;
/** 标题 */
label?: string;
/** 是否选中 */
checked?: boolean;
/** 是否固定 */
fixed?: boolean | string;
/** 子级数据 */
children?: ColItem[];
/** 列类型 */
type?: string;
/** 列宽 */
width?: number | string;
}
/**
* 请求回调参数
*/
export type FetchCallback = (options: DatasourceParams) => void;
/**
* 请求方法
*/
export type FetchFunction = (callback: FetchCallback) => void;
/**
* 前端分页排序方法返回结果
*/
export interface ReloadDataResult {
/** 当前数据 */
records: DataItem[];
/** 当前页码 */
currentPage: number;
/** 总数量 */
totalCount: number;
}
/**
* 请求结果
*/
export interface ResponseResult {
/** 当前数据 */
records?: DataItem[];
/** 总数量 */
totalCount?: number;
}
/**
* 复合属性类型
*/
export type ProProps<T extends Record<keyof any, any>> = boolean | T;
/**
* 表格状态
*/
export interface TableState {
/** 当前排序参数 */
sorter: Sorter;
/** 当前筛选参数 */
filter: Filter;
/** 当前搜索参数 */
queryParam: QueryParam;
}
/**
* 表格组件实例
*/
export type TableViewInstance = EleDataTableInstance | EleVirtualTableInstance | null;
/**
* 导出的数据来源类型
*/
export type ExportDataType = 'selections' | 'pageData' | 'data';
/**
* 导出主体数据节点
*/
export interface ExportBodyNode {
/** 数据 */
row: DataItem;
/** 索引 */
index: number;
/** 所处深度 */
level: number;
/** 子级数量 */
childSize: number;
}
/**
* 导出的数据每一项
*/
export interface ExportDataItem {
/** 唯一值 */
key?: string;
/** 行数据 */
row?: DataItem;
/** 行索引 */
index: number;
/** 列配置 */
column?: Column;
/** 文本 */
text?: string;
/** 所占列数 */
colspan?: number;
/** 所占行数 */
rowspan?: number;
/** 是否是展开行的单元格 */
isExpandCell?: boolean;
/** 是否显示树展开图标的单元格 */
isTreeCell?: boolean;
/** 是否是树叶子节点 */
isTreeLeaf?: boolean;
/** 树层级缩进 */
indent?: number;
/** 是否是层级序号 */
isTreeIndex?: boolean;
/** 层级序号是否隐藏左边框 */
hideLeftBorder?: boolean;
/** 层级序号是否隐藏右边框 */
hideRightBorder?: boolean;
}
/**
* 导出数据封装返回结果
*/
export interface ExportDataResult {
/** 表头数据 */
headerData: ExportDataItem[][];
/** 主体数据 */
bodyData: ExportDataItem[][];
/** 表尾数据 */
footerData: ExportDataItem[][];
/** 主体列配置 */
bodyCols: BodyColumns;
}
/**
* 导出数据前的钩子函数的参数
*/
export interface BeforeExportParams {
/** 导出的数据 */
data: DataItem[];
/** 导出的数据来源类型 */
dataType: ExportDataType;
/** 导出的列配置 */
columns?: Columns;
/** 导出的表头数据封装 */
headerData: ExportDataItem[][];
/** 导出的主体数据封装 */
bodyData: ExportDataItem[][];
/** 导出的页脚数据封装 */
footerData: ExportDataItem[][];
/** 主体列配置 */
bodyCols: BodyColumns;
/** 文件名 */
fileName?: string;
/** 关闭确定按钮的加载状态 */
hideLoading: () => void;
/** 关闭弹窗 */
closeModal: () => void;
/** 导出的列配置(含未勾选的列) */
tableColumns?: Columns;
/** 是否导出表头 */
showHeader?: boolean;
/** 是否导出表尾 */
showFooter?: boolean;
/** 是否展示层级序号 */
showTreeIndex?: boolean;
}
/**
* 导出数据前的钩子函数
*/
export type BeforeExport = (params: BeforeExportParams) => boolean | void;
/**
* 导出配置
*/
export interface ExportConfig {
/** 弹窗参数 */
modalProps?: EleDialogProps;
/** 表格全部数据 */
datasource?: Datasource;
/** 导出前的钩子函数 */
beforeExport?: BeforeExport;
/** 默认数据类型 */
dataType?: ExportDataType;
/** 默认文件名 */
fileName?: string;
/** 重设导出的列 */
columns?: Columns;
/** 默认是否导出表头 */
showHeader?: boolean;
/** 默认是否导出表尾 */
showFooter?: boolean;
/** 默认是否展示层级序号 */
showTreeIndex?: boolean;
}
/**
* 打印配置
*/
export interface PrintConfig {
/** 弹窗参数 */
modalProps?: EleDialogProps;
/** 打印组件参数 */
printerProps?: ElePrinterProps;
/** 打印表格参数 */
tableProps?: EleTableProps;
/** 表格全部数据 */
datasource?: Datasource;
/** 打印前的钩子函数 */
beforePrint?: BeforeExport;
/** 默认数据类型 */
dataType?: ExportDataType;
/** 重设打印的列 */
columns?: Columns;
/** 默认是否打印表头 */
showHeader?: boolean;
/** 默认是否打印表尾 */
showFooter?: boolean;
/** 默认是否展示层级序号 */
showTreeIndex?: boolean;
}
/**
* 打印参数
*/
export interface TablePrintOptions extends ExportDataResult {
/** 是否开始打印 */
printing: boolean;
/** 是否有表头 */
hasHeader: boolean;
/** 是否有表尾 */
hasFooter: boolean;
/** 打印的数据 */
data: DataItem[];
}
/**
* 导出方法参数
*/
export interface TableExportParams {
/** 打印的数据 */
data?: DataItem[];
/** 打印的列 */
columns?: Columns;
/** 是否打印表头 */
showHeader?: boolean;
/** 是否打印表尾 */
showFooter?: boolean;
/** 是否展示层级序号 */
showTreeIndex?: boolean;
/** 数据的来源类型 */
dataType?: ExportDataType;
/** 导出的文件名 */
fileName?: string;
}
/**
* 缓存的名称
*/
export type CacheKey = string | undefined;
/**
* 国际化
*/
export interface TableLocale {
refresh: string;
sizes: string;
columns: string;
maximized: string;
export: string;
print: string;
sizeLarge: string;
sizeDefault: string;
sizeSmall: string;
columnTitle: string;
columnReset: string;
columnUntitled: string;
columnIndex: string;
columnExpand: string;
columnFixedLeft: string;
columnFixedRight: string;
columnWidth: string;
exportOk: string;
exportCancel: string;
exportFileName: string;
exportFileNamePlaceholder: string;
exportSelectData: string;
exportSelectColumn: string;
exportDataTypePage: string;
exportDataTypeSelected: string;
exportDataTypeAll: string;
exportOther: string;
exportOtherHeader: string;
exportOtherFooter: string;
exportOtherTreeIndex: string;
}