04-示例数据.md 13.3 KB

示例数据

完整表单配置示例

示例 1:用户信息表单

{
  key: "field_1",
  value: "",
  component_props: {
    tag: "input",
    name: "name",
    label: "姓名",
    placeholder: "请输入姓名",
    required: true,
    default: ""
  }
}

示例 2:性别选择

{
  key: "field_2",
  value: "",
  component_props: {
    tag: "gender",
    name: "gender",
    label: "性别",
    required: true,
    default: "",
    options: [
      {
        title: "男",
        value: "男",
        checked: false
      },
      {
        title: "女",
        value: "女",
        checked: false
      }
    ]
  }
}

示例 3:手机号输入

{
  key: "field_3",
  value: "",
  component_props: {
    tag: "phone",
    name: "phone",
    label: "手机号",
    placeholder: "请输入手机号",
    required: true,
    default: ""
  }
}

示例 4:单项选择(带补充信息)

{
  key: "field_4",
  value: "",
  component_props: {
    tag: "radio",
    name: "category",
    label: "报名类型",
    required: true,
    direction: "vertical",
    default: "",
    options: [
      {
        title: "个人报名",
        value: "personal",
        checked: true,
        color: "#1989fa"
      },
      {
        title: "团队报名",
        value: "team",
        checked: false,
        color: "#ff976a"
      },
      {
        title: "其他",
        value: "other",
        checked: false,
        is_input: true,              // 启用补充输入
        input_required: true,        // 补充信息必填
        input_placeholder: "请说明具体类型",
        desc_text: "请选择最符合的报名类型",
        desc_type: "text",
        desc_btn_name: "查看说明"
      }
    ]
  }
}

示例 5:多项选择

{
  key: "field_5",
  value: [],
  component_props: {
    tag: "checkbox",
    name: "hobbies",
    label: "兴趣爱好",
    required: false,
    direction: "vertical",
    options: [
      {
        title: "运动",
        value: "sport",
        checked: false,
        background_color: "#f0f9ff"
      },
      {
        title: "阅读",
        value: "reading",
        checked: false,
        background_color: "#fff0f0"
      },
      {
        title: "音乐",
        value: "music",
        checked: false,
        background_color: "#f0fff0"
      },
      {
        title: "旅游",
        value: "travel",
        checked: false,
        background_color: "#fffaf0"
      }
    ]
  }
}

示例 6:下拉选择

{
  key: "field_6",
  value: "",
  component_props: {
    tag: "select",
    name: "city",
    label: "所在城市",
    placeholder: "请选择城市",
    required: true,
    options: [
      { text: "北京", value: "beijing" },
      { text: "上海", value: "shanghai" },
      { text: "广州", value: "guangzhou" },
      { text: "深圳", value: "shenzhen" }
    ]
  }
}

示例 7:地址选择

{
  key: "field_7",
  value: "",
  component_props: {
    tag: "address",
    name: "address",
    label: "详细地址",
    placeholder: "请选择省市区",
    required: true
  }
}

示例 8:日期选择

{
  key: "field_8",
  value: "",
  component_props: {
    tag: "date",
    name: "birthday",
    label: "出生日期",
    placeholder: "请选择日期",
    required: true
  }
}

示例 9:图片上传

{
  key: "field_9",
  value: [],
  component_props: {
    tag: "image_uploader",
    name: "photos",
    label: "上传照片",
    required: true,
    max_count: 3,        // 最多3张
    max_size: 5,         // 最大5MB
    default: []
  }
}

示例 10:多行文本

{
  key: "field_10",
  value: "",
  component_props: {
    tag: "textarea",
    name: "description",
    label: "个人简介",
    placeholder: "请输入个人简介",
    required: false,
    default: ""
  }
}

示例 11:电子签名

{
  key: "field_11",
  value: "",
  component_props: {
    tag: "sign",
    name: "signature",
    label: "本人签名",
    required: true,
    default: ""
  }
}

示例 12:评分

{
  key: "field_12",
  value: "",
  component_props: {
    tag: "rate",
    name: "rating",
    label: "活动评分",
    required: true,
    x_score: 5,         // 默认5分
    default: ""
  }
}

示例 13:身份证号

{
  key: "field_13",
  value: "",
  component_props: {
    tag: "id_card",
    name: "id_card",
    label: "身份证号",
    placeholder: "请输入身份证号",
    required: true
  }
}

示例 14:邮箱

{
  key: "field_14",
  value: "",
  component_props: {
    tag: "email",
    name: "email",
    label: "电子邮箱",
    placeholder: "请输入邮箱地址",
    required: false
  }
}

示例 15:预约控件

{
  key: "field_15",
  value: "",
  component_props: {
    tag: "appointment",
    name: "appointment_time",
    label: "预约时间",
    required: true,
    appointment_title: "选择预约时间段",
    options: [
      {
        title: "03月27日",
        placeholder: "剩余余量 98",
        disabled: false,
        columns: [
          {
            checked: false,
            disabled: false,
            value: "1",
            text: "09:00-10:30 余98"
          },
          {
            checked: false,
            disabled: false,
            value: "2",
            text: "14:00-15:30 余50"
          },
          {
            checked: false,
            disabled: true,
            value: "3",
            text: "16:00-17:30 余0"
          }
        ]
      },
      {
        title: "03月28日",
        placeholder: "剩余余量 120",
        disabled: false,
        columns: [
          {
            checked: false,
            disabled: false,
            value: "4",
            text: "09:00-10:30 余120"
          },
          {
            checked: false,
            disabled: false,
            value: "5",
            text: "14:00-15:30 余80"
          }
        ]
      }
    ]
  }
}

示例 16:表格编辑

{
  key: "field_16",
  value: "",
  component_props: {
    tag: "table_editor",
    name: "table_data",
    label: "物品清单",
    default: "<table><tr><th>名称</th><th>数量</th></tr><tr><td>物品A</td><td>10</td></tr></table>"
  }
}

示例 17:集合组

{
  key: "field_17",
  value: "",
  component_props: {
    tag: "group",
    name: "group_info",
    label: "物品信息",
    field_groups: [
      {
        tag: "input",
        name: "item_name",
        label: "物品名称",
        field_name: "field_18",
        group_field_name: "field_17",
        placeholder: "请输入物品名称",
        required: true
      },
      {
        tag: "number",
        name: "item_count",
        label: "数量",
        field_name: "field_19",
        group_field_name: "field_17",
        placeholder: "请输入数量",
        required: true
      }
    ]
  }
}

示例 18:规则说明

{
  key: "field_20",
  value: "",
  component_props: {
    tag: "rule",
    name: "rule_info",
    label: "活动规则",
    default: "",
    desc_text: "1. 活动时间:2024年3月1日-3月31日\n2. 参与资格:18岁以上\n3. 每人限参与一次",
    desc_type: "text",
    desc_btn_name: "查看完整规则"
  }
}

示例 19:只读字段

{
  key: "field_21",
  value: "系统自动生成",
  component_props: {
    tag: "input",
    name: "readonly_field",
    label: "申请编号",
    readonly: true,       // 只读
    default: "系统自动生成"
  }
}

示例 20:带提示的字段

{
  key: "field_22",
  value: "",
  component_props: {
    tag: "input",
    name: "username",
    label: "用户名",
    placeholder: "请输入用户名",
    required: true,
    note: "用户名长度为4-16个字符,支持字母、数字、下划线"
  }
}

示例 21:带扫码的输入框

{
  key: "field_23",
  value: "",
  component_props: {
    tag: "input",
    name: "qr_code",
    label: "二维码",
    placeholder: "请输入或扫描二维码",
    required: true,
    is_camera_scan: true,
    camera_scan_type: "QR_CODE"  // ALL_CODE | QR_CODE | BAR_CODE
  }
}

示例 22:分割线

{
  key: "field_24",
  value: "",
  component_props: {
    tag: "divider",
    name: "divider",
    label: "分割线"
  }
}

示例 23:富文本说明

{
  key: "field_25",
  value: "",
  component_props: {
    tag: "note",
    name: "rich_text",
    label: "活动详情",
    default: "<p>这是一段<strong>富文本</strong>内容</p>"
  }
}

复杂表单完整示例

const formConfig = [
  // 基本信息
  {
    key: "field_name",
    value: "",
    component_props: {
      tag: "name",
      label: "姓名",
      required: true,
      placeholder: "请输入姓名"
    }
  },
  {
    key: "field_gender",
    value: "",
    component_props: {
      tag: "gender",
      label: "性别",
      required: true
    }
  },
  {
    key: "field_phone",
    value: "",
    component_props: {
      tag: "phone",
      label: "手机号",
      required: true,
      placeholder: "请输入手机号"
    }
  },

  // 报名信息
  {
    key: "field_type",
    value: "",
    component_props: {
      tag: "radio",
      label: "报名类型",
      required: true,
      direction: "vertical",
      options: [
        { title: "个人报名", value: "personal", checked: true },
        { title: "团队报名", value: "team" },
        {
          title: "其他",
          value: "other",
          is_input: true,
          input_placeholder: "请说明具体类型"
        }
      ]
    }
  },

  // 附加信息
  {
    key: "field_hobbies",
    value: [],
    component_props: {
      tag: "checkbox",
      label: "兴趣爱好",
      direction: "vertical",
      options: [
        { title: "运动", value: "sport" },
        { title: "阅读", value: "reading" },
        { title: "音乐", value: "music" }
      ]
    }
  },

  // 时间选择
  {
    key: "field_date",
    value: "",
    component_props: {
      tag: "date",
      label: "活动日期",
      required: true,
      placeholder: "请选择日期"
    }
  },

  // 图片上传
  {
    key: "field_photo",
    value: [],
    component_props: {
      tag: "image_uploader",
      label: "上传照片",
      required: true,
      max_count: 3,
      max_size: 5
    }
  },

  // 说明文字
  {
    key: "field_note",
    value: "",
    component_props: {
      tag: "note",
      label: "注意事项",
      default: "<p>请确保所填信息真实有效</p>"
    }
  },

  // 电子签名
  {
    key: "field_sign",
    value: "",
    component_props: {
      tag: "sign",
      label: "本人签名",
      required: true
    }
  }
]

数据提交格式

提交到后端的格式

{
  form_code: "form_001",
  data: {
    field_name: "张三",
    field_gender: "男",
    field_phone: "13800138000",
    field_type: {
      key: "field_type",
      value: "personal",
      type: "radio"
    },
    field_hobbies: {
      key: "field_hobbies",
      value: ["sport", "music"],
      type: "checkbox"
    },
    field_date: "2024-03-15",
    field_photo: {
      key: "field_photo",
      value: [
        { url: "https://...", name: "photo1.jpg" }
      ],
      type: "image_uploader"
    },
    field_sign: {
      key: "field_sign",
      value: "data:image/png;base64,...",
      type: "sign"
    }
  }
}

LangChain Agent 使用的提示词模板

const FORM_GENERATION_PROMPT = `
你是一个表单配置生成专家。根据用户的自然语言描述,生成符合以下规范的表单字段配置。

## 组件类型映射

用户描述 → 组件类型:
- "姓名/名字" → name
- "性别" → gender
- "手机号/电话" → phone
- "邮箱" → email
- "身份证" → id_card
- "单选/单项选择" → radio
- "多选/多项选择" → checkbox
- "下拉/选择" → select
- "日期" → date
- "时间" → time
- "地址/省市区" → address
- "图片上传" → image_uploader
- "文件上传" → file_uploader
- "多行文本/描述/简介" → textarea
- "数字" → number
- "评分/打分" → rate
- "签名/电子签名" → sign
- "富文本/说明" → note
- "分割线" → divider

## 必填属性

- "必填/必须/一定要" → required: true
- "可选/非必须" → required: false

## 配置模板

### 文本输入
{
  key: "field_{index}",
  value: "",
  component_props: {
    tag: "input",
    name: "{field_name}",
    label: "{显示名称}",
    placeholder: "请输入{显示名称}",
    required: {是否必填}
  }
}

### 单选/多选
{
  key: "field_{index}",
  value: "",
  component_props: {
    tag: "{radio|checkbox}",
    name: "{field_name}",
    label: "{显示名称}",
    required: {是否必填},
    direction: "vertical",
    options: [
      { title: "{选项1}", value: "{value1}" },
      { title: "{选项2}", value: "{value2}" }
    ]
  }
}

### 图片上传
{
  key: "field_{index}",
  value: [],
  component_props: {
    tag: "image_uploader",
    name: "{field_name}",
    label: "{显示名称}",
    required: {是否必填},
    max_count: {数量},
    max_size: {大小MB}
  }
}

请根据用户需求生成对应的表单配置JSON。
`;