ReadAloudPreview.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. <SoundRecordPreview :wav-blob.sync="answer.answer_list[0].voice_file_id" />
  14. </div>
  15. </template>
  16. <script>
  17. import PreviewMixin from './components/PreviewMixin';
  18. import SoundRecordPreview from './components/common/SoundRecordPreview.vue';
  19. export default {
  20. name: 'ReadAloudPreview',
  21. components: {
  22. SoundRecordPreview,
  23. },
  24. mixins: [PreviewMixin],
  25. created() {
  26. this.$set(this.answer.answer_list, 0, { voice_file_id: '' });
  27. },
  28. methods: {},
  29. };
  30. </script>
  31. <style lang="scss" scoped>
  32. @use '@/styles/mixin.scss' as *;
  33. .readaloud-preview {
  34. @include preview;
  35. .reference-answer {
  36. padding: 12px 24px;
  37. background-color: $content-color;
  38. border-radius: 8px;
  39. }
  40. }
  41. </style>