|
|
// 从 "element-plus/es/components/table/src/table-column/defaults" 导入 TableColumnCtx 类型
|
|
|
// TableColumnCtx 可能是 Element Plus 中表格列的上下文类型,包含了表格列的一些默认属性和方法
|
|
|
import { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults";
|
|
|
// 从 "@/components/Grid/interface" 导入 BreakPoint 和 Responsive 类型
|
|
|
// BreakPoint 可能表示响应式布局中的不同断点(如 xs, sm, md, lg, xl 等)
|
|
|
// Responsive 可能用于描述在不同断点下的响应式配置
|
|
|
import { BreakPoint, Responsive } from "@/components/Grid/interface";
|
|
|
|
|
|
// 定义一个接口 EnumProps,用于描述枚举属性
|
|
|
export interface EnumProps {
|
|
|
// 选项框显示的文字,类型为字符串
|
|
|
label: string;
|
|
|
// 选项框值,可以是任意类型
|
|
|
value: any;
|
|
|
// 是否禁用此选项,可选,默认为 undefined,类型为布尔值
|
|
|
disabled?: boolean;
|
|
|
// 当 tag 为 true 时,此选择会指定 tag 显示类型,可选,默认为 undefined,类型为字符串
|
|
|
tagType?: string;
|
|
|
// 为树形选择时,可以通过 children 属性指定子选项,可选,默认为 undefined,类型为 EnumProps 数组
|
|
|
children?: EnumProps[];
|
|
|
// 允许添加任意其他属性,属性名和值的类型都为任意类型
|
|
|
[key: string]: any;
|
|
|
}
|
|
|
|
|
|
// 定义一个类型别名 TypeProp,其值只能是 "index"、"selection" 或 "expand" 中的一个
|
|
|
export type TypeProp = "index" | "selection" | "expand";
|
|
|
|
|
|
// 定义一个类型别名 SearchType,用于表示搜索框的类型
|
|
|
// 可以是 "input"、"input-number" 等多种 Element Plus 组件类型
|
|
|
export type SearchType =
|
|
|
| "input"
|
|
|
| "input-number"
|
|
|
| "select"
|
|
|
| "select-v2"
|
|
|
| "tree-select"
|
|
|
| "cascader"
|
|
|
| "date-picker"
|
|
|
| "time-picker"
|
|
|
| "time-select"
|
|
|
| "switch"
|
|
|
| "slider";
|
|
|
|
|
|
// 定义一个接口 SearchProps,用于描述搜索项的属性
|
|
|
export type SearchProps = {
|
|
|
// 当前项搜索框的类型,类型为 SearchType
|
|
|
el: SearchType;
|
|
|
// 搜索项参数,根据 element plus 官方文档来传递,该属性所有值会透传到组件,可选,默认为 undefined
|
|
|
props?: any;
|
|
|
// 当搜索项 key 不为 prop 属性时,可通过 key 指定,可选,默认为 undefined,类型为字符串
|
|
|
key?: string;
|
|
|
// 搜索项排序(从大到小),可选,默认为 undefined,类型为数字
|
|
|
order?: number;
|
|
|
// 搜索项所占用的列数,默认为 1 列,可选,默认为 undefined,类型为数字
|
|
|
span?: number;
|
|
|
// 搜索字段左侧偏移列数,可选,默认为 undefined,类型为数字
|
|
|
offset?: number;
|
|
|
// 搜索项默认值,可以是字符串、数字、布尔值或任意类型的数组,可选,默认为 undefined
|
|
|
defaultValue?: string | number | boolean | any[];
|
|
|
// 扩展为包含 BreakPoint 类型的键和 Responsive 类型的值的部分记录,用于实现响应式配置
|
|
|
} & Partial<Record<BreakPoint, Responsive>>;
|
|
|
|
|
|
// 定义一个接口 ColumnProps,用于描述表格列的属性
|
|
|
// 扩展自 Partial<Omit<TableColumnCtx<T>, "children" | "renderHeader" | "renderCell">>,表示部分继承 TableColumnCtx 类型并去除 "children"、"renderHeader" 和 "renderCell" 属性
|
|
|
export interface ColumnProps<T = any>
|
|
|
extends Partial<Omit<TableColumnCtx<T>, "children" | "renderHeader" | "renderCell">> {
|
|
|
// 是否是标签展示,可选,默认为 undefined,类型为布尔值
|
|
|
tag?: boolean;
|
|
|
// 是否显示在表格当中,可选,默认为 undefined,类型为布尔值
|
|
|
isShow?: boolean;
|
|
|
// 搜索项配置,可选,默认为 undefined,类型为 SearchProps 或 undefined
|
|
|
search?: SearchProps | undefined;
|
|
|
// 枚举类型(渲染值的字典),可以是 EnumProps 数组或一个返回 Promise<any> 的函数,可选,默认为 undefined
|
|
|
enum?: EnumProps[] | ((params?: any) => Promise<any>);
|
|
|
// 当前单元格值是否根据 enum 格式化(示例:enum 只作为搜索项数据),可选,默认为 undefined,类型为布尔值
|
|
|
isFilterEnum?: boolean;
|
|
|
// 指定 label && value 的 key 值,可选,默认为 undefined,类型为包含 label 和 value 键的对象
|
|
|
fieldNames?: { label: string; value: string };
|
|
|
// 自定义表头内容渲染(tsx语法),可选,默认为 undefined,类型为一个接受 ColumnProps 类型参数并返回任意类型的函数
|
|
|
headerRender?: (row: ColumnProps) => any;
|
|
|
// 自定义单元格内容渲染(tsx语法),可选,默认为 undefined,类型为一个接受包含 row 属性且类型为 T 的对象并返回任意类型的函数
|
|
|
render?: (scope: { row: T }) => any;
|
|
|
// 多级表头,可选,默认为 undefined,类型为 ColumnProps<T> 数组
|
|
|
_children?: ColumnProps<T>[];
|
|
|
}
|