|
|
@@ -22,11 +22,11 @@
|
|
|
设置试题结构:
|
|
|
<div class="item_search">
|
|
|
<div class="search_name">题目从</div>
|
|
|
- <el-select v-model="queryParams.start" placeholder="请选择" class="select_width" >
|
|
|
+ <el-select v-model="queryParams.start" placeholder="请选择" filterable class="select_width" >
|
|
|
<el-option :label="number" :value="number" v-for="number in questionRange"></el-option>
|
|
|
</el-select>
|
|
|
<div class="search_name">至</div>
|
|
|
- <el-select v-model="queryParams.end" placeholder="请选择" class="select_width" >
|
|
|
+ <el-select v-model="queryParams.end" placeholder="请选择" filterable class="select_width" >
|
|
|
<el-option :label="number" :value="number" v-for="number in questionRange"></el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
@@ -332,7 +332,15 @@ const onTemplateChanged=(templateData: any)=>{
|
|
|
//切换题目类型
|
|
|
const TypeChange=(item:any)=>{
|
|
|
console.log("打印题目类型",item)
|
|
|
-
|
|
|
+ if (item.questionType == 2) {
|
|
|
+ //切换到多选题:默认给分分布规则为「全对得满分,少选得0分,选错不得分」
|
|
|
+ item.multipleRule = '1'
|
|
|
+ item.multipleRuleDesc = '0'
|
|
|
+ } else {
|
|
|
+ //切换到单选/判断题:清空多选题给分规则相关字段,避免脏数据
|
|
|
+ item.multipleRule = ''
|
|
|
+ item.multipleRuleDesc = ''
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -425,6 +433,25 @@ const FinishQuestion=async ()=>{
|
|
|
ElMessage.error("请添加题目!")
|
|
|
return
|
|
|
}
|
|
|
+ //校验:每题满分必须都设置
|
|
|
+ const missingScoreRow = tableData.value.find((item: any) => {
|
|
|
+ return item.fullScore === '' || item.fullScore === null || item.fullScore === undefined
|
|
|
+ })
|
|
|
+ if (missingScoreRow) {
|
|
|
+ ElMessage.error(`请完善题目「${missingScoreRow.questionName}」的满分`)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //校验:多选题必须设置给分分布规则
|
|
|
+ const isRuleDescEmpty = (val: any) => val === '' || val === null || val === undefined || String(val).trim() === ''
|
|
|
+ const missingRuleRow = tableData.value.find((item: any) => {
|
|
|
+ if (item.questionType != 2) return false
|
|
|
+ if (!item.multipleRule) return true
|
|
|
+ return isRuleDescEmpty(item.multipleRuleDesc)
|
|
|
+ })
|
|
|
+ if (missingRuleRow) {
|
|
|
+ ElMessage.error(`请完善题目「${missingRuleRow.questionName}」的多选题给分分布规则`)
|
|
|
+ return
|
|
|
+ }
|
|
|
ElMessageBox.confirm('确认完成吗?', '提示', {
|
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '取消',
|
|
|
@@ -816,6 +843,21 @@ const EnterSetQuestion=()=>{
|
|
|
ElMessage.error('结束题号不能小于起始题号');
|
|
|
return;
|
|
|
}
|
|
|
+ //校验:题目类型必选
|
|
|
+ if (!queryParams.value.questionType) {
|
|
|
+ ElMessage.error('请选择题目类型');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //校验:每题满分必填
|
|
|
+ if (queryParams.value.fullMark === '' || queryParams.value.fullMark === null || queryParams.value.fullMark === undefined) {
|
|
|
+ ElMessage.error('请输入每题满分');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //校验:多选题必须填写少选得分
|
|
|
+ if (queryParams.value.questionType == 2 && (shaoxuan.value === '' || shaoxuan.value === null || shaoxuan.value === undefined)) {
|
|
|
+ ElMessage.error('请输入多选题少选得分');
|
|
|
+ return;
|
|
|
+ }
|
|
|
const params={
|
|
|
examSubjectId: examSubjectId.value,//考试科目id
|
|
|
questionMin: queryParams.value.start,//起始题号
|