Browse Source

选项上传音频

natasha 1 year ago
parent
commit
be005fe05b

+ 6 - 2
src/views/exercise_questions/create/components/common/UploadAudio.vue

@@ -31,6 +31,10 @@ export default {
       type: String,
       default: '',
     },
+    itemIndex: {
+      type: Number,
+      default: null,
+    },
   },
   data() {
     return {
@@ -72,7 +76,7 @@ export default {
           this.file_id = file_id;
           this.file_url = file_url;
           this.file_name = file_name;
-          this.$emit('upload', file_id);
+          this.$emit('upload', file_id, this.itemIndex);
         }
       });
     },
@@ -83,7 +87,7 @@ export default {
         type: 'warning',
       })
         .then(() => {
-          this.$emit('deleteFile', this.file_id);
+          this.$emit('deleteFile', this.file_id, this.itemIndex);
           this.file_id = '';
           this.file_url = '';
           this.file_name = '';

+ 16 - 1
src/views/exercise_questions/create/components/exercises/RepeatQuestion.vue

@@ -34,7 +34,13 @@
             <div class="option-content">
               <RichText v-model="item.content" placeholder="输入内容" :inline="true" />
             </div>
-            <UploadAudio :file-id="item.file_id_list?.[0]" @upload="upload" @deleteFile="deleteFile" />
+            <UploadAudio
+              v-if="Math.random().toString(36).slice(-6)"
+              :file-id="item.file_id_list?.[0]"
+              :item-index="i"
+              @upload="uploads"
+              @deleteFile="deleteFiles"
+            />
             <SvgIcon icon-class="delete" class="delete pointer" @click="deleteOption(i)" />
           </li>
         </ul>
@@ -139,6 +145,15 @@ export default {
     addOption() {
       this.data.option_list.push(getOption());
     },
+    uploads(file_id, index) {
+      this.data.option_list[index].file_id_list.push(file_id);
+    },
+    deleteFiles(file_id, itemIndex) {
+      let index = this.data.option_list[itemIndex].file_id_list.indexOf(file_id);
+      if (index !== -1) {
+        this.data.option_list[itemIndex].file_id_list.splice(index, 1);
+      }
+    },
   },
 };
 </script>