ScoreManage.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <template>
  2. <div class="score-archive">
  3. <div class="part-box part-box-filter">
  4. <el-form ref="FilterForm" label-position="left" inline>
  5. <template v-if="checkPrivilege('condition', 'condition')">
  6. <el-form-item label="学期:">
  7. <semester-select
  8. v-model="filter.semesterId"
  9. default-select
  10. :clearable="false"
  11. ></semester-select>
  12. </el-form-item>
  13. <el-form-item label="考试:">
  14. <exam-select
  15. v-model="filter.examId"
  16. :semester-id="filter.semesterId"
  17. default-select
  18. :clearable="false"
  19. @default-selected="toPage(1)"
  20. ></exam-select>
  21. </el-form-item>
  22. <el-form-item label="课程:">
  23. <course-select
  24. v-model="filter.courseId"
  25. placeholder="课程"
  26. filterable
  27. clearable
  28. :semester-id="filter.semesterId"
  29. :exam-id="filter.examId"
  30. ></course-select>
  31. </el-form-item>
  32. </template>
  33. <el-form-item label-width="0px">
  34. <el-button
  35. v-if="checkPrivilege('button', 'select')"
  36. type="primary"
  37. @click="toPage(1)"
  38. >查询</el-button
  39. >
  40. </el-form-item>
  41. </el-form>
  42. </div>
  43. <div class="part-box part-box-pad">
  44. <el-table ref="TableList" :data="dataList">
  45. <el-table-column
  46. type="index"
  47. label="序号"
  48. width="70"
  49. :index="indexMethod"
  50. ></el-table-column>
  51. <el-table-column prop="name" label="课程名称(代码)" min-width="260">
  52. <span slot-scope="scope"
  53. >{{ scope.row.courseName }}({{ scope.row.courseCode }})</span
  54. >
  55. </el-table-column>
  56. <el-table-column
  57. prop="paperNumber"
  58. label="试卷编号"
  59. width="200"
  60. ></el-table-column>
  61. <el-table-column
  62. prop="studentCount"
  63. label="总考生"
  64. width="100"
  65. ></el-table-column>
  66. <el-table-column
  67. prop="classCount"
  68. label="参考班级"
  69. width="100"
  70. ></el-table-column>
  71. <el-table-column
  72. prop="absentCount"
  73. label="缺考人数"
  74. width="100"
  75. ></el-table-column>
  76. <el-table-column
  77. prop="avgScore"
  78. label="平均分"
  79. width="100"
  80. ></el-table-column>
  81. <el-table-column
  82. prop="maxScore"
  83. label="最高分"
  84. width="100"
  85. ></el-table-column>
  86. <el-table-column
  87. prop="minScore"
  88. label="最低分"
  89. width="100"
  90. ></el-table-column>
  91. <el-table-column
  92. prop="passCount"
  93. label="及格人数"
  94. width="100"
  95. ></el-table-column>
  96. <el-table-column prop="passRate" label="及格率" width="100">
  97. <template slot-scope="scope">{{ scope.row.passRate || 0 }}%</template>
  98. </el-table-column>
  99. <el-table-column
  100. prop="excellentCount"
  101. label="优秀人数"
  102. width="100"
  103. ></el-table-column>
  104. <el-table-column prop="excellentRate" label="优秀率" width="100">
  105. <template slot-scope="scope"
  106. >{{ scope.row.excellentRate || 0 }}%</template
  107. >
  108. </el-table-column>
  109. <el-table-column
  110. class-name="action-column"
  111. label="操作"
  112. width="100px"
  113. fixed="right"
  114. >
  115. <template slot-scope="scope">
  116. <el-button
  117. v-if="checkPrivilege('link', 'ClassScoreDetail')"
  118. class="btn-primary"
  119. type="text"
  120. @click="toClass(scope.row)"
  121. >查看详情</el-button
  122. >
  123. </template>
  124. </el-table-column>
  125. </el-table>
  126. <div class="part-page">
  127. <el-pagination
  128. background
  129. layout="total, sizes, prev, pager, next, jumper"
  130. :pager-count="5"
  131. :current-page="current"
  132. :total="total"
  133. :page-size="size"
  134. @current-change="toPage"
  135. @size-change="pageSizeChange"
  136. >
  137. </el-pagination>
  138. </div>
  139. <div class="tips-markedness">
  140. <p>
  141. 如果成绩查询菜单下没有数据,请先在评卷管理模块—评卷管理菜单下,结束评卷
  142. <el-button
  143. type="text"
  144. class="btn-primary btn-link ml-2"
  145. @click="toMarkManage"
  146. >点击跳转评卷管理</el-button
  147. >
  148. </p>
  149. </div>
  150. </div>
  151. <!-- ScoreClassDetail -->
  152. <score-class-detail
  153. ref="ScoreClassDetail"
  154. :instance="curRow"
  155. ></score-class-detail>
  156. </div>
  157. </template>
  158. <script>
  159. import { scoreListPage } from "../api";
  160. import ScoreClassDetail from "../components/ScoreClassDetail.vue";
  161. export default {
  162. name: "score-manage",
  163. components: { ScoreClassDetail },
  164. data() {
  165. return {
  166. filter: {
  167. semesterId: "",
  168. examId: "",
  169. courseId: "",
  170. },
  171. current: 1,
  172. size: this.GLOBAL.pageSize,
  173. total: 0,
  174. dataList: [],
  175. curRow: {},
  176. };
  177. },
  178. methods: {
  179. async getList() {
  180. if (!this.checkPrivilege("list", "list")) return;
  181. const datas = {
  182. ...this.filter,
  183. pageNumber: this.current,
  184. pageSize: this.size,
  185. };
  186. const data = await scoreListPage(datas);
  187. this.dataList = data.records;
  188. this.total = data.total;
  189. },
  190. toPage(page) {
  191. this.current = page;
  192. this.getList();
  193. },
  194. toClass(row) {
  195. this.curRow = row;
  196. this.$refs.ScoreClassDetail.open();
  197. },
  198. toMarkManage() {
  199. this.$router.push({ name: "MarkManage" });
  200. },
  201. },
  202. };
  203. </script>