/**************************************************** * Audit Information Platform Component * 高级查询(展示全字段查询) * 2021-01 * Sunny ****************************************************/ import * as React from 'react'; import { PureComponent } from 'react'; import '../style/Other.css'; /** * 具体每个条件项对象(最小单位) */ export interface CondItem { andor: string; leftQ: string; field: string; assign: string; value: string | string[]; rightQ: string; } export interface SelectValueParam { field: string; index: number; } /** * 每行条件组件的属性定义 */ export interface ConditionItemProp { idx: number; cond: CondItem; selectOn?: boolean; columns?: any[]; addCond?: (idx?: number) => void; delCond?: (idx: number) => void; selectValue?: (param: SelectValueParam) => void; } export interface ConditionProp { filterParam?: CondItem[]; columns?: any[]; selectOn?: boolean; selectValue?: (param: SelectValueParam) => void; } declare class Condition extends PureComponent { state: { conds: CondItem[]; condKey: string; expression: string; }; UNSAFE_componentWillReceiveProps(preProps: ConditionProp): void; componentDidMount(): void; private getAndOr; private getAssign; private getField; buildExpr: () => void; /** * 增加条件 * @function * @param {number} idx 从第几个条件增加(可选),默认为加到最后 */ private addCond; /** * 删除条件 * @function * * @param {number} idx 条件索引 */ private delCond; /** * 校验条件 * @function * * @returns {boolean} 条件校验结果 */ private checkConditions; getCondition_unsafe: () => any; /** * 获取过滤条件 * @function * @returns {CondItem[]} 过滤条件 */ getConditions: () => CondItem[] | null; /** * 获取过滤表达式 * @function * @returns {string} 可读的表达式 */ getCondExpression: () => string; render(): JSX.Element; } /** * 字段过滤对话框属性定义 */ export interface FieldsFilterProp extends ConditionProp { show?: boolean; doSearch?: (param: CondItem[] | null) => void; close?: () => void; doClean?: () => void; title?: string; } /** * 字段过滤对话框 * 提供字段过滤操作,组件关系如下: FieldsFilter(modal:ReactNode) 1..1 Condition(ReactNode) 1..n ConditionItem(ReactNode) 1..1 CondItem(PlainObject) */ declare class FieldsFilter extends PureComponent { conditionRef: React.RefObject; state: { show: boolean; columns: any[]; filterParam: any[]; condKey: string; selectOn: boolean; originFilterParam: never[]; }; UNSAFE_componentWillReceiveProps(nextProps: FieldsFilterProp): void; /** * 打开字段过滤器 * @function * @param {any[]} columns 字段信息 * @param {CondItem[]} filters 已存在的过滤条件 */ open: (columns: any[], filters: CondItem[]) => void; /** * 获取过滤条件 * @function * @returns {CondItem[]} 过滤条件 */ getConditions: () => CondItem[]; /** * 关闭过滤器对话框 * @function */ close: () => void; /** * 过滤触发事件调用 * @function * */ doSearch: () => void; /** * 获取表达式 * @function * * @returns {string} */ getCondExpression: () => string; /** * 清除事件调用 * @function */ doClean: () => void; render(): JSX.Element; } export default FieldsFilter;