Browse Source

超时时间放宽到60s,填空、判断用户答案增加是否正确

dsy 1 ngày trước cách đây
mục cha
commit
39e183e983

+ 1 - 1
src/utils/http.js

@@ -7,7 +7,7 @@ import { Message } from 'element-ui';
 
 const service = axios.create({
   baseURL: getLocalStore('server_address') || process.env.VUE_APP_EEP,
-  timeout: 30000,
+  timeout: 60000,
 });
 
 // 请求拦截器

+ 3 - 3
src/views/book/courseware/preview/components/common/PreviewMixin.js

@@ -9,7 +9,7 @@ const mixin = {
   data() {
     return {
       sanitizeHTML,
-      answer: { answer_list: [] }, // 用户答案
+      answer: { answer_list: [], is_right: false }, // 用户答案
       isJudgingRightWrong: false, // 是否判断对错
       isShowRightAnswer: false, // 是否显示正确答案
       disabled: false, // 是否禁用
@@ -74,8 +74,8 @@ const mixin = {
     },
 
     /**
-     * 获取答案
-     * @returns {array} 答案
+     * 获取用户答案
+     * @returns {array} 用户答案
      */
     getAnswer() {
       return this.answer;

+ 1 - 1
src/views/book/courseware/preview/components/fill/FillPreview.vue

@@ -4,7 +4,7 @@
     <SerialNumberPosition v-if="isEnable(data.property.sn_display_mode)" :property="data.property" />
 
     <div class="main" :style="getMainStyle()">
-      <AudioFill :file-id="data.audio_file_id" />
+      <AudioFill v-if="data.audio_file_id.length > 0" :file-id="data.audio_file_id" />
       <div class="fill-wrapper">
         <p v-for="(item, i) in modelEssay" :key="i">
           <template v-for="(li, j) in item">

+ 21 - 1
src/views/book/courseware/preview/components/judge/JudgePreview.vue

@@ -74,6 +74,26 @@ export default {
       return [..._option_type_list.slice(0, 2), ..._option_type_list.slice(3)];
     },
   },
+  watch: {
+    'answer.answer_list': {
+      handler(val) {
+        if (val.length === 0) {
+          this.answer.is_right = false;
+          return;
+        }
+        if (val.length !== this.data.answer.answer_list.length) {
+          this.answer.is_right = false;
+          return;
+        }
+        this.answer.is_right = val.every((item) =>
+          this.data.answer.answer_list.some(
+            (answerItem) => answerItem.mark === item.mark && answerItem.option_type === item.option_type,
+          ),
+        );
+      },
+      deep: true,
+    },
+  },
   methods: {
     // 将数字转换为小写字母
     convertNumberToLetter(number) {
@@ -99,7 +119,7 @@ export default {
       if (!this.isJudgingRightWrong) return '';
       let selectOption = this.answer.answer_list.find((item) => item.mark === mark); // 查找是否已选中的选项
       if (!selectOption) return 'wrong';
-      return this.data.answer.answer_list.find((item) => item.mark === mark).option_type === selectOption.option_type
+      return this.data.answer.answer_list.find((item) => item.mark === mark)?.option_type === selectOption.option_type
         ? 'right'
         : 'wrong';
     },

+ 22 - 5
src/views/book/courseware/preview/components/select/SelectPreview.vue

@@ -52,6 +52,22 @@ export default {
       arrangeTypeList,
     };
   },
+  watch: {
+    'answer.answer_list': {
+      handler(val) {
+        if (val.length === 0) {
+          this.answer.is_right = false;
+          return;
+        }
+        if (val.length !== this.data.answer.answer_list.length) {
+          this.answer.is_right = false;
+          return;
+        }
+        this.answer.is_right = val.every((item) => this.data.answer.answer_list.includes(item));
+      },
+      deep: true,
+    },
+  },
   methods: {
     isAnswer(mark) {
       return this.answer.answer_list.includes(mark);
@@ -70,17 +86,18 @@ export default {
       if (!this.isJudgingRightWrong && !this.isShowRightAnswer) {
         return [];
       }
-      let isHas = this.answer.answer_list.includes(mark); // 是否已选中的选项
+      let isHas = this.answer.answer_list.includes(mark); // 用户是否已选中
       let isRight = this.data.answer.answer_list.includes(mark); // 是否是正确答案
 
+      let answerClass = [];
       if (!isHas && this.isShowRightAnswer) {
-        return isRight ? ['answer-right'] : [];
+        answerClass = isRight ? ['answer-right'] : [];
       }
       // 判断是否是正确答案
-      if (this.isJudgingRightWrong) {
-        return isRight ? ['right'] : ['wrong'];
+      if (isHas && this.isJudgingRightWrong) {
+        answerClass = isRight ? ['right'] : ['wrong'];
       }
-      return [];
+      return answerClass;
     },
   },
 };

+ 9 - 1
src/views/personal_workbench/edit_task/index.vue

@@ -42,7 +42,9 @@
             >
               {{ name }}
             </span>
-            <span>{{ producer_list.map((producer) => producer.name).join(';') }}</span>
+            <span :title="producer_list.map((producer) => producer.name).join(';')">
+              {{ producer_list.map((producer) => producer.name).join(';') }}
+            </span>
             <span class="status">{{ status_name }}</span>
           </div>
         </div>
@@ -246,12 +248,18 @@ export default {
 
       :nth-child(2) {
         width: 140px;
+        max-width: 140px;
+        min-height: 37px;
+        overflow: hidden;
         text-align: center;
+        text-overflow: ellipsis;
+        white-space: nowrap;
         border-right: $border;
       }
 
       :last-child {
         width: 140px;
+        max-width: 140px;
         text-align: center;
       }
     }