2025-10-21 11:38:02 +08:00
|
|
|
import type { DescriptionsProps } from 'ant-design-vue/es/descriptions';
|
|
|
|
|
import type { JSX } from 'vue/jsx-runtime';
|
2025-04-26 09:39:52 +08:00
|
|
|
|
2025-04-25 18:18:20 +08:00
|
|
|
import type { CSSProperties, VNode } from 'vue';
|
|
|
|
|
|
2025-10-21 11:38:02 +08:00
|
|
|
import type { Recordable } from '@vben/types';
|
|
|
|
|
|
2025-04-25 18:18:20 +08:00
|
|
|
export interface DescriptionItemSchema {
|
2025-10-21 11:38:02 +08:00
|
|
|
labelMinWidth?: number;
|
|
|
|
|
contentMinWidth?: number;
|
2025-11-20 16:10:41 +08:00
|
|
|
labelStyle?: CSSProperties; // 自定义标签样式
|
|
|
|
|
field: string; // 对应 data 中的字段名
|
|
|
|
|
label: JSX.Element | string | VNode; // 内容的描述
|
|
|
|
|
span?: number; // 包含列的数量
|
|
|
|
|
show?: (...arg: any) => boolean; // 是否显示
|
|
|
|
|
slot?: string; // 插槽名称
|
2025-10-21 11:38:02 +08:00
|
|
|
render?: (
|
|
|
|
|
val: any,
|
|
|
|
|
data?: Recordable<any>,
|
2025-11-20 16:10:41 +08:00
|
|
|
) => Element | JSX.Element | number | string | undefined | VNode; // 自定义需要展示的内容
|
2025-10-21 11:38:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DescriptionProps extends DescriptionsProps {
|
2025-11-20 16:10:41 +08:00
|
|
|
useCard?: boolean; // 是否包含卡片组件
|
|
|
|
|
schema: DescriptionItemSchema[]; // 描述项配置
|
|
|
|
|
data: Recordable<any>; // 数据
|
|
|
|
|
title?: string; // 标题
|
|
|
|
|
bordered?: boolean; // 是否包含边框
|
2025-10-21 11:38:02 +08:00
|
|
|
column?:
|
|
|
|
|
| number
|
|
|
|
|
| {
|
|
|
|
|
lg: number;
|
|
|
|
|
md: number;
|
|
|
|
|
sm: number;
|
|
|
|
|
xl: number;
|
|
|
|
|
xs: number;
|
|
|
|
|
xxl: number;
|
2025-11-20 16:10:41 +08:00
|
|
|
}; // 列数
|
2025-04-25 18:18:20 +08:00
|
|
|
}
|
|
|
|
|
|
2025-10-21 11:38:02 +08:00
|
|
|
export interface DescInstance {
|
|
|
|
|
setDescProps(descProps: Partial<DescriptionProps>): void;
|
2025-04-25 18:18:20 +08:00
|
|
|
}
|