WaitTask.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <div class="wait-task">
  3. <div class="part-box part-box-filter">
  4. <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
  5. <el-form-item label="考试名称:">
  6. <el-select
  7. v-model="filter.examId"
  8. style="width: 315px;"
  9. placeholder="请选择"
  10. clearable
  11. >
  12. <el-option
  13. v-for="item in exams"
  14. :key="item.id"
  15. :value="item.id"
  16. :label="item.name"
  17. ></el-option>
  18. </el-select>
  19. </el-form-item>
  20. <el-form-item label-width="0px">
  21. <el-button type="primary" icon="icon icon-search" @click="toPage(1)"
  22. >查询</el-button
  23. >
  24. </el-form-item>
  25. </el-form>
  26. </div>
  27. <div class="part-box">
  28. <el-table
  29. ref="TableList"
  30. :data="tasks"
  31. :row-class-name="tableRowClassName"
  32. border
  33. stripe
  34. >
  35. <el-table-column prop="examCode" label="考试ID"></el-table-column>
  36. <el-table-column prop="examName" label="考试名称"></el-table-column>
  37. <el-table-column prop="courseNameCode" label="科目名称(编码)">
  38. </el-table-column>
  39. <el-table-column prop="paperStatus" label="试卷"></el-table-column>
  40. <el-table-column prop="cardStatus" label="答题卡"></el-table-column>
  41. <el-table-column prop="endTime" label="任务截止日期"></el-table-column>
  42. <el-table-column prop="overTime" label="剩余时间"></el-table-column>
  43. <el-table-column prop="receiveTime" label="接收时间"></el-table-column>
  44. <el-table-column label="操作" align="center">
  45. <template slot-scope="scope">
  46. <el-button
  47. class="btn-table-icon"
  48. type="text"
  49. icon="icon icon-circle-right"
  50. @click="toDetail(scope.row)"
  51. title="详情"
  52. ></el-button>
  53. </template>
  54. </el-table-column>
  55. </el-table>
  56. <div class="part-page">
  57. <el-pagination
  58. background
  59. layout="prev, pager, next"
  60. :current-page="current"
  61. :total="total"
  62. :page-size="size"
  63. @current-change="toPage"
  64. >
  65. </el-pagination>
  66. </div>
  67. </div>
  68. </div>
  69. </template>
  70. <script>
  71. import { waitTaskListPage, examList } from "../api";
  72. import { mapActions } from "vuex";
  73. export default {
  74. name: "wait-task",
  75. data() {
  76. return {
  77. filter: {
  78. examId: ""
  79. },
  80. current: 1,
  81. size: this.GLOBAL.pageSize,
  82. total: 0,
  83. visible: false,
  84. exams: [],
  85. tasks: []
  86. };
  87. },
  88. created() {
  89. this.init();
  90. },
  91. methods: {
  92. ...mapActions("examCenter", ["updateWaitTaskCount"]),
  93. init() {
  94. this.getExamList();
  95. this.toPage(1);
  96. },
  97. async getList() {
  98. const datas = {
  99. ...this.filter,
  100. pageNumber: this.current,
  101. pageSize: this.size
  102. };
  103. const result = await waitTaskListPage(datas);
  104. const data = result || { records: [], total: 0 };
  105. this.tasks = data.records;
  106. this.total = data.total;
  107. },
  108. toPage(page) {
  109. this.current = page;
  110. this.getList();
  111. this.updateWaitTaskCount();
  112. },
  113. async getExamList() {
  114. const data = await examList();
  115. this.exams = data.map(item => {
  116. return {
  117. id: item.id,
  118. name: item.examName
  119. };
  120. });
  121. },
  122. tableRowClassName({ row }) {
  123. return row.warning ? "row-danger" : "";
  124. },
  125. toDetail(row) {
  126. this.$router.push({
  127. name: "WaitTaskDetail",
  128. params: {
  129. taskId: row.id
  130. }
  131. });
  132. }
  133. },
  134. beforeRouteLeave(to, from, next) {
  135. if (to.name !== "WaitTaskDetail") {
  136. this.$destroy();
  137. }
  138. next();
  139. },
  140. beforeRouteEnter(to, from, next) {
  141. if (from.name === "WaitTaskDetail") {
  142. next(vm => vm.$nextTick(() => vm.getList()));
  143. } else {
  144. next();
  145. }
  146. }
  147. };
  148. </script>