questionare-generator-core
问卷设计器的核心校验模块,提供完整的对
JSON SCHEMA
的校验功能
安装
使用npm进行安装
npm i questionare-generator-core
使用yarn进行安装
yarn add questionare-generator-core
引入
完整引入
完整引入提供全部题型和问卷的整体校验功能
import { jsonSchemaValidateError } from 'questionare-generator-core'
按需引入
按需引入可以使用qgc
对象对单独的题目类型进行校验,在没有使用大量题目类型时有绝对的性能优势
import { qgc } from 'questionare-generator-core'
使用
完整引入的校验方式
import { jsonSchemaValidateError } from 'questionare-generator-core'
const testData = {
questionImage: '',
questionTitle: '问卷标题',
questionRemark: '感谢您能抽出几分钟时间来参加本次答题,现在我们就马上开始吧!',
isQuestionNumber: true,
isQuestionType: true,
data: [
{
id: 1,
title: '请选择一个选项',
type: 'single-choice',
must: true,
options: [{ label: '选项名称', value: 1 }, { label: '选项名称', value: 2 }]
},
{
id: 2,
title: '请选择一个或多个选项',
type: 'multiple-choice',
must: true,
options: [{ label: '选项名称', value: 1 }, { label: '选项名称', value: 2 }]
},
{
id: 3,
title: '请选择一个或多个选项',
type: 'multiple-choice',
must: true,
options: [{ label: '选项名称', value: 1 }, { label: '选项名称', value: 2 }]
},
{
id: 4,
title: '请填写本项内容',
type: 'blanks-filling',
must: true
},
{
id: 5,
title: '请给本项打分',
type: 'scoring',
must: true,
fractionType: 5
},
{
id: 6,
title: '请给以下选项排序',
type: 'ranking',
must: false,
options: [{ label: '选项名称', value: 1 }, { label: '选项名称', value: 2 }]
}
]
}
const validate = () => {
testData.data.forEach((item: any) => {
jsonSchemaValidateError(item.type, [item])
})
}
按需引入校验方式
import { qgc } from 'questionare-generator-core'
// 校验单选题
qgc.topicSingleChoiceValidate([{
id: 3,
title: '请选择一个或多个选项',
type: 'multiple-choice',
must: true,
options: [{ label: '选项名称', value: 1 }, { label: '选项名称', value: 2 }]
}])
题型分类
分类名称 | 题型名称 | 参数名称 |
---|---|---|
选择题 | 单选题 | single-choice |
选择题 | 多选题 | multiple-choice |
填空题 | 填空题 | blanks-filling |
打分题 | 打分题 | scoring |
排序题 | 排序题 | ranking |
比重题 | 比重题 | proportion |
问卷参数配置
名称 | 类型 | 说明 | 是否必传 | 默认值 | 可选值 |
---|---|---|---|---|---|
questionTitle | string | 问卷标题 | true | - | - |
questionRemark | string | 问卷备注 | true | - | - |
questionImage | string | 问卷头部主题图片 | true | - | - |
data | array | 问卷题目数据 | true | - | - |
isQuestionNumber | boolean | 是否显示题号 | true | - | true、false |
isQuestionType | boolean | 是否现实题型 | true | - | true、false |
题型基础参数配置
基础参数配置
名称 | 类型 | 说明 | 是否必传 | 默认值 | 可选值 | 选项参数 |
---|---|---|---|---|---|---|
title | string | 题目 | true | - | - | - |
must | boolean | 是否必答(排序题和比重题只能传递false,因为排序题和比重题存在使用默认排序和比重为0的情况) | true | - | true、false | - |
topicNum | number | 题号 | false | - | - | - |
id | number | 题目id | false | - | - | - |
type | string | 题型 | true | - | - | - |
单选题和多选题特有参数配置
名称 | 类型 | 说明 | 是否必传 | 默认值 | 可选值 | 选项参数 |
---|---|---|---|---|---|---|
options | array | 选项 | true | - | - | [{ label: 'first-option', value: 1 }, { label: 'second-option', value: 2 }] |
排序题特有参数配置
名称 | 类型 | 说明 | 是否必传 | 默认值 | 可选值 | 选项参数 |
---|---|---|---|---|---|---|
options | array | 选项 | true | - | - | [{ label: 'first-option', value: 1, order: 1 }, { label: 'second-option', value: 2, order: 2 }] |
打分题特有参数配置
名称 | 类型 | 说明 | 是否必传 | 默认值 | 可选值 |
---|---|---|---|---|---|
fractionType | number | 分数制 | true | 5 | 10 |