Appearance
QxsSubjectSingle
qxs-subject-single 负责单选题、多选题、排序题,以及互动问答单选/多选的题目本体。
单选题预览
这个组件通过 question-type 切换题型。
如果你需要看完整宿主接入方式,请回到 题目总览。
loading
多选题与排序题
同一个组件还负责多选题和排序题。
排序题只是在选择题结构上额外引入 least-answer-count 和 exam-expand。
loading
选择题编辑字段
编辑态会额外出现答题设置、解析、副文本和互动问答入口。
宿主如果要接管这些操作,可以继续配合 slot="action" 或业务 slot 使用。
loading
使用说明
题型切换
question-type="single" 表示单选题,multiple 表示多选题,sort 表示排序题。
互动问答单选 / 多选
如果传入 exam-answer-relation-type,组件会保留结果项入口和关联关系导出能力。
QxsSubjectSingle API
属性
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
question-type | 题型:single / multiple / sort | AnswerType | 'single' |
title | 题干内容 | string | '' |
answer-list | 选项数组 | any[] | [] |
analysis | 解析内容 | string | '' |
least-answer-count | 排序题至少作答数量 | number | null | null |
exam-expand | 排序题参考排序结果 | string | '' |
exam-answer-relation-type | 是否启用互动问答结果项 | number | 0 |
answer-check-type | 互动问答答题设置值 | number | 1 |
lock-answer-key | 锁定正确答案勾选状态 | boolean | false |
show-answer-setting | 是否显示答题设置入口 | boolean | false |
show-key | 是否显示“核心题”开关 | boolean | false |
show-tag | 是否显示标签区 | boolean | false |
show-category | 是否显示分类区 | boolean | false |
show-ai | 是否显示 AI 参考答案区 | boolean | false |
show-resource | 是否显示资源区 | boolean | false |
show-jump | 是否显示跳题逻辑入口 | boolean | false |
has-jump | 当前题目是否已经设置跳题逻辑 | boolean | false |
show-analysis | 是否显示解析编辑区 | boolean | false |
show-rich-text | 是否整体启用副文本能力 | boolean | false |
hide-add-rich-text | 是否隐藏“添加题目描述(图文)”入口 | boolean | false |
show-delete-action | 是否显示内置删除按钮 | boolean | true |
show-save-action | 是否显示内置完成编辑按钮 | boolean | true |
use-model | 是否启用 update:modelValue | boolean | false |
事件
| 名称 | 说明 | Detail |
|---|---|---|
save | 点击内置“完成编辑”后触发 | toJSON() 导出的题目数据 |
delete | 点击内置“删除”后触发 | null |
edit-result-item | 编辑互动问答结果项入口 | { index, answer, mode } |
update:modelValue | 仅在开启 use-model 时触发 | 当前题干内容 |
插槽
| 名称 | 说明 |
|---|---|
action | 自定义底部操作区 |
business-tag | 题目标题旁的宿主业务标签 |
sub-text | 接管题目副文本编辑区 |
business-result-item-{index} | 自定义互动问答结果项入口 |
方法
| 名称 | 说明 | 类型 |
|---|---|---|
validate() | 返回当前题目校验错误列表 | () => SubjectError[] |
toJSON() | 导出当前题目数据 | () => Promise<any> |
数据结构
ts
{
customId: crypto.randomUUID(),
answerType: 'single', // 或 multiple / sort
title: '',
analysis: '',
isEdit: true,
examRichTextContent: '',
answers: [
{ title: '', isCorrect: false },
{ title: '', isCorrect: false },
{ title: '', isCorrect: false },
{ title: '', isCorrect: false },
],
...(answerType === 'sort' ? { leastAnswerCount: null, examExpand: '' } : {}),
}