《题型物料协议规范》
版本
1.0.0
版本规范
版本号使用 MAJOR.MINOR.PATCH:
- 大版本:协议结构修订且不兼容时使用MAJOR
- 小版本:协议结构修订且向下兼容时使用MINOR
- 打补丁:协议结构修订问题或者缺陷时使用PATCH
背景
对题型物料组件在问卷搭建中所具备的配置能力和交互行为进行规范化描述。
题组件针对问卷平台接入时可以使用一份统一的描述内容,让不同平台对组件接入的实现保持一致,缩小不同平台接入题型物料组件的成本。
协议概述
基于Schema实现可视化搭建问卷的能力,满足用户自定义配置题目。
{Question}Module\meta.js
协议结构
包含以下三部分内容:
- 基础信息: 描述题型的基础信息,如题型名称、题型类型。
- 题型属性配置: 用于题型属性配置能力的描述,即设置器配置。
- 题型内容配置: 用于题型内容如标题和子标题管理、选项管理等配置描述。
顶级结构
字段 | 类型 | 描述 |
---|---|---|
$schema | String | Schema URL |
version | String(Semver) | 版本号 |
title | String | 题型名称 |
type | String | 题型标识 |
formConfig | Array | 题型属性配置 |
editConfig | Object | 题型内容配置 |
示例:
{
"$schema": "https://xiaojuwenjuan/schema/draft/2023-08/component-schema.json",
"version": "1.0.0",
"title": "多选题",
"type": "checkbox",
"formConfig": [
{
"name": "basicConfig",
"label": "基础配置",
"type": "CheckboxGroup",
"key": "basicConfig",
"labelStyle": {
"font-weight": "bold"
},
"options": [
{
"label": "必填",
"key": "isRequired"
},
{
"label": "显示类型",
"key": "showType"
},
{
"label": "显示序号",
"key": "showIndex"
},
{
"label": "显示分割线",
"key": "showSpliter",
"tip": "题目下方分割线,仅在移动端展示。"
}
],
"valueAdapter": valueAdapter({ moduleConfig }) {
return _pick(moduleConfig, this.options.map(item => item.key))
}
},
{
"name": "optionConfig",
"label": "选项配置",
"type": "Customed",
"key": "optionConfig",
"labelStyle": {
"font-weight": "bold"
},
"content": [
{
"label": "至少选择数",
"type": "InputNumber",
"key": "minNum",
"direction": "horizon",
"value": "",
"min": 0,
"max": "maxNum",
"exclude": [
"radio-v",
"radio-h",
"appointment",
"matrix-radio",
"combination"
],
"contentClass": "input-number-config"
},
{
"label": "最多选择数",
"type": "InputNumber",
"key": "maxNum",
"direction": "horizon",
"value": "",
"min": "minNum",
"exclude": [
"radio-v",
"radio-h",
"appointment",
"matrix-radio",
"combination"
],
"contentClass": "input-number-config"
}
]
}
],
"editConfig": {
"optionEdit": {
"show": true
},
"optionEditBar": {
"show": true,
"configure": {
"showOthers": true,
"showAdvancedConfig": true
}
}
}
}
基础信息
题型基础字段的描述
字段 | 类型 | 描述 |
---|---|---|
title | Enum<String> | 题型名称,如单行输入框、单选题、多选题、星级评分题、 |
type | Enum<String> | 题型标识,如text、radio、checkbox、radio-star |
题型属性配置
题型属性(formConfig)的描述
字段 | 类型 | 说明 |
---|---|---|
name | String | 配置名称,可作唯一值标识 |
label | String | 配置标题 |
type | String | 配置所需设置器 |
key | String | 配置关联题目字段 |
content | Array<formConfig> | 用于实现多个配置的组合,当type = Customed时生效 |
options | Array | 可选、传入的options,具体字段可参考示例 |
relyFunc | Json expression | 可选、控制配置是否显示 |
exclude | Array | 可选、不包含该配置的题目列表 |
valueGetter | String | 可选、配置取值映射 |
valueSetter | String | 可选、配置设置值的映射 |
labelStyle | Object | 可选、自定义label样式 |
contentClass | String | 可选、自定义类名 |
direction | enum | 可选、布局方向 |
contentPosition | enum | 可选、label在前还是在后 |
inline | Boolean | 可选、是否行内 |
题型内容配置
题型内容如标题、子标题和选项内容配置(editConfig)的描述
字段 | 类型 | 说明 |
---|---|---|
optionEdit | <Configure> | 配置选项,具体见下表 |
optionEditBar | <Configure> |
Configure配置
字段 | 类型 | 说明 |
---|---|---|
show | Boolean | 是否显示 |
configure | Object | 可选,具体配置项可透传到对应的编辑态组件,具体字段可参考示例 |