Skip to content

表单配置协议

Schema

ts
interface formSchema {
  //表单域配置
  formAreaConfig: FormAreaConfig;
  //表单项/布局项配置数组
  formContentConfigList: ComponentConfig[];
}

表单域

ts
interface FormAreaConfig {
  // 表单域默认创建按钮
  defaultCreateBtn?: string | boolean;
  // 表单域默认重置按钮
  defaultRestBtn?: string | boolean;
  // 表单域属性配置
  attrs: {
    //表单校验规则
    rules?: FormRules;
    //行内表单模式
    inline?: boolean;
    //禁用表单
    disabled?: boolean;
    //其他需要配置到el-form组件上的任何属性
    [key: string]: unknown;
  };
  //扩展配置
  [key: string]: unknown;
}

表单节点

  • 组件类型
ts
type ComponentConfig = FormCompConfig | LayoutCompConfig;
  • 基础配置
ts
interface BaseConfig {
  //唯一ID
  id: string;
  //组件名称
  componentName: ComponentName;
  //组件类型
  componentType: ComponentType;
  //排序
  sort?: number;
  //组件插槽
  slots?: Slots;
  //组件发是否可见
  visible?: boolean | DynamicProp<boolean>;
  //组件事件配置
  events?: EventConfig[];
}

TIP

组件名称 componentName 必须是内置已注册组件名称、不然会提示未注册组件

表单组件

ts
interface FormCompConfig extends BaseConfig {
  //表单组件
  componentType: "form";
  //字段、标签、规则等配置
  formItemAttrs: {
    //字段
    field: string;
    //标签
    label?: string;
    //必填配置
    required?: boolean;
    //字段校验规则配置
    rules?: FormRules;
    //其他扩展字段
    [key: string]: unknown;
  };
  //默认值
  defaultValue?: unknown;
  //组件属性
  attrs: Attrs & {
    //禁用配置
    disabled?: boolean | DynamicProp<boolean>;
    //只读配置
    readonly?: boolean | DynamicProp<boolean>;
  };
}

布局组件

ts
export interface LayoutCompConfig extends BaseConfig {
  //布局组件
  componentType: "layout";
  //组件属性
  attrs: Attrs;
  //子组件
  children?: Array<ComponentConfig | string>;
}

组件属性

ts
interface Attrs {
  //选项配置
  options?: OptionsConfig;
  //组件的内联样式
  style?: string | Record<string, unknown>;
  //输入提示配置
  placeholder?: string;
  //根据配置的组件所需要的属性自行配置
  [key: string]: unknown;
}

Released under the MIT License.