/**************************************************** * Audit Information Platform Component * 搜索参照项基类 * 2020-08 * Sunny ****************************************************/ import { PureComponent } from 'react'; import { RefItemValueChange, StringStringMap } from '../types'; /** * 最基础的参照项属性,在使用的时候,一般还会结合RefernceItem类型进行组合: extends RefernceItem, ReferenceItem {...} */ export interface RefItemProp { name: string; multiple?: '1' | '0'; needFields?: string[]; label?: string; defaultValue?: string; refItemValueChange?: RefItemValueChange; } /** * 最基础的状态类型,一般情况下可以不予考虑 */ export interface RefItemState { defaultValue: string; value: string; } /** * 基类提供每个参照项的基本处理例程和数据结构 * * 参照的组件都是继承子 RefItem,如 * * interface RadioRefProp extends RefItemProp { * ... * } * * class RadioRef extends RefItem { * ... * } */ declare class RefItem

extends PureComponent { /** * 通知其他组件,子类直接调用,需要在托管组件的onChange中调用 * @function * @param {string | null} value */ refItemValueChange: (value: string | null) => void; /** * 获取自己所依赖(不是驱动依赖,是参数依赖)的名字(参照.getName())数组 * @function * @returns {string[]} */ getNeedFields: () => string[]; /** * 返回当前参照名称 * @function * @returns {string} */ getName: () => string; /** * 返回当前参照显示标题(若没有设置,会返回getName()的值) * @function * @returns {string} */ getLabel: () => string; /** * 清空操作,子类需要 **override** * @function */ clear: () => void; /** * 获取数据的方法,会被调度系统触发 ** 每个子类必须实现 ** * * 如果有`defaultValue`必须调用 * ~~~javascript * // async or sync get load from remote or local * if (defaultValue) { * // other code ... * this.refItemValueChange(defaultValue); * } * @function * @param params 依赖的参数 StringStringMap 对象 * @param defaultValue 默认值,可选的string参数,如果有默认值,需要在`loadData`后设置设置关联值,再调用`refItemValueChange`通知调度器 */ loadData: (params: StringStringMap, defaultValue?: string) => void; /** * 获取组件选择/录入的返回值,按需 **override** * @function * @returns {string} */ getValue: () => string; /** * 设置组件的默认值(可以随时调用) **override** * 默认会赋值给 `state.value` * @function * @param {string} value */ setDefaultValue: (value: string) => void; render(): JSX.Element; } /** * 参照类型的别名,用于组件的对象的类型定义 */ export declare type RefItemInstance = RefItem; export default RefItem;