WritePreview.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <!-- eslint-disable vue/no-v-html -->
  2. <template>
  3. <div class="write-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 class="article-content" v-html="sanitizeHTML(data.article)"></div>
  9. <div v-if="data.property.is_enable_description" class="description">{{ data.description }}</div>
  10. <template v-if="data.property.is_enable_model_essay">
  11. <el-divider content-position="center"
  12. ><span
  13. :class="['sample-text', show_sample_text ? 'sample-show' : 'sample-hide']"
  14. @click="show_sample_text = !show_sample_text"
  15. >{{ show_sample_text ? '隐藏范文' : '查看范文' }}</span
  16. ></el-divider
  17. >
  18. <div v-if="show_sample_text" class="article-content" v-html="sanitizeHTML(data.sample_text)"></div>
  19. </template>
  20. </div>
  21. </template>
  22. <script>
  23. import PreviewMixin from './components/PreviewMixin';
  24. export default {
  25. name: 'WritePreview',
  26. mixins: [PreviewMixin],
  27. data() {
  28. return {
  29. show_sample_text: false,
  30. };
  31. },
  32. created() {
  33. console.log(this.data);
  34. },
  35. methods: {},
  36. };
  37. </script>
  38. <style lang="scss" scoped>
  39. @use '@/styles/mixin.scss' as *;
  40. .write-preview {
  41. @include preview;
  42. .el-divider--horizontal {
  43. margin: 12px 0;
  44. }
  45. .sample-text {
  46. font-size: 14px;
  47. font-weight: 400;
  48. line-height: 30px;
  49. color: #000;
  50. cursor: pointer;
  51. &.sample-show {
  52. color: #306eff;
  53. }
  54. }
  55. .article-content {
  56. :deep p {
  57. margin: 0;
  58. }
  59. }
  60. }
  61. </style>