import { ReactNode } from 'react'; import type { SelectProps } from 'antd'; import { Service, Options, Result } from 'ahooks/lib/useRequest/src/types'; import type { ProFormOtherType } from '../ProForm/propsType'; /** * @description 数据选项类型 */ export interface DataOptionType { /** * @description 展示标签 * @default - */ label?: ReactNode; /** * @description 选项值 * @default - */ value?: string | number; /** * @description 允许扩展字段 */ [key: string]: any; } /** * @description 选择框属性类型 */ export interface PropSelectType extends Omit { /** * @description 是否查看模式 * @default false */ isView?: boolean; /** * @description 是否开启组件在可视区域中才发起useRequest请求 * @default false */ viewportReady?: boolean; /** * @description 默认数组第一项 * @default false */ defaultOne?: boolean; /** * @description 数据源 * @default - */ dataSource?: DataOptionType[]; /** * @description list场景中过滤掉已选择的值 * @default false */ filterInList?: boolean; /** * @description 是否展示 tooltip、当 label 特别长的时候使用 * @default false */ tooltip?: boolean; /** * @description 是否展示 code-label 形式 * @default false */ showCodeName?: boolean; /** * @description 集成表单 form 的属性 * @default - */ otherProps?: ProFormOtherType; /** * @description 下拉框滚动是否跟随父级 * @default false */ scrollFollowParent?: boolean; /** * @description 远程请求接口 * @default - */ useRequest?: { /** * @description 请求服务函数 */ service?: Service; /** * @description 请求选项 */ options?: Options; }; /** * @description 格式化数据 * @param data 后台返回的数据 * @returns 格式化后的数据选项 */ transformResponse?: (data: any) => DataOptionType[]; /** * @description 点击搜索执行 * @param value 搜索值 * @param useRequest 请求实例 */ onSearch?: (value: string, useRequest: Result) => void; /** * @description 自定义展示 * @param value 数据选项 * @returns 自定义渲染内容 */ optionRender?: (value: DataOptionType) => string | ReactNode; /** * @description 用来转换修改value值 和 getValueProps配合使用 * @param value 数据选项 * @returns 转换后的值 */ getChangeValue?: (value: DataOptionType) => any; /** * @description 用来转换传入的value值 getChangeValue配合使用 * @param value 数据选项 * @returns 转换后的值属性 */ getValueProps?: (value: DataOptionType) => any; } /** * @description ProSelect操作接口类型 */ export interface ProSelectActionType { /** * @description 实例方法、根据 code | code[] 批量获取数据 * @param code 代码或代码数组 * @param key 可选键名 * @returns 获取的数据 */ getValueObject: (code: string | string[], key?: string) => any; /** * @description 获取发生请求的 useRequest 的 ref */ useRequestRef: Result; } /** * @description 响应数据接口类型 */ export interface ResponseDataType { /** * @description 状态码 */ status: number; /** * @description 消息 */ message: string; /** * @description 数据 */ data: any; /** * @description 是否成功 * @default - */ success?: boolean; /** * @description 代码 * @default - */ code?: number; }