MarkHeader.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <div class="flex gap-4">
  3. <div>
  4. <a href="/mark/subject-select">{{ store.setting.subject?.name }}</a>
  5. </div>
  6. <div class="flex">
  7. <div>考生编号:{{ store.currentTask?.studentCode }}</div>
  8. <div v-if="store.currentTask?.objectiveScore">
  9. 考生编号:{{ store.currentTask?.objectiveScore }}
  10. </div>
  11. </div>
  12. <div>
  13. <ul class="flex gap-1">
  14. <li>已评{{ store.status.markedCount }}</li>
  15. <li v-if="store.setting.topCount">分配{{ store.setting.topCount }}</li>
  16. <li>未评{{ store.status.totalCount - store.status.markedCount }}</li>
  17. <li
  18. :title="`问题卷${store.status.problemCount}\n待仲裁${store.status.arbitrateCount}`"
  19. >
  20. todo
  21. </li>
  22. <li>进度{{ progress }}%</li>
  23. </ul>
  24. </div>
  25. <div>
  26. <ul class="flex gap-1">
  27. <li>放大</li>
  28. <li>缩小</li>
  29. <li>回看</li>
  30. </ul>
  31. </div>
  32. <div>回看</div>
  33. <div
  34. :title="
  35. $filters.datetimeFilter(store.setting.startTime) +
  36. ' ~ ' +
  37. $filters.datetimeFilter(store.setting.startTime)
  38. "
  39. >
  40. 时钟
  41. </div>
  42. <div>{{ store.setting.groupNumber }}(切换)</div>
  43. <div>{{ store.setting.marker?.name }}</div>
  44. <div>退出</div>
  45. </div>
  46. </template>
  47. <script lang="ts">
  48. import { computed, defineComponent } from "vue";
  49. import { store } from "./store";
  50. export default defineComponent({
  51. name: "MarkHeader",
  52. setup() {
  53. const progress = computed(() => {
  54. const { totalCount, markedCount } = store.status;
  55. if (totalCount <= 0) return 0;
  56. let p = markedCount / totalCount;
  57. if (p < 0.01 && markedCount >= 1) p = 0.01;
  58. p = Math.floor(p * 100);
  59. return p;
  60. });
  61. return { store, progress };
  62. },
  63. });
  64. </script>