|
|
@@ -22,11 +22,11 @@
|
|
|
设置试题结构:
|
|
|
<div class="item_search">
|
|
|
<div class="search_name">题目从</div>
|
|
|
- <el-select v-model="queryParams.start" placeholder="请选择" filterable class="select_width" >
|
|
|
+ <el-select v-model="queryParams.start" placeholder="请输入" filterable default-first-option 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="请选择" filterable class="select_width" >
|
|
|
+ <el-select v-model="queryParams.end" placeholder="请输入" filterable default-first-option class="select_width" >
|
|
|
<el-option :label="number" :value="number" v-for="number in questionRange"></el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
@@ -802,7 +802,7 @@ const GetTemplateInfo=()=>{
|
|
|
templateQuestionCount.value=res.data.questionEnd;//题目数量
|
|
|
templateQuestionStart.value=res.data.questionStart;//题目起始编号
|
|
|
templateQuestionEnd.value=res.data.questionEnd;//题目结束编号
|
|
|
- queryParams.value.end=res.data.questionEnd;//题目结束
|
|
|
+ // queryParams.value.end=res.data.questionEnd;//题目结束
|
|
|
queryParams.value.start=res.data.questionStart;//题目开始
|
|
|
currentTemplateName.value=res.data.templateName;//当前模板名称
|
|
|
}
|
|
|
@@ -840,20 +840,30 @@ const GetSmartQuestionList=()=>{
|
|
|
console.log("打印转换后的数据",result)
|
|
|
|
|
|
// 根据已有试题列表设置题目范围默认值
|
|
|
- // 规则:已有题目 1-10,则 start 从 11 开始,end 为模板最大题数
|
|
|
+ // 根据规则设置起始题号默认值,并在设置后清空结尾题号(让用户自行选择)
|
|
|
const endMax = Number(templateQuestionEnd.value) || 0;
|
|
|
- if (tableData.value.length > 0) {
|
|
|
+ const startMin = Number(templateQuestionStart.value) || 1;
|
|
|
+ // 记录本次更新列表前用户输入的结尾题号
|
|
|
+ const prevEnd = Number(queryParams.value.end) || 0;
|
|
|
+
|
|
|
+ if (prevEnd > 0) {
|
|
|
+ // 用户输入了结尾题号:起始题号以「结尾题号 + 1」默认
|
|
|
+ queryParams.value.start = prevEnd + 1;
|
|
|
+ } else if (tableData.value.length > 0) {
|
|
|
+ // 初始进来且已有试题:起始题号以「已有最大题号 + 1」默认
|
|
|
queryParams.value.start = maxQuestionNo + 1;
|
|
|
- if(queryParams.value.start>templateQuestionEnd.value)
|
|
|
- {
|
|
|
- queryParams.value.start = templateQuestionStart.value;
|
|
|
- }
|
|
|
- queryParams.value.end = endMax;
|
|
|
} else {
|
|
|
- // 无已有试题时,回退为模板完整范围
|
|
|
- queryParams.value.start = Number(templateQuestionStart.value) || 1;
|
|
|
- queryParams.value.end = endMax;
|
|
|
+ // 无已有试题:回退为模板起始编号
|
|
|
+ queryParams.value.start = startMin;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 起始题号超出模板最大题数时,回退为模板起始编号
|
|
|
+ if (Number(queryParams.value.start) > endMax) {
|
|
|
+ queryParams.value.start = startMin;
|
|
|
}
|
|
|
+
|
|
|
+ // 起始题号设置好后清空结尾题号
|
|
|
+ queryParams.value.end = '';
|
|
|
}
|
|
|
}).finally(()=>{
|
|
|
tableLoading.value = false;//关闭表格loading
|
|
|
@@ -863,24 +873,29 @@ const GetSmartQuestionList=()=>{
|
|
|
//确定设置题目
|
|
|
const EnterSetQuestion=()=>{
|
|
|
console.log("打印提交参数",queryParams.value)
|
|
|
+ if(!queryParams.value.end)
|
|
|
+ {
|
|
|
+ ElMessage.warning('请选择结束题号');
|
|
|
+ return;
|
|
|
+ }
|
|
|
// 添加判断:end 不能小于 start
|
|
|
if (queryParams.value.end < queryParams.value.start) {
|
|
|
- ElMessage.error('结束题号不能小于起始题号');
|
|
|
+ ElMessage.warning('结束题号不能小于起始题号');
|
|
|
return;
|
|
|
}
|
|
|
//校验:题目类型必选
|
|
|
if (!queryParams.value.questionType) {
|
|
|
- ElMessage.error('请选择题目类型');
|
|
|
+ ElMessage.warning('请选择题目类型');
|
|
|
return;
|
|
|
}
|
|
|
//校验:每题满分必填
|
|
|
if (queryParams.value.fullMark === '' || queryParams.value.fullMark === null || queryParams.value.fullMark === undefined) {
|
|
|
- ElMessage.error('请输入每题满分');
|
|
|
+ ElMessage.warning('请输入每题满分');
|
|
|
return;
|
|
|
}
|
|
|
//校验:多选题必须填写少选得分
|
|
|
if (queryParams.value.questionType == 2 && (shaoxuan.value === '' || shaoxuan.value === null || shaoxuan.value === undefined)) {
|
|
|
- ElMessage.error('请输入多选题少选得分');
|
|
|
+ ElMessage.warning('请输入多选题少选得分');
|
|
|
return;
|
|
|
}
|
|
|
const params={
|