Reject.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <div class="mark">
  3. <div class="mark-header">
  4. <div v-if="store.currentTask" class="mark-header-part">
  5. <div class="header-noun">
  6. <span>课程名称:</span>
  7. <span>
  8. {{ store.currentTask.subject.name }}({{
  9. store.currentTask.subject.code
  10. }})</span
  11. >
  12. </div>
  13. <div class="header-noun">
  14. <span>试卷编号:</span>
  15. <span>{{ store.currentTask.paperNumber }}</span>
  16. </div>
  17. <div class="header-noun">
  18. <span>姓名:</span>
  19. <span>{{ store.currentTask.studentName }}</span>
  20. </div>
  21. <div class="header-noun">
  22. <span>学号:</span>
  23. <span>{{ store.currentTask.studentCode }}</span>
  24. </div>
  25. </div>
  26. <div class="mark-header-part">
  27. <div class="header-text-btn header-logout" @click="logout">
  28. <img class="header-icon" src="@/assets/icons/icon-return.svg" />返回
  29. </div>
  30. </div>
  31. </div>
  32. <mark-tool :actions="['minimap', 'sizeScale', 'imgScale']" />
  33. <div class="mark-main">
  34. <mark-body origImageUrls="sheetUrls" onlyTrack @error="renderError" />
  35. <reject-board v-if="store.currentTask" />
  36. </div>
  37. </div>
  38. </template>
  39. <script setup lang="ts">
  40. import { onMounted } from "vue";
  41. import { store } from "@/store/store";
  42. import MarkTool from "@/features/mark/MarkTool.vue";
  43. import MarkBody from "../student/studentInspect/MarkBody.vue";
  44. import RejectBoard from "./RejectBoard.vue";
  45. import { message } from "ant-design-vue";
  46. import { getMarkTask } from "@/api/markPage";
  47. import vls from "@/utils/storage";
  48. import { doLogout } from "@/api/markPage";
  49. // taskId
  50. const rejectParam = vls.get("reject", {});
  51. function logout() {
  52. doLogout();
  53. }
  54. async function fetchTask() {
  55. const mkey = "fetch_task_key";
  56. void message.info({ content: "获取任务中...", duration: 1.5, key: mkey });
  57. const res = await getMarkTask(rejectParam.taskId);
  58. if (!res?.data) {
  59. store.message = "无数据!";
  60. return;
  61. }
  62. const rawTask = res.data;
  63. rawTask.subject = {
  64. code: rejectParam.courseCode,
  65. name: rejectParam.courseName,
  66. };
  67. rawTask.paperNumber = rejectParam.paperNumber;
  68. rawTask.studentCode = rejectParam.studentCode;
  69. rawTask.studentName = rejectParam.studentName;
  70. store.currentTask = rawTask;
  71. }
  72. onMounted(async () => {
  73. await fetchTask();
  74. });
  75. const renderError = () => {
  76. store.currentTask = undefined;
  77. store.message = "加载失败,请重新加载。";
  78. };
  79. </script>