HeadDynamic.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <div :class="classes">
  3. <!-- write -->
  4. <div
  5. class="head-dynamic-part head-dynamic-write"
  6. v-if="data.examNumberStyle !== 'FILL'"
  7. >
  8. <div class="stdinfo-item">
  9. <span><i>手写签名</i></span>
  10. <span>:</span>
  11. <span></span>
  12. </div>
  13. <p>
  14. 注意:签名则表示您认可答题卡提供的信息与您本人信息相符;如签名与信息不符或者未签名,试卷作废。
  15. </p>
  16. </div>
  17. <!-- file -->
  18. <div class="head-dynamic-part head-dynamic-fill">
  19. <div class="head-dynamic-content">
  20. <p><span>正确填涂:</span><i></i></p>
  21. <p>
  22. <span>错误填涂:</span>
  23. <i>√</i>
  24. <i>×</i>
  25. <i></i>
  26. <i></i>
  27. </p>
  28. </div>
  29. </div>
  30. <!-- miss discipline -->
  31. <div
  32. v-if="data.examAbsent || data.discipline"
  33. class="head-dynamic-part head-dynamic-missfill"
  34. >
  35. <div class="head-dynamic-miss" v-if="data.examAbsent">
  36. <div class="head-dynamic-content">
  37. <span class="dynamic-miss-title">缺考标记</span>
  38. <span class="dynamic-miss-body"
  39. ><i
  40. class="head-dynamic-rect dynamic-miss-area"
  41. id="dynamic-miss-area"
  42. ></i
  43. ></span>
  44. </div>
  45. </div>
  46. <div class="head-dynamic-miss" v-if="data.discipline">
  47. <div class="head-dynamic-content">
  48. <span class="dynamic-miss-title">违纪标记</span>
  49. <span class="dynamic-miss-body"
  50. ><i
  51. class="head-dynamic-rect dynamic-breach-area"
  52. id="dynamic-breach-area"
  53. ></i
  54. ></span>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </template>
  60. <script>
  61. import { calcSum } from "../../../plugins/utils";
  62. export default {
  63. name: "head-dynamic",
  64. props: {
  65. data: {
  66. type: Object,
  67. },
  68. },
  69. data() {
  70. return {};
  71. },
  72. computed: {
  73. classes() {
  74. let partNum = 1;
  75. if (this.data.examNumberStyle !== "FILL" && this.data.writeSign)
  76. partNum++;
  77. if (this.data.examAbsent || this.data.discipline) partNum++;
  78. return ["head-dynamic", "card-head-body-spin", `head-dynamic-${partNum}`];
  79. },
  80. },
  81. mounted() {
  82. this.initStyles();
  83. },
  84. methods: {
  85. initStyles() {
  86. const { examNumberStyle } = this.data;
  87. if (examNumberStyle === "FILL") return;
  88. const parentHeight = this.$el.parentNode.offsetHeight;
  89. this.$el.style.height = parentHeight + "px";
  90. const childrenCount = this.$el.children.length;
  91. if (childrenCount > 1) {
  92. let heights = [];
  93. for (let i = 0; i < childrenCount; i++) {
  94. heights[i] = this.$el.children[i].offsetHeight;
  95. }
  96. const lastChildHeight = parentHeight - calcSum(heights.slice(0, -1));
  97. this.$el.children[childrenCount - 1].style.height =
  98. lastChildHeight + "px";
  99. }
  100. },
  101. },
  102. };
  103. </script>