/** * 和组件json相关的interface */ import { ReactNode } from 'react'; import { BaseTypeEnum, ButtonHtmlTypeEnum, ButtonTypeEnum, ControlRulesEnum, DatePickerModeEnum, DefaultModeEnum, ExtendFormTypeEnum, FormItemTypeEnum, FormLayoutEnum, FormLayoutTypeEnum, LabelAlignEnum, ModelItemTypeEnum, OptionsModeEnum, FormulaTypeEnum, NumComputedTypeEnum, DateComputedTypeEnum, ArrangementModeEnum, SplitStyleEnum, PlacementEnum, SummaryTypeEnum } from '../enum'; import { IColumnAttr, IFilterRulesAttr, IOptionsAttr, IRowsAttr, ISerialRuleAttr, IUserRangeAttr } from './comp.interface'; import { IFormSummaryAttr } from './form.interface'; import { IRuleAttr } from './rule.interface'; import { IFilterItem } from './filter.interface'; export declare type IElementType = FormItemTypeEnum | FormLayoutTypeEnum | BaseTypeEnum; export interface IFormSettingsAttr { label: string; name: string; valuePropName?: string; rules?: Array; labelWidth?: number; layout?: FormLayoutEnum; labelAlign?: LabelAlignEnum; colon?: boolean; extendFormType?: ExtendFormTypeEnum; mainForm?: IFormSummaryAttr; } export interface IFormItemSettingsAttr { bordered?: boolean; size?: string; mode?: string; disabled?: boolean; type?: ButtonTypeEnum | any; icon?: string; htmlType?: ButtonHtmlTypeEnum; ghost?: boolean; text?: string; allowClear?: boolean; maxLength?: number; defaultValue?: any; defaultMode?: DefaultModeEnum; readonly?: boolean; placeholder?: string; addonBefore?: string; addonAfter?: string; prefix?: string | ReactNode; suffix?: string | ReactNode; autoSize?: boolean | IRowsAttr; visibilityToggle?: boolean; precision?: number; step?: number; showSearch?: boolean; options?: Array; staticOptions?: Array; optionFilterProp?: string; maxTagCount?: number; showArrow?: boolean; remoteMode?: OptionsModeEnum; dataSourceId?: string; showTime?: boolean; showToday?: boolean; format?: string; showNow?: boolean; hourStep?: number; minuteStep?: number; secondStep?: number; range?: boolean; max?: number; min?: number; dots?: boolean; reverse?: boolean; tooltipVisible?: boolean; tooltipPlacement?: PlacementEnum; checkedChildren?: string | ReactNode; unCheckedChildren?: string | ReactNode; allowHalf?: boolean; count?: number; showPercent?: boolean; showThousandth?: boolean; arrangementMode?: ArrangementModeEnum; picker?: DatePickerModeEnum; title?: string; titleVisible?: boolean; visible?: boolean; splitLineStyle?: SplitStyleEnum; } export interface ISettingsAttr { span?: number; width?: string; hidden?: boolean; } export interface IComponentSettingsAttr { addHidden?: boolean; ruleTypes?: Array; remark?: string; formCode?: string; color?: boolean; primaryKey?: boolean; mainColumn?: boolean; srcFormId?: string; srcFormName?: string; srcFormCode?: string; childElementId?: string; isSetViewId?: boolean; isDefaultFirst?: boolean; relViewId?: string; showCols?: Array; addRecord?: boolean; isSelfRelation?: boolean; bdSrcElementId?: string; srcElementId?: string; srcColumnId?: string; serialRules?: Array; pluginSvg?: ReactNode | string; help?: string; isSpecialTable?: boolean; relationElements?: Array; userRangeSelected?: IUserRangeAttr; receiveMesgWhenJoining?: boolean; userAuth?: string; combinedTextSelect?: string; count?: number; isLimitCount?: boolean; formulaType?: FormulaTypeEnum; numComputedType?: NumComputedTypeEnum; dateComputedType?: DateComputedTypeEnum; relatedElementCodes?: string; relatedFormItem?: string; summaryItem?: string; summaryType?: SummaryTypeEnum; filter?: Array; filterRules?: Array; } export interface IElementDataAttr { formSettings?: IFormSettingsAttr; formItemSettings?: IFormItemSettingsAttr; settings?: ISettingsAttr; componentSettings?: IComponentSettingsAttr; events?: Array; } export interface IElementAttr { id: string; data: IElementDataAttr; type: IElementType; title?: string; elements: Array; path: string; modelType?: ModelItemTypeEnum; hasBeenSaved?: boolean; isEditing?: boolean; row?: number; col?: number; isMainItem?: boolean; mainId?: string; cascadeId?: string; }