ReportStatistics.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <div class="report-statistics">
  3. <el-table ref="TableList" :data="dataList">
  4. <el-table-column type="index" label="排序"></el-table-column>
  5. <el-table-column prop="examName" label="批次名称(ID)"></el-table-column>
  6. <el-table-column prop="examActivityId" label="场次ID"></el-table-column>
  7. <el-table-column prop="roomName" label="考场名称(代码)">
  8. <span slot-scope="scope"
  9. >{{ scope.row.roomName }}({{ scope.row.roomCode }})</span
  10. >
  11. </el-table-column>
  12. <el-table-column prop="examTotal" label="应考(科次)">
  13. <template slot-scope="scope">
  14. <span class="color-primary">{{ scope.row.examTotal }}</span>
  15. </template>
  16. </el-table-column>
  17. <el-table-column prop="actualExamTotal" label="实考(科次)">
  18. <template slot-scope="scope">
  19. <span class="color-success">{{ scope.row.actualExamTotal }}</span>
  20. </template>
  21. </el-table-column>
  22. <el-table-column prop="deficiencyExamTotal" label="缺考(科次)">
  23. <template slot-scope="scope">
  24. <span class="color-danger">{{ scope.row.deficiencyExamTotal }}</span>
  25. </template>
  26. </el-table-column>
  27. </el-table>
  28. <div class="part-page">
  29. <div class="page-info stat-page-info">
  30. 共计<span>应考{{ examTotal }}</span
  31. >科次,<span>实考{{ actualExamTotal }}分</span>科次,<span
  32. >缺考{{ deficiencyExamTotal }}</span
  33. >科次
  34. </div>
  35. <el-pagination
  36. background
  37. layout="prev, pager, next,total,sizes,jumper"
  38. :current-page="current"
  39. :total="total"
  40. :page-size="size"
  41. @size-change="toPage(1)"
  42. @current-change="toPage"
  43. >
  44. </el-pagination>
  45. </div>
  46. </div>
  47. </template>
  48. <script>
  49. import { reportOverviewData, reportStatisticsData } from "@/api/invigilation";
  50. export default {
  51. name: "report-statistics",
  52. props: {
  53. filter: {
  54. type: Object,
  55. default() {
  56. return {};
  57. },
  58. },
  59. },
  60. data() {
  61. return {
  62. current: 1,
  63. total: 0,
  64. size: 10,
  65. examTotal: 0,
  66. actualExamTotal: 0,
  67. deficiencyExamTotal: 0,
  68. dataList: [],
  69. };
  70. },
  71. mounted() {
  72. this.getData();
  73. },
  74. methods: {
  75. async getList() {
  76. const datas = {
  77. ...this.filter,
  78. pageNumber: this.current,
  79. pageSize: this.size,
  80. };
  81. const res = await reportStatisticsData(datas);
  82. this.dataList = res.data.data.records;
  83. this.total = res.data.data.total;
  84. },
  85. toPage(page) {
  86. this.current = page;
  87. this.getList();
  88. },
  89. async getTotalCount() {
  90. const datas = {
  91. ...this.filter,
  92. };
  93. const res = await reportOverviewData(datas);
  94. const resData = res.data.data;
  95. this.examTotal = resData.examTotal;
  96. this.actualExamTotal = resData.actualExamTotal;
  97. this.deficiencyExamTotal = resData.deficiencyExamTotal;
  98. },
  99. getData() {
  100. this.toPage(1);
  101. this.getTotalCount();
  102. },
  103. },
  104. };
  105. </script>
  106. <style lang="scss" scoped>
  107. .stat-page-info {
  108. color: #626a82;
  109. span {
  110. color: #202b4b;
  111. margin: 0 5px;
  112. font-weight: 600;
  113. }
  114. }
  115. </style>