import type { DescriptionProps as ElDescriptionProps } from 'element-plus'; import type { JSX } from 'vue/jsx-runtime'; import type { CSSProperties, VNode } from 'vue'; import type { Recordable } from '@vben/types'; export interface DescriptionItemSchema { labelMinWidth?: number; contentMinWidth?: number; labelStyle?: CSSProperties; // 自定义标签样式 field: string; // 对应 data 中的字段名 label: JSX.Element | string | VNode; // 内容的描述 span?: number; // 包含列的数量 show?: (...arg: any) => boolean; // 是否显示 slot?: string; // 插槽名称 render?: ( val: any, data?: Recordable, ) => Element | JSX.Element | number | string | undefined | VNode; // 自定义需要展示的内容 } export interface DescriptionProps extends ElDescriptionProps { schema: DescriptionItemSchema[]; // 描述项配置 data: Recordable; // 数据 } export interface DescInstance { setDescProps(descProps: Partial): void; }