/**
 * 表单字段类型定义
 */
export enum FieldType {
    STRING = 1, // 字符串
    NUMBER = 2, // 数字
    DATE = 3, // 日期
    RADIO = 4, // 单选
    CHECKBOX = 5, // 多选
    FILE = 6, // 文件上传
    CustomInfor = 7, //多行文本
    PICK = 8, //图片上传
    PICKANDDEC = 9, //图文描述
    TEXTANDDEC = 10 //文本描述
}

/**
 * 表单字段定义类
 */
export class FieldDefinition {
    /** 字段名称 (可选) */
    name?: string;

    /** 字段类型 (可选) */
    type?: string;

    /** 字段标签 (可选) */
    label?: string;

    /** 是否必填 (可选) */
    required?: string;

    /** 是否只读 (可选) */
    readonly?: string;

    /** 可选项(可选) */
    options?: Array<{
        label: string;
        value: string;
    }>;

    /** 正则表达式 (可选) */
    pattern?: string;

    /** 默认值 (可选) */
    defvalue?: string | any[];

    /** 字段排序 (可选) */
    sort?: number;

    /** 字段描述 (可选) */
    description?: string;

    constructor(data?: Partial<FieldDefinition>) {
        // 初始化所有字段为undefined
        Object.keys(this).forEach((key) => {
            this[key] = undefined;
        });
        if (data) {
            Object.assign(this, data);
        }
    }
}
