HeadStdno.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <div :class="classes">
  3. <div class="stdno-empty" v-if="data.examNumberStyle === 'PASTE'">
  4. <p class="">粘贴条形码区</p>
  5. </div>
  6. <div class="stdno-auto" v-if="data.examNumberStyle === 'PRINT'">
  7. <div class="stdno-auto-barcode">
  8. <img :src="examNumberBarcodeSrc" v-if="examNumberBarcodeSrc" />
  9. <img src="../../../assets/images/barcode-sample-notext.png" v-else />
  10. <p>{{ examNumberBarcodeName || "123456789" }}</p>
  11. </div>
  12. </div>
  13. <div class="stdno-fill" v-if="data.examNumberStyle === 'FILL'">
  14. <div class="stdno-fill-head">
  15. <h5>学号</h5>
  16. <div class="stdno-fill-rect">
  17. <div
  18. class="stdno-fill-number"
  19. v-for="n in fillNumber"
  20. :key="n"
  21. :style="columnStyles"
  22. ></div>
  23. </div>
  24. </div>
  25. <div class="stdno-fill-body">
  26. <div
  27. class="stdno-fill-list"
  28. v-for="n in fillNumber"
  29. :key="n"
  30. :style="columnStyles"
  31. >
  32. <div
  33. class="stdno-fill-option"
  34. v-for="(m, mindex) in getColumnFills(n)"
  35. :key="mindex"
  36. >
  37. <i>{{ m }}</i>
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. </template>
  44. <script>
  45. export default {
  46. name: "head-stdno",
  47. props: {
  48. data: {
  49. type: Object,
  50. },
  51. },
  52. data() {
  53. return {
  54. examNumberBarcodeSrc:
  55. this.data["fieldInfos"] && this.data["fieldInfos"]["examNumber"],
  56. examNumberBarcodeName:
  57. this.data["fieldInfos"] && this.data["fieldInfos"]["examNumberStr"],
  58. defaultColumnFills: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
  59. };
  60. },
  61. computed: {
  62. classes() {
  63. return ["head-stdno", "card-head-body-spin"];
  64. },
  65. fillNumber() {
  66. return this.data["fillNumber"] || 13;
  67. },
  68. columnStyles() {
  69. return {
  70. width: (100 / this.fillNumber).toFixed(2) + "%",
  71. };
  72. },
  73. },
  74. methods: {
  75. getColumnFills(columnIndex) {
  76. if (
  77. !this.data.containsLetter ||
  78. !this.data.relationList ||
  79. !this.data.relationList.length
  80. ) {
  81. return [...this.defaultColumnFills];
  82. }
  83. const curRelation = this.data.relationList.find(
  84. (item) => item.columnIndex === columnIndex
  85. );
  86. if (!curRelation) return [...this.defaultColumnFills];
  87. return this.defaultColumnFills.map(
  88. (item, index) => curRelation.letters[index] || ""
  89. );
  90. },
  91. },
  92. };
  93. </script>