TDucKX技术文档
产品能力分析
表单数据对接
TDuckX 后端项目
TDuckX 前端项目
Uniapp 移动端
表单开放API
【表单】追加单题
接入说明
TDuck 表单开放平台 V2 题型与配置模型手册
TDuck MCP Server 与 OAuth 2.0 接入指南
【文件夹】创建文件夹
【文件夹】获取文件夹列表
【文件夹】移动表单到文件夹
【表单数据】批量新增填报数据
【表单数据】新增单条填报数据
【表单数据】删除单条填报数据
【表单数据】获取单条数据明细
【表单数据】获取表单数据列表
【表单数据】修改单条填报数据
【表单数据】上传附件 / 图片
【表单】复制表单
【表单】创建表单 (V2 极简模式)
【表单】删除单题
【表单】逻辑删除表单
【表单】查询表单详情
【表单】获取题目列表
【表单】获取表单列表
【表单】发布表单
【表单】全量覆盖替换题目
【表单】停止表单收集
【表单】修改表单基础信息
【表单】修改单题
【表单】复合更新表单
用户登录集成
多数据库适配
系统配置
如何部署或更新

TDuck 表单开放平台 V2 题型与配置模型手册

TDuck 表单开放平台 V2 题型与配置模型手册

本手册详细列出 OpenAPI V2 极简模式下所支持的题型定义规范选项模型在线考试评分配置表单全局设置 7 大模块主题美化显隐跳题逻辑规则


目录


一、 题型定义与填报数据规范

每个题目在定义时均支持指定全局唯一的 id(自定义题目 ID,如 q_nameq_age)。在后续通过 /open/v2/form/data/* 录入和读取数据时,data 对象的 Key 即为此 id

1.1 基础输入类

1. 单行文本 (INPUT)

  • 定义参数
    {
      "id": "q_name",
      "type": "INPUT",
      "label": "真实姓名",
      "required": true,
      "placeholder": "请输入您的姓名"
    }
    
  • 数据填报格式String,如 "张三"

2. 多行文本 (TEXTAREA)

  • 定义参数
    {
      "id": "q_remark",
      "type": "TEXTAREA",
      "label": "个人简介/备注",
      "required": false,
      "placeholder": "请输入详细描述"
    }
    
  • 数据填报格式String,如 "五年云原生研发经验..."

3. 数字输入 (NUMBER)

  • 定义参数
    {
      "id": "q_age",
      "type": "NUMBER",
      "label": "年龄",
      "required": true
    }
    
  • 数据填报格式Number,如 28

1.2 选择与选项类

1. 单选题 (RADIO)

  • 定义参数(支持直接传字符串数组或带标签/值的对象数组):
    {
      "id": "q_gender",
      "type": "RADIO",
      "label": "性别",
      "required": true,
      "options": ["男", "女"]
    }
    
  • 数据填报格式String,如 "男"

2. 多选题 (CHECKBOX)

  • 定义参数
    {
      "id": "q_skills",
      "type": "CHECKBOX",
      "label": "掌握技能",
      "required": true,
      "options": [
        {"label": "Java", "value": "Java"},
        {"label": "Go", "value": "Go"},
        {"label": "Python", "value": "Python"}
      ]
    }
    
  • 数据填报格式Array<String>,如 ["Java", "Python"]

3. 下拉单选 (SELECT) 与 下拉多选 (MULTIPLE_SELECT)

  • 定义参数
    {
      "id": "q_city",
      "type": "SELECT",
      "label": "所在城市",
      "options": ["北京", "上海", "广州", "深圳", "杭州"]
    }
    
  • 数据填报格式
    • SELECTString,如 "北京"
    • MULTIPLE_SELECTArray<String>,如 ["北京", "上海"]

1.3 日期与高级输入类

1. 日期时间 (DATE)

  • 定义参数
    {
      "id": "q_birthday",
      "type": "DATE",
      "label": "出生日期",
      "required": true
    }
    
  • 数据填报格式String,如 "1995-08-18""2026-08-20 14:00:00"

2. 评分组件 (RATE)

  • 定义参数
    {
      "id": "q_score",
      "type": "RATE",
      "label": "服务满意度打分",
      "defaultValue": 5
    }
    
  • 数据填报格式Number,如 5

3. 滑块组件 (SLIDER)

  • 定义参数
    {
      "id": "q_percent",
      "type": "SLIDER",
      "label": "项目完成进度",
      "defaultValue": 60
    }
    
  • 数据填报格式Number,如 80

4. 省市区级联 (PROVINCE_CITY)

  • 定义参数
    {
      "id": "q_region",
      "type": "PROVINCE_CITY",
      "label": "户籍省市区"
    }
    
  • 数据填报格式String,格式为 "省/市/区",如 "广东省/深圳市/南山区"

5. 地理位置地图选点 (INPUT_MAP)

  • 定义参数
    {
      "id": "q_location",
      "type": "INPUT_MAP",
      "label": "签到打卡地址"
    }
    
  • 数据填报格式String,如 "北京市海淀区中关村南大街1号"

6. 手写签名 (SIGN_PAD)

  • 定义参数
    {
      "id": "q_sign",
      "type": "SIGN_PAD",
      "label": "本人手写承诺签名",
      "required": true
    }
    
  • 数据填报格式String(图片签名公网 URL 或 Base64 图片)

1.4 上传与多媒体类

1. 图片上传 (IMAGE_UPLOAD)

  • 定义参数
    {
      "id": "q_avatar",
      "type": "IMAGE_UPLOAD",
      "label": "个人参会照片",
      "required": true
    }
    
  • 数据填报格式String(图片公网 URL),如 "https://example.com/avatar.png"

2. 通用附件上传 (UPLOAD)

  • 定义参数
    {
      "id": "q_resume",
      "type": "UPLOAD",
      "label": "附加材料 / 简历",
      "required": false
    }
    
  • 数据填报格式String(附件文件公网 URL),如 "https://example.com/resume.pdf"

1.5 装饰与排版类

此类题目无需录入填报数据,仅作为前端表单界面的版面组织与说明。

1. 描述文本 (DESC_TEXT)

  • 定义参数
    {
      "id": "desc_header",
      "type": "DESC_TEXT",
      "label": "请在 30 分钟内认真填写以下问卷,谢谢合作。"
    }
    

2. 分割线 (DIVIDER)

  • 定义参数
    {
      "id": "div_part2",
      "type": "DIVIDER",
      "label": "第二部分:业务调研"
    }
    

二、 在线考试与测评模型 (Exam)

当创建 type = "EXAM" 的考试表单时,可以在各选择题(RADIOCHECKBOX)中附加 exam 属性以启用自动阅卷与评分功能。

2.1 题目考试属性说明

字段名 类型 说明
score Double / BigDecimal 题目分值(如 10.0
answer String / Array<String> 标准正确答案。单选题为字符串(如 "A"),多选题为数组(如 ["A", "B", "D"]
answerAnalysis String 试题解析说明
scoringType Integer 计分规则:1 全部答对才得分(默认);2 漏选按比例得分;3 答对任一即得分
showAnswer Boolean 交卷后是否向考生展示标准答案与解析

2.2 单选/多选题考试定义示例

{
  "name": "Java 后端工程师专业测评",
  "type": "EXAM",
  "items": [
    {
      "id": "exam_q1",
      "type": "RADIO",
      "label": "Java 中所有类的根父类是?",
      "required": true,
      "options": [
        {"label": "Object", "value": "A"},
        {"label": "Class", "value": "B"},
        {"label": "String", "value": "C"},
        {"label": "Thread", "value": "D"}
      ],
      "exam": {
        "score": 10.0,
        "answer": "A",
        "answerAnalysis": "java.lang.Object 是 Java 类继承体系的最顶层公共父类。",
        "showAnswer": true
      }
    },
    {
      "id": "exam_q2",
      "type": "CHECKBOX",
      "label": "以下属于基本数据类型的有?",
      "required": true,
      "options": ["int", "boolean", "String", "double", "Integer"],
      "exam": {
        "score": 20.0,
        "scoringType": 1,
        "answer": ["int", "boolean", "double"],
        "answerAnalysis": "String 与 Integer 为引用对象类型,其余三项为 Java 原生基本数据类型。",
        "showAnswer": true
      }
    }
  ]
}

三、 表单全局设置模型 (Setting)

表单设置对象通过 setting 字段传递,全面覆盖表单访问控制、频次限制、答题体验、结果通知与防作弊策略。

3.1 填写权限模块 (Write Permission)

字段名 类型 说明
mustLogin Boolean 是否必须登录后才允许填写
anonymousWrite Boolean 是否匿名填写(不记录提交人信息)
enableWhiteList Boolean 是否启用白名单限制
whiteListType Integer 白名单类型:1 邮箱,2 手机号,3 自定义文本
whiteListTips String 非白名单人员访问提示文案
whiteListUseCount Integer 白名单每人允许使用的提交次数
onlyWxWrite Boolean 仅允许在微信内置浏览器中打开填写
recordWxUser Boolean 是否静默/授权获取并记录微信用户信息(OpenId、昵称、头像)

3.2 提交限制模块 (Submit Limit)

字段名 类型 说明
ipWriteCountLimitStatus Boolean 是否开启 IP 提交频次限制
ipWriteCountLimit Integer 限制提交次数
ipWriteCountLimitDateType Integer 限制周期类型:1 总共, 2 每天, 3 每周, 4 每月
accountWriteCountLimitStatus Boolean 是否开启账号答题次数限制
accountWriteCountLimit Integer 限制账号提交次数
deviceWriteCountLimitStatus Boolean 是否开启每台设备提交次数限制
totalWriteCountLimitStatus Boolean 是否开启表单总回收份数上限控制
totalWriteCountLimit Integer 总回收份数上限值(达到后自动停止收集)
writeInterviewTimeStatus Boolean 是否开启可访问起止日期时间限制
writeInterviewDateTimeRange Array<String> 开放填报起止时间范围(如 ["2026-08-01 00:00:00", "2026-08-31 23:59:59"]
passwordWriteStatus Boolean 是否开启访问密码保护
writePassword String 填报访问密码(最大 50 字符)

3.3 填写体验模块 (Write Experience)

字段名 类型 说明
enableProgress Boolean 是否在顶部展示答题进度条
showProgressDetail Boolean 是否显示详细进度百分比
saveSubmitStatus Boolean 再次打开时是否自动回显上次已提交的数据
saveNotSubmitStatus Boolean 答题过程中是否自动在本地暂存未提交的草稿
aiFillStatus Boolean 是否开启 AI 智能快捷填报辅助
onePageOneQuestion Object 一页一题模式配置(enable: 是否开启, autoScroll: 自动翻页等)

3.4 提交后行为模块 (Submit Behavior)

字段名 类型 说明
submitShowType Integer 提交后展示形式:1 系统默认完成页, 2 自定义富文本 HTML
submitShowCustomPageContent String 自定义提示页面 HTML 富文本内容
submitJump Boolean 提交后是否自动跳转外部链接
submitJumpUrl String 跳转目标 URL 网址
showSubmitContentBtn Boolean 提交成功后是否允许填报人查看自己填写的明细
updateSubmitContentBtn Boolean 提交后是否允许填报人二次修改已填内容
enableAgainWrite Boolean 提交完成页是否展示“再填一份”按钮
downloadTemplateAfterSubmit Boolean 提交后是否提供凭证/准考证打印与下载功能
printTemplateKey String 绑定的凭证打印模板 Key

3.5 社交分享模块 (Share Setting)

字段名 类型 说明
shareWxTitle Boolean 是否启用自定义微信分享卡片标题
shareWxTitleContent String 自定义分享卡片主标题
shareWxDesc Boolean 是否启用自定义微信分享卡片描述
shareWxDescContent String 自定义分享卡片副标题/描述
shareWxImg Boolean 是否启用自定义分享卡片缩略图
shareWxImgUrl String 缩略图图片公网 URL

3.6 数据通知模块 (Notification Setting)

字段名 类型 说明
emailNotify Boolean 是否开启新提交邮件提醒
newWriteNotifyEmail String 接收通知的电子邮箱地址
wxNotify Boolean 是否开启微信公众号新数据模板消息通知

3.7 考试与防作弊模块 (Exam & Anti-Cheat)

配置于 setting.examSettings 子对象中:

字段名 类型 说明
showScoreText Boolean 交卷后立即显示考试总分与评语
showAnswerRightWrong Boolean 是否在交卷后标注每道题的对错状态
enableViewAnswer Boolean 是否允许考生查看标准答案与解析
showRank Boolean 是否展示排行榜
enableExamTime Boolean 是否限制整场考试的开考与截止时间
startTime / endTime String 考试开放的起止具体时间(yyyy-MM-dd HH:mm:ss
enablePassScore Boolean 是否设置及格分数线
passScore BigDecimal 及格分数标准(如 60.0
enableCertificate Boolean 及格后是否自动颁发电子合格证书
certificateId Long 电子证书模板 ID
practiceMode Boolean 练习模式(做完一题即显示对错和解析)
randomQuestionOrder Boolean 题目顺序随机打乱(千人千卷)
enableMonitor Boolean 开启在线监考模式
enableSwitchCount Boolean 是否开启切屏限制
maxSwitchCount Integer 最大允许离开页面/切屏次数(超额自动强制交卷)
disableCopyQuestion Boolean 是否禁止在页面上复制题目文本
enableMaxTime Boolean 是否开启答题倒计时限制
maxTime Integer 考试倒计时限时(单位:分钟,如 60

四、 主题美化配置模型 (Theme)

表单主题对象通过 theme 字段传递:

字段名 类型 说明 示例
themeColor String 表单主色调(按钮、选中框等高亮色) "#1890ff"
backgroundColor String 页面整体背景颜色 "#f0f2f5"
backgroundImg String 页面背景平铺大图 URL "https://oss.example.com/bg.jpg"
headImgUrl String 表单顶部海报横幅图片 URL "https://oss.example.com/banner.png"
logoImgUrl String 品牌 Logo 图片 URL "https://oss.example.com/logo.png"
logoPosition String Logo 显示对齐位置:"left", "center", "right" "left"
submitBtnText String 底部提交按钮文案 "确认提交"
showFormTitle Boolean 是否显示表单主标题 true
showFormNumber Boolean 是否在题目左侧显示题号序号 true
watermark Boolean 是否开启防泄密水印 true
watermarkText String 水印自定义文案 "仅限内部使用"
watermarkUserName Boolean 是否将填报人真实姓名/账号作为背景水印 true
enableCover Boolean 是否启用引导封面页 true
coverTitle String 封面页大标题 "2026 技术大会欢迎您"
coverBtnText String 封面页进入答题按钮文案 "开始填报"

五、 显隐与跳题逻辑规则模型 (Logic)

逻辑规则通过 logic.rules 列表配置,支持配置多题联动、条件判断以及满足条件时的动作(显示/隐藏题目、跳题结束等)。

5.1 规则对象结构

  • conditionList:触发条件集合(支持多个条件与/或判断)
  • triggerList:满足条件后执行的动作列表

5.2 条件对象属性 (conditionList)

字段名 类型 说明 示例
formItemId String 判定题目的自定义 ID "q_gender"
operator String 比较运算符:eq (等于), ne (不等于), gt (大于), ge (大于等于), lt (小于), le (小于等于), contain (包含), not_contain (不包含) "eq"
value Object 触发的目标比对值 "女"

5.3 动作对象属性 (triggerList)

字段名 类型 说明 示例
formItemId String 受影响的题目自定义 ID "q_pregnancy"
action String 动作类型:show (显示), hide (隐藏), jump (跳转至指定题目), finish (提前结束并提交) "show"

5.4 逻辑规则示例

场景:当用户性别 q_gender 选择 "女" 时,自动显示 "q_pregnancy"(是否已婚育)题目;否则保持隐藏。

{
  "logic": {
    "rules": [
      {
        "conditionList": [
          {
            "formItemId": "q_gender",
            "operator": "eq",
            "value": "女"
          }
        ],
        "triggerList": [
          {
            "formItemId": "q_pregnancy",
            "action": "show"
          }
        ]
      }
    ]
  }
}
官方文档·
约 25 分钟阅读 (9797 字)