2
0

MarkHeader.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <div
  3. class="
  4. tw-flex tw-gap-4 tw-justify-between tw-items-center
  5. header-container
  6. tw-px-1
  7. "
  8. v-if="store.setting"
  9. >
  10. <div>
  11. {{
  12. `${store.setting.subject.code ?? ""}-${
  13. store.setting.subject.name ?? ""
  14. }`
  15. }}
  16. </div>
  17. <div class="tw-flex tw-gap-1">
  18. <div>
  19. 编号<span class="highlight-text">{{
  20. store.currentTask?.secretNumber
  21. }}</span>
  22. </div>
  23. </div>
  24. <ul v-if="!isSingleStudent" class="tw-flex tw-gap-2 tw-mb-0">
  25. <li>
  26. 待复核<span class="highlight-text">{{ store.status.totalCount }}</span>
  27. </li>
  28. </ul>
  29. <ZoomPaper :store="store" />
  30. <div class="tw-flex tw-place-items-center">
  31. <UserOutlined class="icon-font icon-with-text" />{{
  32. store.setting.userName
  33. }}
  34. </div>
  35. <div
  36. class="tw-flex tw-place-items-center tw-cursor-pointer"
  37. @click="closeWindow"
  38. >
  39. <PoweroffOutlined class="icon-font icon-with-text" />关闭
  40. </div>
  41. </div>
  42. </template>
  43. <script setup lang="ts">
  44. import { onMounted, ref } from "vue";
  45. import { store } from "@/features/mark/store";
  46. import { UserOutlined, PoweroffOutlined } from "@ant-design/icons-vue";
  47. import { useRoute } from "vue-router";
  48. import { clearInspectedTask } from "@/api/libraryInspectPage";
  49. import ZoomPaper from "@/components/ZoomPaper.vue";
  50. const route = useRoute();
  51. let isSingleStudent = ref(false);
  52. isSingleStudent.value = !!route.query.studentId;
  53. const { subjectCode, groupNumber } = route.query as {
  54. subjectCode: string;
  55. groupNumber: string;
  56. };
  57. async function updateClearTask() {
  58. await clearInspectedTask(subjectCode, groupNumber);
  59. }
  60. const closeWindow = async () => {
  61. await updateClearTask();
  62. window.close();
  63. };
  64. onMounted(() => {
  65. // 不确定是否一定能在关闭页面时调用
  66. window.addEventListener("beforeunload", () => {
  67. updateClearTask();
  68. });
  69. });
  70. </script>
  71. <style scoped>
  72. .header-container {
  73. position: relative;
  74. font-size: 16px;
  75. height: 40px;
  76. background-color: #5d6d7d;
  77. color: white;
  78. }
  79. .highlight-text {
  80. color: #ffe400;
  81. }
  82. .icon-font {
  83. display: block;
  84. }
  85. .icon-with-text {
  86. font-size: 18px;
  87. line-height: 18px;
  88. }
  89. </style>