import { ISelectProps } from '../select/interface.js'; interface IEnhanceSelectProps extends ISelectProps { /** * 发送请求的方法(同axios),通常业务那边会封装一个代理的request方法,可以通过context获取,不是必传 */ request?: any; /** * 接口请求地址。接口返回的数据,组件支持接口数据返回两种模式 * 一种是 { ..., data: [] } * 另一种是分页的模式 { ..., records: [], total: xx, size: xx, current: xx } */ url?: string; /** * 接口请求参数。 */ params?: any; /** * 请求类型 */ method?: string; /** * 超时时间 单位毫秒 默认2分钟 * @default 120000 */ timeout?: number; /** * 数据是否缓存。对于那些不分页的接口,默认是缓存数据的。 * 分页的接口,默认是不缓存数据的。 */ isCache?: boolean; /** * 转换数据的方法。 * 接受接口返回的数据,返回一个数组。可以直接给下拉框使用的数组。 * 组件有默认实现:分页接口、不分页接口的转换。 * 如果接口返回的数据,跟默认有冲突,需要自定义转换方法。 * 如果是不分页接口:返回的数据是一个数组即可 * 如果是分页接口:返回的格式按照 { current: number, size: number, total: number, records: any[] }; 这种格式 * 大多数情况下,是按中拓这边的分页接口处理数据的,所以不需要做其他处理。除非特殊情况 */ transformData?: (data: any) => any; /** * 对于那些分页接口,数据回显的时候会有一个问题。因为组件默认只会加载第一页数据,但是用户选择的时候,可能数据并不是第一页的。 * 这就会导致回显的时候,数据比对不上,显示一个id。 * 这里的做法是,通过当前选中的值,再首次加载的时候去根据id去请求数据。 * 查询的key是什么?默认会去 dataKey,如果你的逐渐查询不是dataKey,可以自定义。 * 有一个更好的方法,就是分页接口额外加一个参数,这个参数来传入主键的值。 * 后端查询的时候,把这个参数和状态值一起查询,不额外添加参数。查询到后,直接追加到分页的数据中。 * 这样做的一个好处就是,即使是第一次,也能查到应有的数据。 * 但是,这个方法需要后端配合。 */ firstLoadDataKey?: string; /** * 接口是否分页 */ isPage?: boolean; /** * 每页多少条 默认每页50条 */ pageSize?: number; /** * 远程搜索的key值。默认会采用titleKey作为搜索的key值。也可以是指定的值 */ remoteSearchKey?: string; /** * 哪些查询参数有值,才进行查询 */ mustQueryKeys?: string | string[]; } export { IEnhanceSelectProps };