CourseManagement.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <div class="course-management">
  3. <div class="part-box-head">
  4. <div class="part-box-head-left"><h1>调卷规则</h1></div>
  5. </div>
  6. <div class="part-filter">
  7. <div class="part-filter-form">
  8. <el-form ref="form" :model="form" :rules="rules" inline>
  9. <el-form-item label="批次名称" prop="examId">
  10. <ExamSelect v-model="form.examId" />
  11. </el-form-item>
  12. <el-form-item label="科目名称">
  13. <CourseSelect :examId="form.examId" v-model="form.code" />
  14. </el-form-item>
  15. <el-form-item label="状态">
  16. <StateSelect
  17. :options="[
  18. { code: 0, name: '未绑卷' },
  19. { code: 1, name: '已绑卷' },
  20. ]"
  21. v-model="form.hasPaper"
  22. />
  23. </el-form-item>
  24. <el-form-item>
  25. <el-button type="primary" @click="handleCurrentChange(0)"
  26. >查询</el-button
  27. >
  28. </el-form-item>
  29. </el-form>
  30. <div class="part-filter-form-action">
  31. <el-button type="primary" icon="icon icon-upload" @click="importPaper"
  32. >导入试卷</el-button
  33. >
  34. </div>
  35. </div>
  36. </div>
  37. <el-table :data="tableData">
  38. <el-table-column type="selection" width="42" />
  39. <el-table-column width="100" label="ID">
  40. <span slot-scope="scope">{{ scope.row.id }}</span>
  41. </el-table-column>
  42. <el-table-column width="200" label="科目代码">
  43. <span slot-scope="scope">{{ scope.row.courseCode }}</span>
  44. </el-table-column>
  45. <el-table-column label="科目名称">
  46. <span slot-scope="scope">{{ scope.row.courseName }}</span>
  47. </el-table-column>
  48. <el-table-column width="120" label="状态">
  49. <span slot-scope="scope">{{
  50. scope.row.hasPaper === 1 ? "已绑卷" : "未绑卷"
  51. }}</span>
  52. </el-table-column>
  53. <el-table-column width="100" label="音频题">
  54. <span slot-scope="scope">{{
  55. scope.row.hasAudio === 1 ? "是" : "否"
  56. }}</span>
  57. </el-table-column>
  58. <el-table-column width="100" label="提交答案">
  59. <span slot-scope="scope">{{
  60. scope.row.hasAnswer | zeroOneEnableDisableFilter
  61. }}</span>
  62. </el-table-column>
  63. <el-table-column width="120" label="更新人">
  64. <span slot-scope="scope">{{ scope.row.updateName }}</span>
  65. </el-table-column>
  66. <el-table-column sortable width="170" label="更新时间">
  67. <span slot-scope="scope">{{
  68. scope.row.updateTime | datetimeFilter
  69. }}</span>
  70. </el-table-column>
  71. <el-table-column :context="_self" label="操作" width="210">
  72. <div slot-scope="scope">
  73. <el-button size="mini" type="primary" plain @click="edit(scope.row)">
  74. 编辑
  75. </el-button>
  76. </div>
  77. </el-table-column>
  78. </el-table>
  79. <div class="part-page">
  80. <el-pagination
  81. @current-change="handleCurrentChange"
  82. :current-page="currentPage"
  83. :page-size="pageSize"
  84. :page-sizes="[10, 20, 50, 100, 200, 300]"
  85. @size-change="handleSizeChange"
  86. layout="total, sizes, prev, pager, next, jumper"
  87. :total="total"
  88. />
  89. </div>
  90. <PaperImportDialog
  91. ref="theDialog"
  92. :examId="form.examId"
  93. @reload="searchForm"
  94. />
  95. <CoursePaperDialog
  96. ref="theDialog2"
  97. :course="selectedCourse"
  98. @reload="searchForm"
  99. />
  100. </div>
  101. </template>
  102. <script>
  103. import { searchCourses } from "@/api/examwork-course";
  104. import PaperImportDialog from "./PaperImportDialog";
  105. import CoursePaperDialog from "./CoursePaperDialog";
  106. export default {
  107. name: "CourseManagement",
  108. components: {
  109. PaperImportDialog,
  110. CoursePaperDialog,
  111. },
  112. computed: {},
  113. data() {
  114. return {
  115. form: {
  116. examId: "",
  117. code: "",
  118. hasPaper: null,
  119. },
  120. rules: {
  121. examId: [{ required: true, message: "批次必选" }],
  122. },
  123. tableData: [],
  124. currentPage: 1,
  125. pageSize: 10,
  126. total: 10,
  127. selectedCourse: {},
  128. };
  129. },
  130. async created() {},
  131. methods: {
  132. async searchForm() {
  133. try {
  134. const valid = await this.$refs.form.validate();
  135. if (!valid) return;
  136. } catch (error) {
  137. console.log(error);
  138. return;
  139. }
  140. const res = await searchCourses({
  141. examId: this.form.examId,
  142. code: this.form.code,
  143. hasPaper: this.form.hasPaper,
  144. pageNumber: this.currentPage,
  145. pageSize: this.pageSize,
  146. });
  147. this.tableData = res.data.data.records;
  148. this.total = res.data.data.total;
  149. },
  150. handleCurrentChange(val) {
  151. this.currentPage = val;
  152. this.searchForm();
  153. },
  154. handleSizeChange(val) {
  155. this.pageSize = val;
  156. this.currentPage = 1;
  157. this.searchForm();
  158. },
  159. async importPaper() {
  160. try {
  161. const valid = await this.$refs.form.validate();
  162. if (!valid) return;
  163. } catch (error) {
  164. console.log(error);
  165. return;
  166. }
  167. this.$refs.theDialog.openDialog();
  168. },
  169. edit(course) {
  170. this.selectedCourse = course;
  171. this.$refs.theDialog2.openDialog();
  172. },
  173. },
  174. };
  175. </script>
  176. <style></style>