/** * @author cyx * @description 增强下拉框功能 */ import React from 'react'; import { SelectProps, SelectValue } from 'antd/lib/select'; export interface IProps extends Omit, 'onChange'> { /** * 直接传递list数据渲染 */ list?: any[]; /** * 默认渲染的列表 */ defaultList?: any[]; /** * 查询参数应该是一个JSON格式的字符串,这样做的好处是,便于scu减少重复渲染 */ params?: any; /** * 接口请求地址 */ url?: string; /** * 请求方式 */ method?: string; /** * 超时时间 */ timeout?: number; /** * 下拉框选中值对应的KEY */ dataKey?: string; /** * 下拉框循环对应的KEY */ componentKey?: string; /** * 下拉框显示值对应的KEY */ titleKey?: string; /** * 拼接字段对应的key */ joinKey?: string | string[]; /** * 拼接形式 */ joinStr?: string; /** * 换行展示的数据 */ lineFeedKey?: string | string[]; /** * 换行拼接符 */ lineFeedStr?: string; /** * 是否显示全部,全部的value为空字符串 */ showAll?: boolean; /** * 是否缓存,默认不缓存,缓存的处理,存到全局数据里 * 更新只能通过刷新页面来实现,或者查询条件发生改变 */ isCatch?: boolean; /** * 通过request做接口缓存的时候 isCatch 还会有一些条件过滤 * 比如page结尾的接口不会缓存 需要传入 mustCatch 才会必须缓存 * 因为不是所有的接口都是page结尾就不缓存的 所以这里默认使用缓存 */ mustCatch?: boolean; /** * 数据加载完毕触发 */ onCompleted?: (data: any) => void; /** * 数据发生改变时触发 */ onChange?: (value: string, option: string, completeData?: any) => void; /** * 发送接口请求的方法 * 如果要支持远程搜索、异步获取数据,必须传入request方法(类似axios方法) */ request?: any; /** * 是否远程搜索 */ remoteSearch?: boolean; /** * 远程搜索Key值 */ remoteSearchKey?: string; /** * 远程搜索主键Key值 */ remoteSearchDataKey?: string; /** * 是否启用远程搜索主键Key值 */ isRemoteSearchDataKey?: boolean; /** * 接口数据格式转换,这个props会直接作用于接口数据处 * 如果设置了缓存,会直接影响到缓存的数据 * 并且如果之前该下拉框被缓存了,那么也不会受到任何影响 * 这个方法需要用useCallback包裹,因为内部有副作用依赖,不包裹会引起多次请求 */ transformData?: (res: any) => any; /** * 这个只针对数据展示,并且这个只对当前设置的下拉框有影响 * 这个不会存在缓存的现象,只对当前下拉框展示数据造成影响 */ transformRenderData?: (res: any) => any; /** * 增加必传参数组 */ mustHasParams?: string | string[]; /** * 增加需要禁用的选项 */ disabledValues?: any[]; /** * 搜索时需要删除的key */ searchDeleteKeys?: string[]; /** * 是否手动添加 */ isHandAddItem?: boolean; /** * 是否分页 */ isPage?: boolean; /** * 每页多少条 */ currentSize?: number; /** * 是否需要选中复制到剪切板 */ isCopy?: boolean; /** * 是否点击时才请求 */ isClickRequest?: boolean; handleRef?: any; /** * 是否粘贴根据一定规则直接设置成数据。 * 类似于粘贴板中:'小明,小红,小丽' * 需要调用onChange方法,选中 选中 小明、小红、小丽 */ isPaste?: boolean; pasteRule?: string[]; dropdownRenderBtns?: any; onContextMenuCapture?: (e: any) => void; /** * 是否使用拼音搜索 */ isPinyinSearch?: boolean; } export declare function clearCatchData(url: string): void; /** * 增强下拉框功能组件 * 添加远程搜索 * 添加数据缓存配置 * 1、可以直接传入一个list当作下拉框选中的值 * 2、可以通过传入接口地址、参数等,异步获取数据 * 要求a:必须传入 url、request属性 * 要求b:接口返回数据必须是如下格式 * { code: 200, data: [] } || { status: 200, data: { code: 200, data: [] } } * 3、也可以通过传入remoteSearch属性表示远程搜索(每次搜索都会发送请求) * 要求a:必须传入 url、request属性 * 要求b:接口返回数据必须是如下格式 * { code: 200, data: { records: [] } } || { status: 200, data: { code: 200, data: { records: [] } } } * 如果数据不能在接口层面满足以上形式,那么组件提供transformData属性,转换接口数据格式 */ declare function EnhanceSelect({ list, defaultList, params, url, method, timeout, dataKey, componentKey, titleKey, showAll, isCatch, mustCatch, onCompleted, onChange, onSearch, request, remoteSearch, remoteSearchKey, remoteSearchDataKey, isRemoteSearchDataKey, transformData, transformRenderData, joinKey, joinStr, lineFeedKey, lineFeedStr, mustHasParams, disabledValues, searchDeleteKeys, isHandAddItem, isPage, currentSize, isCopy, onBlur, onFocus, isClickRequest, handleRef, isPaste, pasteRule, dropdownRenderBtns, dropdownMatchSelectWidth, onContextMenuCapture, isPinyinSearch, ...restProps }: IProps): JSX.Element; declare const _default: React.MemoExoticComponent; export default _default;