Browse Source

汉字模板添加语音答题

natasha 5 days ago
parent
commit
fb63347d7f

+ 7 - 0
src/views/book/courseware/create/components/question/character/CharacterSetting.vue

@@ -86,6 +86,13 @@
           </el-select>
         </el-form-item>
       </template>
+      <el-form-item label="语音作答">
+        <el-radio-group v-model="property.is_enable_voice_answer">
+          <el-radio v-for="{ value, label } in switchOption" :key="value" :label="value" :value="value">
+            {{ label }}
+          </el-radio>
+        </el-radio-group>
+      </el-form-item>
       <AddAnswer />
     </el-form>
   </div>

+ 1 - 0
src/views/book/courseware/data/character.js

@@ -90,6 +90,7 @@ export function getCharacterProperty() {
     emotion: '', // 风格,情感
     speed_ratio: '', // 语速
     ...commonComponentProperty,
+    is_enable_voice_answer: switchOption[1].value,
   };
 }
 

+ 25 - 0
src/views/book/courseware/preview/components/character/CharacterPreview.vue

@@ -398,6 +398,16 @@
           </div>
         </div>
       </div>
+      <SoundRecord
+        v-if="isEnable(data.property.is_enable_voice_answer)"
+        ref="record"
+        type="normal"
+        class="record-box"
+        :attrib="data.unified_attrib"
+        :answer-record-list="data.record_list"
+        :task-model="isJudgingRightWrong ? 'ANSWER' : ''"
+        @handleWav="handleWav"
+      />
       <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
       <AnswerCorrect
         :answer-correct="data?.answer_correct"
@@ -423,6 +433,7 @@ import Strockplayredline from '../newWord_template/components/Strockplayredline.
 import Strockplayredlines from '../character_base/components/Strockplayredline.vue';
 import Strockred from '../character_base/components/Strockred.vue';
 import FreewriteLettle from '../character_base/components/FreewriteLettle.vue';
+import SoundRecord from '../../common/SoundRecord.vue';
 
 export default {
   name: 'CharacterPreview',
@@ -432,6 +443,7 @@ export default {
     Strockred,
     FreewriteLettle,
     Strockplayredlines,
+    SoundRecord,
   },
   mixins: [PreviewMixin],
   data() {
@@ -468,9 +480,20 @@ export default {
       deep: true,
       immediate: true,
     },
+    isJudgingRightWrong(val) {
+      if (!val) return;
+
+      this.handleWav(this.answer.record_list);
+    },
+    'data.record_list'(val) {
+      this.answer.record_list = val;
+    },
   },
   created() {},
   methods: {
+    handleWav(data) {
+      this.data.record_list = data;
+    },
     handleData() {
       let answer_list = [];
       this.data.option_list.forEach((item, index) => {
@@ -587,6 +610,8 @@ export default {
     // 重做
     retry() {
       this.handleData();
+      this.handleWav([]);
+      this.$refs.record.handleReset();
     },
   },
 };