import { DSLNodeType, DSLQuery } from '@lingxiteam/dsl'; import BaseCmd from './Base/BaseCmd'; interface FormCmdProps { } interface IFormItemOptions { /** * 表单节点 */ formNode?: DSLNodeType; /** * 渲染的表单项数组 */ values: any[]; /** * 是否追加到表单节点 */ isAppend?: boolean; /** * 是否需要处理数据 */ needDealCoom?: boolean; /** * 是否处理组件在表单内的位置 */ addIndex?: boolean; } export interface IPublicGenerateFormItemOptions { /** * 表单节点 */ formNode: DSLNodeType; /** * 数据项项 */ dataSourceItem: any; /** * 过滤条件 可以配置某些内容不生成 * @returns */ predicate?: (item: any, index: number) => boolean; /** * 排序方法 可以配置表单的排序规则 * @returns */ sort?: (pre: any, cur: any) => number; /** * 全局数据源 */ globalDataSource?: any[]; } interface FormInitialConfigType { DSLCore: DSLQuery; compCreators: () => Record; objectService?: any[]; changeDataSoureColumns?: (e: any, ctx: any) => void; createFormItems?: (e: { paramsValue: string; }) => void; genRuleType: 'key' | 'object'; isQueryForm: boolean; /** * 是否开启双向绑定 */ bothwayBind?: boolean; } declare class FormCmd extends BaseCmd { formConfig?: FormInitialConfigType; initialConfig(config: FormInitialConfigType): void; private getComponentsByValues; /** * 生成表单子项 * @param options */ createFormItem(options: IFormItemOptions): any[]; private disFormData; /** * 通过数据源生成表单 * @param opts */ private generateFormItem; private getFormItem; /** * 通过数据源生成表单 */ generateFormItemByDataSource(opts: IPublicGenerateFormItemOptions, type?: 'data' | 'globalData'): void; getFormItemByDataSource(opts: IPublicGenerateFormItemOptions): any[]; } export default FormCmd;