ExceptionDetailDialog.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <el-dialog
  3. class="exception-detail-dialog gray-dialog"
  4. :visible.sync="modalIsShow"
  5. title="异常处理明细"
  6. width="1000px"
  7. top="94px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. append-to-body
  11. @open="visibleChange"
  12. >
  13. <el-table ref="TableList" :data="dataList">
  14. <el-table-column prop="startTime" label="异常处理开始时间">
  15. <span slot-scope="scope">{{
  16. scope.row.startTime | datetimeFilter
  17. }}</span>
  18. </el-table-column>
  19. <el-table-column prop="endTime" label="异常处理结束时间">
  20. <span slot-scope="scope">{{ scope.row.endTime | datetimeFilter }}</span>
  21. </el-table-column>
  22. <el-table-column prop="reason" label="异常原因"></el-table-column>
  23. <el-table-column prop="totalTimeStr" label="持续时长"></el-table-column>
  24. </el-table>
  25. <div class="part-page">
  26. <el-pagination
  27. background
  28. layout="prev, pager, next,total,sizes,jumper"
  29. :current-page="current"
  30. :total="total"
  31. :page-size.sync="size"
  32. @size-change="toPage(1)"
  33. @current-change="toPage"
  34. >
  35. </el-pagination>
  36. </div>
  37. <div slot="footer"></div>
  38. </el-dialog>
  39. </template>
  40. <script>
  41. import { reportExceptionDetail } from "@/api/invigilation";
  42. import { timeNumberToText } from "@/utils/utils";
  43. export default {
  44. name: "exception-detail-dialog",
  45. props: {
  46. detailId: {
  47. type: [String, Number],
  48. required: true,
  49. },
  50. },
  51. data() {
  52. return {
  53. modalIsShow: false,
  54. current: 1,
  55. total: 0,
  56. size: 10,
  57. dataList: [],
  58. };
  59. },
  60. methods: {
  61. visibleChange() {
  62. this.toPage(1);
  63. },
  64. async getList() {
  65. const datas = {
  66. examStudentId: this.detailId,
  67. pageNumber: this.current,
  68. pageSize: this.size,
  69. };
  70. const res = await reportExceptionDetail(datas);
  71. this.dataList = res.data.data.records.map((item) => {
  72. return {
  73. ...item,
  74. totalTimeStr: timeNumberToText(item.totalTime * 1000),
  75. };
  76. });
  77. this.total = res.data.data.total;
  78. },
  79. toPage(page) {
  80. this.current = page;
  81. this.getList();
  82. },
  83. cancel() {
  84. this.modalIsShow = false;
  85. },
  86. open() {
  87. this.modalIsShow = true;
  88. },
  89. },
  90. };
  91. </script>