ArbitrateMarkList.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div class="container tw-mt-2 tw-ml-1">
  3. <div v-for="(markDetail, index) of list" :key="index">
  4. <table class="tw-mb-4">
  5. <tr style="border-bottom: 1px dotted grey">
  6. <td>评卷员</td>
  7. <td>{{ markDetail.markerName }}</td>
  8. </tr>
  9. <tr>
  10. <td>时间</td>
  11. <td>
  12. {{
  13. markDetail.markTime &&
  14. $filters.datetimeFilter(markDetail.markTime)
  15. }}
  16. </td>
  17. </tr>
  18. <tr>
  19. <td>总分</td>
  20. <td>
  21. {{
  22. markDetail.totalScore === -1 ? "未选做" : markDetail.totalScore
  23. }}
  24. </td>
  25. </tr>
  26. <tr>
  27. <td>详情</td>
  28. <td>{{ markDetail.scoreList }}</td>
  29. </tr>
  30. </table>
  31. </div>
  32. </div>
  33. </template>
  34. <script setup lang="ts">
  35. import { reactive, watch } from "vue";
  36. import { store } from "@/features/mark/store";
  37. import { getArbitrateList } from "@/api/arbitratePage";
  38. interface MarkDetail {
  39. markerName: string;
  40. markTime: number;
  41. totalScore: number;
  42. scoreList: string;
  43. }
  44. let list = reactive([] as Array<MarkDetail>);
  45. watch(
  46. () => store.currentTask,
  47. async () => {
  48. if (store.currentTask) {
  49. const res = await getArbitrateList(
  50. store.currentTask?.libraryId as unknown as string
  51. );
  52. list.splice(0);
  53. list.push(...res.data);
  54. } else {
  55. list.splice(0);
  56. }
  57. }
  58. );
  59. </script>
  60. <style scoped>
  61. .container {
  62. min-width: 200px;
  63. }
  64. .container table tr :first-child {
  65. width: 60px;
  66. font-weight: bold;
  67. }
  68. .container table tr td {
  69. max-width: 140px;
  70. word-wrap: break-word;
  71. }
  72. </style>