Browse Source

答题预览

natasha 14 hours ago
parent
commit
6ffc236114

+ 9 - 3
src/views/book/courseware/preview/components/video_interaction/ExercisePreview.vue

@@ -3,11 +3,10 @@
     <div class="type-content">
       <div class="type-content-inner">
         <div class="rich-text" v-html="sanitizeHTML(title)"></div>
-        <component :is="getViewCom" :content="content" ref="preview" />
+        <component :is="getViewCom" :content="content" ref="preview" type="interaction" />
       </div>
     </div>
     <footer style="text-align: right">
-      <el-button @click="handleCancle">取 消</el-button>
       <el-button :loading="loading" type="primary" @click="submitAdd">确 定</el-button>
     </footer>
   </div>
@@ -52,7 +51,7 @@ export default {
       this.$emit('handleCancle');
     },
     submitAdd() {
-      this.$emit('submitAdd', this.exercise_id, this.$refs.preview.answer);
+      this.$emit('submitAdd', this.exercise_id, this.$refs.preview.answer, this.$refs.preview.data);
     },
     handleData() {
       this.loading = true;
@@ -67,6 +66,9 @@ export default {
             this.content = res.content_exercise;
             this.title = res.content_title;
             this.typeValue = res.content_exercise ? JSON.parse(res.content_exercise).type : '';
+            // setTimeout(() => {
+            //   this.$refs.preview.showAnswer(true, false, this.$refs.preview.answer, true);
+            // }, 100);
           }
         })
         .catch(() => {
@@ -85,4 +87,8 @@ export default {
 .type-content-inner {
   width: 100%;
 }
+
+:deep .sn-position {
+  display: none;
+}
 </style>

+ 27 - 3
src/views/book/courseware/preview/components/video_interaction/VideoInteractionPreview.vue

@@ -13,10 +13,17 @@
         controlsList="nodownload"
       ></video>
     </div>
+
+    <el-button
+      type="primary"
+      v-if="Object.keys(this.userAnswer).length === data.file_info_list.length"
+      @click="lookReport"
+      >查看答题报告</el-button
+    >
     <el-dialog
       v-if="visible"
       :visible.sync="visible"
-      :show-close="true"
+      :show-close="false"
       :close-on-click-modal="true"
       :modal-append-to-body="true"
       :append-to-body="true"
@@ -51,7 +58,15 @@ export default {
       iframeHeight: `${window.innerHeight - 100}px`,
       first: '',
       exercise_id: '',
-      userAnswer: {},
+      userAnswer: {}, // 用户答题答案
+      exerciseList: {}, // 题目列表
+      reportFlag: false,
+      reportResult: {
+        total: 0,
+        right: 0,
+        error: 0,
+        rightRate: 0,
+      },
     };
   },
   watch: {},
@@ -66,6 +81,7 @@ export default {
           this.video_info = url_map[item.file_id];
         });
       });
+      this.data.file_info_list = this.data.file_info_list.sort((a, b) => Number(a.currentTime) - Number(b.currentTime));
     },
     handleTimeUpdate(event) {
       let currentTime = event.target.currentTime;
@@ -94,9 +110,17 @@ export default {
         this.first = '';
       }, 1000);
     },
-    submitAdd(id, answer) {
+    submitAdd(id, answer, content) {
       this.visible = false;
+      document.getElementById('interaction-preview-video').play();
+      setTimeout(() => {
+        this.first = '';
+      }, 1000);
       this.$set(this.userAnswer, id, answer);
+      this.$set(this.exerciseList, id, content);
+    },
+    lookReport() {
+      document.getElementById('interaction-preview-video').pause();
     },
   },
 };