TargetScoreManage.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <div class="target-score-manage">
  3. <div class="part-box part-box-filter part-box-flex">
  4. <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
  5. <template v-if="checkPrivilege('condition', 'condition')">
  6. <el-form-item label="培养方案:">
  7. <training-plan-select
  8. v-model="filter.cultureProgramId"
  9. placeholder="培养方案"
  10. @change="trainingPlanChange"
  11. ></training-plan-select>
  12. </el-form-item>
  13. <el-form-item label="学期:">
  14. <semester-select
  15. v-model="filter.semesterId"
  16. placeholder="学期"
  17. style="width: 220px"
  18. ></semester-select>
  19. </el-form-item>
  20. <el-form-item label="课程:">
  21. <training-plan-course-select
  22. v-model="filter.courseId"
  23. placeholder="课程"
  24. :professional-id="filter.professionalId"
  25. :culture-program-id="filter.cultureProgramId"
  26. ></training-plan-course-select>
  27. </el-form-item>
  28. </template>
  29. <el-form-item label-width="0px">
  30. <el-button
  31. v-if="checkPrivilege('button', 'select')"
  32. type="primary"
  33. @click="search"
  34. >查询</el-button
  35. >
  36. </el-form-item>
  37. </el-form>
  38. </div>
  39. <div class="part-box part-box-pad">
  40. <el-table ref="TableList" :data="dataList">
  41. <el-table-column
  42. type="index"
  43. label="序号"
  44. width="70"
  45. :index="indexMethod"
  46. ></el-table-column>
  47. <el-table-column
  48. prop="cultureProgramName"
  49. label="培养方案"
  50. min-width="160"
  51. >
  52. </el-table-column>
  53. <el-table-column prop="semesterName" label="学期" min-width="160">
  54. </el-table-column>
  55. <el-table-column label="课程(代码)" min-width="300">
  56. <template slot-scope="scope">
  57. {{ scope.row.courseName | defaultFieldFilter }}({{
  58. scope.row.courseCode | defaultFieldFilter
  59. }})
  60. </template>
  61. </el-table-column>
  62. <el-table-column prop="userName" label="创建人" min-width="200">
  63. <span slot-scope="scope">
  64. {{ scope.row.userName }}({{ scope.row.userLoginName }})
  65. </span>
  66. </el-table-column>
  67. <el-table-column
  68. class-name="action-column"
  69. label="操作"
  70. width="100"
  71. fixed="right"
  72. >
  73. <template slot-scope="scope">
  74. <el-button
  75. v-if="checkPrivilege('link', 'Score')"
  76. class="btn-primary"
  77. type="text"
  78. @click="toDetail(scope.row)"
  79. >管理成绩</el-button
  80. >
  81. </template>
  82. </el-table-column>
  83. </el-table>
  84. <div class="part-page">
  85. <el-pagination
  86. background
  87. layout="total, sizes, prev, pager, next, jumper"
  88. :pager-count="5"
  89. :current-page="current"
  90. :total="total"
  91. :page-size="size"
  92. @current-change="toPage"
  93. @size-change="pageSizeChange"
  94. >
  95. </el-pagination>
  96. </div>
  97. </div>
  98. <!-- DetailTargetScore -->
  99. <detail-target-score ref="DetailTargetScore"></detail-target-score>
  100. </div>
  101. </template>
  102. <script>
  103. import { mapMutations } from "vuex";
  104. import { targetScoreListPage } from "../api";
  105. import DetailTargetScore from "../components/target-score/DetailTargetScore.vue";
  106. export default {
  107. name: "target-score-manage",
  108. components: { DetailTargetScore },
  109. data() {
  110. return {
  111. filter: {
  112. semesterId: "",
  113. professionalId: "",
  114. cultureProgramId: "",
  115. courseId: "",
  116. },
  117. current: 1,
  118. size: this.GLOBAL.pageSize,
  119. total: 0,
  120. dataList: [],
  121. curRow: {},
  122. defaultKeys: [],
  123. };
  124. },
  125. mounted() {
  126. this.search();
  127. },
  128. methods: {
  129. ...mapMutations("target", ["setCourse"]),
  130. async getList() {
  131. if (!this.checkPrivilege("list", "list")) return;
  132. const datas = {
  133. ...this.filter,
  134. pageNumber: this.current,
  135. pageSize: this.size,
  136. };
  137. const data = await targetScoreListPage(datas);
  138. this.dataList = data.records;
  139. this.total = data.total;
  140. },
  141. toPage(page) {
  142. this.current = page;
  143. this.getList();
  144. },
  145. search() {
  146. this.toPage(1);
  147. },
  148. trainingPlanChange(val) {
  149. this.filter.professionalId = val?.professionalId;
  150. },
  151. defaultFilterChange(key) {
  152. if (!this.defaultKeys.includes(key)) {
  153. this.defaultKeys.push(key);
  154. }
  155. if (this.defaultKeys.length === 2) this.search();
  156. },
  157. toDetail(row) {
  158. this.setCourse(row);
  159. this.$refs.DetailTargetScore.open();
  160. },
  161. },
  162. };
  163. </script>