2 Commits e771c55356 ... 4339af240e

Auteur SHA1 Message Date
  natasha 4339af240e Merge branch 'lhd' il y a 5 heures
  natasha bef08bd6e9 交互视频题答题方式 il y a 5 heures

+ 11 - 0
src/views/book/courseware/create/components/question/video_interaction/ExerciseAdd.vue

@@ -163,6 +163,17 @@ export default {
       immediate: true,
       deep: true,
     },
+    typeValue: {
+      handler(newVal) {
+        if (newVal) {
+          this.$nextTick(() => {
+            this.$refs.setting.setSetting(this.$refs.component.data.property, {});
+          });
+        }
+      },
+      immediate: true,
+      deep: true,
+    },
   },
   methods: {
     componentMove() {},

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

@@ -15,12 +15,23 @@
 <script>
 import SelectPreview from '@/views/book/courseware/preview/components/select/SelectPreview.vue';
 import JudgePreview from '@/views/book/courseware/preview/components/judge/JudgePreview.vue';
+import MatchingPreview from '@/views/book/courseware/preview/components/matching/MatchingPreview.vue';
+import SortPreview from '@/views/book/courseware/preview/components/sort/SortPreview.vue';
+import FillPreview from '@/views/book/courseware/preview/components/fill/FillPreview.vue';
+import RecordInputPreview from '@/views/book/courseware/preview/components/record_input/RecordInputPreview.vue';
+
 import { GetCoursewareExerciseView } from '@/api/book';
 import { sanitizeHTML } from '@/utils/common';
+
 export default {
   name: 'ExercisePreview',
-  components: { SelectPreview, JudgePreview },
-  props: ['exercise_id'],
+  components: { SelectPreview, JudgePreview, MatchingPreview, SortPreview, FillPreview, RecordInputPreview },
+  provide() {
+    return {
+      getPermissionControl: () => this.permissionControl,
+    };
+  },
+  props: ['exercise_id', 'feed_back'],
   data() {
     return {
       sanitizeHTML,
@@ -28,6 +39,13 @@ export default {
       title: '',
       content: null,
       loading: false,
+      permissionControl: {
+        can_answer: true, // 可作答
+        can_judge_correct: false, // 可判断对错(客观题)
+        can_show_answer: false, // 可查看答案
+        can_correct: false, // 可批改
+        can_check_correct: false, // 可查看批改
+      },
     };
   },
   computed: {
@@ -37,6 +55,14 @@ export default {
           return SelectPreview;
         case 'judge':
           return JudgePreview;
+        case 'sort':
+          return SortPreview;
+        case 'matching':
+          return MatchingPreview;
+        case 'fill':
+          return FillPreview;
+        case 'record_input':
+          return RecordInputPreview;
         default:
           return null;
       }
@@ -57,7 +83,10 @@ export default {
         content: this.content,
         title: this.title,
       };
-      this.$emit('submitAdd', this.exercise_id, this.$refs.preview.answer, obj);
+      this.$emit('submitAdd', this.exercise_id, this.$refs.preview.answer, obj, this.permissionControl.can_show_answer);
+      if (!this.permissionControl.can_show_answer && this.feed_back === 'timely') {
+        this.permissionControl.can_show_answer = true;
+      }
     },
     handleData() {
       this.loading = true;

+ 25 - 1
src/views/book/courseware/preview/components/video_interaction/Report.vue

@@ -36,11 +36,20 @@
 <script>
 import SelectPreview from '@/views/book/courseware/preview/components/select/SelectPreview.vue';
 import JudgePreview from '@/views/book/courseware/preview/components/judge/JudgePreview.vue';
+import MatchingPreview from '@/views/book/courseware/preview/components/matching/MatchingPreview.vue';
+import SortPreview from '@/views/book/courseware/preview/components/sort/SortPreview.vue';
+import FillPreview from '@/views/book/courseware/preview/components/fill/FillPreview.vue';
+import RecordInputPreview from '@/views/book/courseware/preview/components/record_input/RecordInputPreview.vue';
 import { GetCoursewareExerciseView } from '@/api/book';
 import { sanitizeHTML } from '@/utils/common';
 export default {
   name: 'ExerciseReport',
-  components: { SelectPreview, JudgePreview },
+  components: { SelectPreview, JudgePreview, MatchingPreview, SortPreview, FillPreview, RecordInputPreview },
+  provide() {
+    return {
+      getPermissionControl: () => this.permissionControl,
+    };
+  },
   props: ['reportResult', 'exerciseList', 'userAnswer', 'fileList'],
   data() {
     return {
@@ -51,6 +60,13 @@ export default {
       index: 0,
       exerciseLists: this.exerciseList,
       typeValue: '',
+      permissionControl: {
+        can_answer: false, // 可作答
+        can_judge_correct: true, // 可判断对错(客观题)
+        can_show_answer: true, // 可查看答案
+        can_correct: false, // 可批改
+        can_check_correct: false, // 可查看批改
+      },
     };
   },
   computed: {
@@ -60,6 +76,14 @@ export default {
           return SelectPreview;
         case 'judge':
           return JudgePreview;
+        case 'sort':
+          return SortPreview;
+        case 'matching':
+          return MatchingPreview;
+        case 'fill':
+          return FillPreview;
+        case 'record_input':
+          return RecordInputPreview;
         default:
           return null;
       }

+ 21 - 11
src/views/book/courseware/preview/components/video_interaction/VideoInteractionPreview.vue

@@ -55,9 +55,14 @@
       :modal-append-to-body="true"
       :append-to-body="true"
       :lock-scroll="true"
-      width="80%"
+      width="1040px"
     >
-      <ExercisePreview :exercise_id="exercise_id" @handleCancle="handleClose" @submitAdd="submitAdd" />
+      <ExercisePreview
+        :exercise_id="exercise_id"
+        @handleCancle="handleClose"
+        @submitAdd="submitAdd"
+        :feed_back="data.property.feed_back"
+      />
       <!-- <iframe v-if="visible" :src="newpath" width="100%" :height="iframeHeight" frameborder="0"></iframe> -->
     </el-dialog>
     <el-dialog
@@ -68,7 +73,7 @@
       :modal-append-to-body="true"
       :append-to-body="true"
       :lock-scroll="true"
-      :width="isMobile ? '100%' : '80%'"
+      :width="isMobile ? '100%' : '1040px'"
       @close="handleClose"
     >
       <Report
@@ -216,6 +221,7 @@ export default {
           this.player.pause();
           this.exercise_id = item.id;
           this.visible = true;
+
           // GetFileURLMap({ file_id_list: [item.file_id] }).then(({ url_map }) => {
           //   this.newpath = `${this.file_preview_url}onlinePreview?url=${Base64.encode(url_map[item.file_id])}`;
           //   this.visible = true;
@@ -226,18 +232,22 @@ export default {
     handleClose() {
       this.reportFlag = false;
       this.player.play();
-      // setTimeout(() => {
-      //   this.first = '';
-      // }, 1000);
+      this.first = JSON.parse(JSON.stringify(this.exercise_id));
+      setTimeout(() => {
+        this.first = '';
+      }, 1000);
     },
-    submitAdd(id, answer, content) {
-      this.visible = false;
-      this.player.play();
+    submitAdd(id, answer, content, flag) {
+      this.first = JSON.parse(JSON.stringify(this.exercise_id));
       setTimeout(() => {
-        // this.first = '';
-      }, 2000);
+        this.first = '';
+      }, 1000);
       this.$set(this.userAnswer, id, answer);
       this.$set(this.exerciseList, id, content);
+      if (flag || this.data.property.feed_back === 'total') {
+        this.visible = false;
+        this.player.play();
+      }
     },
     lookReport() {
       this.player.pause();