ShortAnswerPreview.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <!-- eslint-disable vue/no-v-html -->
  2. <template>
  3. <div class="readaloud-preview">
  4. <div class="stem">
  5. <span class="question-number" :style="{ fontSize: data.property.stem_question_number_font_size }">
  6. {{ questionNumberEndIsBracket(data.property.question_number) }}
  7. </span>
  8. <span v-html="sanitizeHTML(data.stem)"></span>
  9. </div>
  10. <div v-if="isEnable(data.property.is_enable_description)" class="description">{{ data.description }}</div>
  11. <AudioPlay
  12. v-if="isEnable(data.property.is_enable_listening) && data.file_id_list.length > 0"
  13. :file-id="data.file_id_list[0]"
  14. :show-slider="true"
  15. />
  16. <el-input
  17. v-model="answer.answer_list[0].text"
  18. :disabled="disabled"
  19. type="textarea"
  20. :autosize="{ minRows: 6, maxRows: 36 }"
  21. />
  22. <SoundRecordPreview :wav-blob.sync="answer.answer_list[0].audio_file_id" />
  23. <div v-if="disabled" class="reference-answer">
  24. <div class="title">参考答案</div>
  25. <div>{{ data.reference_answer }}</div>
  26. </div>
  27. </div>
  28. </template>
  29. <script>
  30. import PreviewMixin from './components/PreviewMixin';
  31. import SoundRecordPreview from './components/common/SoundRecordPreview.vue';
  32. export default {
  33. name: 'ShortAnswerPreview',
  34. components: {
  35. SoundRecordPreview,
  36. },
  37. mixins: [PreviewMixin],
  38. created() {
  39. this.$set(this.answer.answer_list, 0, { text: '', audio_file_id: '' });
  40. },
  41. methods: {},
  42. };
  43. </script>
  44. <style lang="scss" scoped>
  45. @use '@/styles/mixin.scss' as *;
  46. .readaloud-preview {
  47. @include preview;
  48. .reference-answer {
  49. display: flex;
  50. flex-direction: column;
  51. row-gap: 8px;
  52. padding: 12px 24px;
  53. font-size: 14px;
  54. white-space: pre;
  55. background-color: $content-color;
  56. .title {
  57. color: #4e5969;
  58. }
  59. }
  60. }
  61. </style>