瀏覽代碼

优化试题结构题目初始题号默认规则

dengshaobo 3 周之前
父節點
當前提交
40814d09a2
共有 2 個文件被更改,包括 37 次插入 和 17 次删除
  1. 5 0
      src/styles/common.scss
  2. 32 17
      src/views/exam/question.vue

+ 5 - 0
src/styles/common.scss

@@ -4763,6 +4763,11 @@ body {
     width: 65px;
     margin: auto;
     text-align: center;
+
+    .el-input__inner
+    {
+      text-align: center;
+    }
   }
 
   //表格内 通用输入框

+ 32 - 17
src/views/exam/question.vue

@@ -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={