ElemExplain.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <div class="elem-explain">
  3. <div
  4. v-if="data.showTitle"
  5. ref="ElemTitle"
  6. class="elem-title"
  7. :style="nameStyles"
  8. >
  9. {{ data.parent.topicName }}
  10. </div>
  11. <div class="elem-body" ref="ElemBody">
  12. <div
  13. class="elem-explain-no"
  14. v-if="data.parent.questionsCount > 1 && !data.isExtend"
  15. >
  16. {{ data.serialNumber }}、
  17. </div>
  18. <!-- 解答题子元件区域 -->
  19. <div class="elem-explain-elements">
  20. <elem-explain-element
  21. v-for="element in data.elements"
  22. :key="element.id"
  23. :data="element"
  24. ></elem-explain-element>
  25. </div>
  26. </div>
  27. </div>
  28. </template>
  29. <script>
  30. import ElemExplainElement from "./ElemExplainElement";
  31. export default {
  32. name: "elem-explain",
  33. components: { ElemExplainElement },
  34. props: {
  35. data: {
  36. type: Object,
  37. },
  38. },
  39. data() {
  40. return {};
  41. },
  42. computed: {
  43. nameStyles() {
  44. return {
  45. fontWeight: this.data.parent.nameFontWeight,
  46. fontSize: this.data.parent.nameFontSize,
  47. };
  48. },
  49. },
  50. mounted() {
  51. this.modifyBodyStyle();
  52. },
  53. methods: {
  54. modifyBodyStyle() {
  55. let height = this.data.h;
  56. if (this.data.showTitle) {
  57. height = this.data.h - this.$refs.ElemTitle.clientHeight;
  58. }
  59. this.$refs.ElemBody.style.height = height + "px";
  60. },
  61. },
  62. };
  63. </script>