TargetScoreManage.vue 4.6 KB

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