ExamManagement.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <div>
  3. <el-form :model="form" inline>
  4. <el-form-item label="批次名称">
  5. <el-input v-model.trim="form.name"></el-input>
  6. </el-form-item>
  7. <el-form-item label="类型">
  8. <ExamTypeSelect v-model="form.mode"></ExamTypeSelect>
  9. </el-form-item>
  10. <el-form-item label="状态">
  11. <StateSelect v-model="form.enableState"></StateSelect>
  12. </el-form-item>
  13. <el-button @click="searchForm">查询</el-button>
  14. <el-button @click="add">新增</el-button>
  15. </el-form>
  16. <el-table :data="tableData" stripe style="width: 100%;">
  17. <el-table-column type="selection" width="40" />
  18. <el-table-column width="55" label="ID">
  19. <span slot-scope="scope">{{ scope.row.id }}</span>
  20. </el-table-column>
  21. <el-table-column width="200" label="批次编码">
  22. <span slot-scope="scope">{{ scope.row.code }}</span>
  23. </el-table-column>
  24. <el-table-column width="200" label="批次名称">
  25. <span slot-scope="scope">{{ scope.row.name }}</span>
  26. </el-table-column>
  27. <el-table-column label="模式">
  28. <span slot-scope="scope">{{ scope.row.mode }}</span>
  29. </el-table-column>
  30. <el-table-column width="120" label="状态">
  31. <span slot-scope="scope">{{
  32. scope.row.enable | zeroOneEnableDisableFilter
  33. }}</span>
  34. </el-table-column>
  35. <el-table-column width="100" label="开始时间">
  36. <span slot-scope="scope">{{
  37. scope.row.startTime | datetimeFilter
  38. }}</span>
  39. </el-table-column>
  40. <el-table-column width="100" label="结束时间">
  41. <span slot-scope="scope">{{ scope.row.endTime | datetimeFilter }}</span>
  42. </el-table-column>
  43. <el-table-column width="100" label="算分进度">
  44. <span slot-scope="scope">{{
  45. scope.row.scoreStatus | scoreStatusFilter
  46. }}</span>
  47. </el-table-column>
  48. <el-table-column width="120" label="更新人">
  49. <span slot-scope="scope">{{ scope.row.updateName }}</span>
  50. </el-table-column>
  51. <el-table-column width="100" label="更新时间">
  52. <span slot-scope="scope">{{
  53. scope.row.updateTime | datetimeFilter
  54. }}</span>
  55. </el-table-column>
  56. <el-table-column :context="_self" label="操作" width="210">
  57. <div slot-scope="scope">
  58. <el-button
  59. size="mini"
  60. type="primary"
  61. plain
  62. @click="toggleEnableExam(scope.row)"
  63. >
  64. {{ scope.row.enable ? "禁用" : "启用" }}
  65. </el-button>
  66. <el-button size="mini" type="primary" plain @click="edit(scope.row)">
  67. 编辑
  68. </el-button>
  69. <el-button size="mini" type="primary" plain>
  70. 重新算分
  71. </el-button>
  72. </div>
  73. </el-table-column>
  74. </el-table>
  75. <div class="page float-right">
  76. <el-pagination
  77. @current-change="handleCurrentChange"
  78. :current-page="currentPage"
  79. :page-size="pageSize"
  80. :page-sizes="[10, 20, 50, 100, 200, 300]"
  81. @size-change="handleSizeChange"
  82. layout="total, sizes, prev, pager, next, jumper"
  83. :total="total"
  84. />
  85. </div>
  86. </div>
  87. </template>
  88. <script>
  89. import StateSelect from "@/components/StateSelect";
  90. import ExamTypeSelect from "@/components/ExamTypeSelect";
  91. import { searchExams, toggleEnableExam } from "@/api/exam";
  92. export default {
  93. name: "ExamManagement",
  94. components: {
  95. StateSelect,
  96. ExamTypeSelect,
  97. },
  98. data() {
  99. return {
  100. form: {
  101. orgId: "",
  102. roleCode: "",
  103. loginName: "",
  104. name: "",
  105. enableState: null,
  106. },
  107. tableData: [],
  108. currentPage: 1,
  109. pageSize: 10,
  110. total: 10,
  111. };
  112. },
  113. async created() {},
  114. methods: {
  115. async searchForm() {
  116. const res = await searchExams({
  117. enable: this.form.enableState,
  118. name: this.form.name,
  119. pageNumber: this.currentPage,
  120. pageSize: this.pageSize,
  121. });
  122. this.tableData = res.data.data.records.records;
  123. this.total = res.data.data.records.total;
  124. },
  125. handleCurrentChange(val) {
  126. this.currentPage = val;
  127. this.searchForm();
  128. },
  129. handleSizeChange(val) {
  130. this.pageSize = val;
  131. this.currentPage = 1;
  132. this.searchForm();
  133. },
  134. add() {
  135. this.$router.push("/exam/edit/");
  136. },
  137. edit(exam) {
  138. this.$router.push("/exam/edit/" + exam.id);
  139. },
  140. async toggleEnableExam(user) {
  141. await toggleEnableExam({
  142. id: user.id,
  143. enable: user.enable === 0 ? 1 : 0,
  144. });
  145. this.searchForm();
  146. },
  147. },
  148. };
  149. </script>
  150. <style></style>