ReadAloudPreview.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <!-- eslint-disable vue/no-v-html -->
  2. <template>
  3. <div class="readaloud-preview">
  4. <div class="stem">
  5. <span class="question-number">{{ data.property.question_number }}.</span>
  6. <span v-html="sanitizeHTML(data.stem)"></span>
  7. </div>
  8. <div v-if="isEnable(data.property.is_enable_description)" class="description">{{ data.description }}</div>
  9. <AudioPlay
  10. v-if="isEnable(data.property.is_enable_listening) && data.file_id_list.length > 0"
  11. :file-id="data.file_id_list[0]"
  12. />
  13. <el-input v-model="answer.answer_list[0].text" type="textarea" :autosize="{ minRows: 6, maxRows: 36 }" />
  14. <SoundRecordPreview :wav-blob.sync="answer.answer_list[0].voice_file_id" />
  15. </div>
  16. </template>
  17. <script>
  18. import PreviewMixin from './components/PreviewMixin';
  19. import SoundRecordPreview from './components/common/SoundRecordPreview.vue';
  20. export default {
  21. name: 'ReadAloudPreview',
  22. components: {
  23. SoundRecordPreview,
  24. },
  25. mixins: [PreviewMixin],
  26. created() {
  27. this.$set(this.answer.answer_list, 0, { text: '', voice_file_id: '' });
  28. },
  29. methods: {},
  30. };
  31. </script>
  32. <style lang="scss" scoped>
  33. @use '@/styles/mixin.scss' as *;
  34. .readaloud-preview {
  35. @include preview;
  36. .reference-answer {
  37. padding: 12px 24px;
  38. background-color: $content-color;
  39. border-radius: 8px;
  40. }
  41. }
  42. </style>