ElemFillLine.vue 1.8 KB

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