WaitTaskExamTask.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <template>
  2. <div class="wait-task-exam-task part-box part-box-pad part-box-border">
  3. <div class="task-head part-box part-box-flex">
  4. <h3>
  5. 命题待办(<span class="color-danger">{{ total }}</span
  6. >)
  7. </h3>
  8. <div>
  9. <i class="el-icon-s-fold"></i>
  10. </div>
  11. </div>
  12. <div class="task-list">
  13. <div v-for="task in tasks" :key="task.id" class="task-item">
  14. <p>
  15. <span>试卷编号:</span>
  16. <span>{{ task.paperNumber }}</span>
  17. </p>
  18. <p>
  19. <span>课程(代码):</span>
  20. <span>{{ task.courseName }}({{ task.courseCode }})</span>
  21. </p>
  22. <p>
  23. <span>命题结束时间:</span>
  24. <span>{{ task.endTime | timestampFilter }}</span>
  25. </p>
  26. <div class="part-box-flex">
  27. <el-tag :type="task.residueTips.status" effect="dark">
  28. {{ task.residueTips.title }}
  29. </el-tag>
  30. <span class="task-action" @click="toDo(task)"
  31. >立即处理 <i class="el-icon-arrow-right"></i
  32. ></span>
  33. </div>
  34. </div>
  35. </div>
  36. <div class="text-center">
  37. <el-pagination
  38. v-if="tasks.length"
  39. background
  40. layout="total, sizes, prev, pager, next, jumper"
  41. :pager-count="5"
  42. :current-page="current"
  43. :total="total"
  44. :page-size="size"
  45. @current-change="toPage"
  46. @size-change="pageSizeChange"
  47. >
  48. </el-pagination>
  49. </div>
  50. <!-- ModifyTaskApply -->
  51. <modify-task-apply
  52. ref="ModifyTaskApply"
  53. :type="editType"
  54. :row-data="curTask"
  55. @modified="modified"
  56. ></modify-task-apply>
  57. </div>
  58. </template>
  59. <script>
  60. import { waitExamTaskListPage } from "../api";
  61. import ModifyTaskApply from "./taskApply/ModifyTaskApply.vue";
  62. import { residueFloorTime } from "@/plugins/utils";
  63. import { TASK_WARNING_TIME } from "@/constants/enumerate";
  64. export default {
  65. name: "wait-task-exam-task",
  66. components: { ModifyTaskApply },
  67. data() {
  68. return {
  69. total: 0,
  70. current: 1,
  71. size: this.GLOBAL.pageSize,
  72. tasks: [],
  73. curTask: {},
  74. editType: "APPLY",
  75. };
  76. },
  77. mounted() {
  78. this.initData();
  79. },
  80. methods: {
  81. async initData() {
  82. const cachePageInfo = this.$ls.get("cachePageInfo");
  83. if (cachePageInfo) {
  84. this.current = cachePageInfo.page;
  85. await this.getList();
  86. this.$nextTick(() => {
  87. const curRow = this.tasks.find(
  88. (item) => item.id === cachePageInfo.curRowId
  89. );
  90. if (!curRow) return;
  91. this.toDo(curRow);
  92. });
  93. } else {
  94. this.toPage(1);
  95. }
  96. this.$ls.remove("cachePageInfo");
  97. },
  98. async getList() {
  99. const datas = {
  100. pageNumber: this.current,
  101. pageSize: this.size,
  102. };
  103. const data = await waitExamTaskListPage(datas);
  104. this.tasks = data.records.map((item) => {
  105. item.residueTips = residueFloorTime(
  106. item.endTime - item.systemCurrentTime,
  107. TASK_WARNING_TIME
  108. );
  109. return item;
  110. });
  111. this.total = data.total;
  112. },
  113. toPage(page) {
  114. this.current = page;
  115. this.getList();
  116. },
  117. toDo(task) {
  118. this.curTask = task;
  119. this.$refs.ModifyTaskApply.open();
  120. },
  121. modified() {
  122. this.$emit("update-list");
  123. },
  124. },
  125. };
  126. </script>