MarkHistory.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <div
  3. :style="{ display: store.historyOpen ? 'block' : 'none' }"
  4. class="history-container"
  5. >
  6. <div class="tw-flex tw-justify-between tw-mt-1 tw-mb-1">
  7. <div>编号</div>
  8. <div>时间</div>
  9. <div>分数</div>
  10. </div>
  11. <div v-for="(task, index) of store.historyTasks" :key="index">
  12. <div @click="replaceCurrentTask(task)" class="tw-flex tw-justify-between">
  13. <div>{{ task.secretNumber }}</div>
  14. <div>
  15. {{ $filters.datetimeFilter(task.markTime) }}
  16. </div>
  17. <div style="width: 30px; text-align: center">
  18. {{ task.markerScore }}
  19. </div>
  20. </div>
  21. </div>
  22. <div class="tw-flex tw-justify-between">
  23. <div @click="previousPage">上一页</div>
  24. <div>第{{ currentPage }}页</div>
  25. <div @click="nextPage">下一页</div>
  26. </div>
  27. </div>
  28. </template>
  29. <script lang="ts">
  30. import { getInspectedHistory } from "@/api/inspectPage";
  31. import { Task } from "@/types";
  32. import { defineComponent, reactive, ref, watchEffect } from "vue";
  33. import { useRoute } from "vue-router";
  34. import { store } from "./store";
  35. export default defineComponent({
  36. name: "MarkHistory",
  37. emits: ["reload"],
  38. setup(props, { emit }) {
  39. const route = useRoute();
  40. const { subjectCode } = route.query as {
  41. subjectCode: string;
  42. };
  43. watchEffect(async () => {
  44. if (store.historyOpen) {
  45. await updateHistoryTask({});
  46. } else {
  47. emit("reload");
  48. }
  49. });
  50. const secretNumberInput = ref(null);
  51. const loading = ref(false);
  52. const currentPage = ref(1);
  53. async function updateHistoryTask({
  54. pageNumber = 1,
  55. pageSize = 10,
  56. }: {
  57. pageNumber?: number; // 从1开始
  58. pageSize?: number;
  59. }) {
  60. loading.value = true;
  61. const res = await getInspectedHistory({
  62. pageNumber,
  63. pageSize,
  64. subjectCode,
  65. });
  66. loading.value = false;
  67. if (res.data) {
  68. store.historyTasks = res.data;
  69. }
  70. }
  71. function replaceCurrentTask(task: Task) {
  72. store.currentTask = task;
  73. }
  74. function previousPage() {
  75. if (currentPage.value > 1) {
  76. currentPage.value -= 1;
  77. updateHistoryTask({ pageNumber: currentPage.value });
  78. }
  79. }
  80. function nextPage() {
  81. currentPage.value += 1;
  82. updateHistoryTask({ pageNumber: currentPage.value });
  83. }
  84. return {
  85. store,
  86. loading,
  87. secretNumberInput,
  88. updateHistoryTask,
  89. replaceCurrentTask,
  90. currentPage,
  91. previousPage,
  92. nextPage,
  93. };
  94. },
  95. });
  96. </script>
  97. <style scoped>
  98. .history-container {
  99. min-width: 250px;
  100. border-right: 1px solid grey;
  101. }
  102. </style>