ElemFillLine.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div class="elem-fill-line">
  3. <div
  4. v-if="data.parent && data.startNumber === data.parent.startNumber"
  5. class="elem-title"
  6. :style="nameStyles"
  7. >
  8. {{ data.parent.topicName }}
  9. </div>
  10. <div class="elem-body" v-if="data.questionDirection === 'vertical'">
  11. <ul
  12. class="elem-fill-quesiton"
  13. v-for="question in data.questionLineNums"
  14. :key="question.no"
  15. :style="groupStyles"
  16. >
  17. <li class="elem-fill-no">
  18. <span :style="lineNoStyles"
  19. >{{ data.numberPre }}{{ question.no }}.</span
  20. >
  21. </li>
  22. <li
  23. class="elem-fill-line"
  24. v-for="line in question.count"
  25. :key="line"
  26. :style="lineStyles"
  27. ></li>
  28. </ul>
  29. </div>
  30. <div v-else class="elem-body">
  31. <ul
  32. class="elem-fill-quesiton"
  33. v-for="line in data.questionLineNums[0].count"
  34. :key="line"
  35. :style="groupStyles"
  36. >
  37. <li v-if="line === 1" class="elem-fill-no">
  38. <span :style="lineNoStyles">
  39. {{ data.numberPre }}{{ data.questionLineNums[0].no }}.
  40. </span>
  41. </li>
  42. <li
  43. v-if="line !== data.questionLineNums[0].count"
  44. class="elem-fill-comma"
  45. :style="lineNoStyles"
  46. >
  47. ,
  48. </li>
  49. <li class="elem-fill-line" :style="lineStyles"></li>
  50. </ul>
  51. </div>
  52. </div>
  53. </template>
  54. <script>
  55. export default {
  56. name: "elem-fill-line",
  57. props: {
  58. data: {
  59. type: Object,
  60. },
  61. },
  62. data() {
  63. return {
  64. questions: [],
  65. };
  66. },
  67. computed: {
  68. lineStyles() {
  69. return {
  70. height: this.data.lineSpacing + "px",
  71. };
  72. },
  73. lineNoStyles() {
  74. return {
  75. top: this.data.lineSpacing - 4 + "px",
  76. };
  77. },
  78. groupStyles() {
  79. return {
  80. width: 100 / this.data.questionNumberPerLine + "%",
  81. };
  82. },
  83. nameStyles() {
  84. return {
  85. fontWeight: this.data.parent.nameFontWeight,
  86. fontSize: this.data.parent.nameFontSize,
  87. };
  88. },
  89. },
  90. mounted() {},
  91. methods: {},
  92. };
  93. </script>