EssayQuestionPreview.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <!-- eslint-disable vue/no-v-html -->
  2. <template>
  3. <div class="essayquestion-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. <el-input
  10. v-model="answer.answer_list.value"
  11. rows="12"
  12. resize="none"
  13. type="textarea"
  14. placeholder="请输入"
  15. :maxlength="1000"
  16. show-word-limit
  17. @input="handleInput"
  18. />
  19. <SoundRecordPreview :wav-blob.sync="answer.answer_list.audio_file_id" />
  20. <UploadFiles
  21. :fille-number="999"
  22. file-type-name="文件"
  23. :upload-type="'*'"
  24. :file-id-list="answer.answer_list.accessory_file_id"
  25. upload-title="上传附件:"
  26. @upload="handleUpload"
  27. @deleteFile="handleDelete"
  28. />
  29. <div v-if="isEnable(data.property.is_enable_reference_answer) && isShowRightAnswer" class="reference-box">
  30. <h5 class="reference-title">参考答案</h5>
  31. <span class="reference-answer" v-html="sanitizeHTML(data.reference_answer)"></span>
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. import PreviewMixin from './components/PreviewMixin';
  37. import SoundRecordPreview from './components/common/SoundRecordPreview.vue';
  38. import UploadFiles from './components/common/UploadFiles.vue';
  39. export default {
  40. name: 'EssayQuestionPreview',
  41. components: {
  42. SoundRecordPreview,
  43. UploadFiles,
  44. },
  45. mixins: [PreviewMixin],
  46. data() {
  47. return {
  48. answer: {
  49. answer_list: {
  50. audio_file_id: '',
  51. value: '',
  52. accessory_file_id: [],
  53. },
  54. },
  55. };
  56. },
  57. created() {},
  58. methods: {
  59. // 文件上传成功
  60. handleUpload(fileId) {
  61. this.answer.answer_list.accessory_file_id.push(fileId);
  62. },
  63. // 删除文件
  64. handleDelete(fileId) {
  65. this.answer.answer_list.accessory_file_id.splice(this.answer.answer_list.accessory_file_id.indexOf(fileId), 1);
  66. },
  67. handleInput(value) {
  68. if (value.length >= 1000) {
  69. this.$message.warning(`字数达到1000字!`);
  70. }
  71. },
  72. },
  73. };
  74. </script>
  75. <style lang="scss" scoped>
  76. @use '@/styles/mixin.scss' as *;
  77. .essayquestion-preview {
  78. @include preview;
  79. :deep .sound-record-wrapper {
  80. justify-content: center;
  81. }
  82. .reference-box {
  83. padding: 12px;
  84. background: #f9f8f9;
  85. .reference-title {
  86. margin: 0 0 10px;
  87. font-size: 14px;
  88. font-weight: 400;
  89. line-height: 32px;
  90. color: #4e5969;
  91. }
  92. }
  93. }
  94. </style>