SelectSimpleCourse.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <div class="select-simple-course">
  3. <el-form ref="FilterForm" label-position="left" inline label-width="0px">
  4. <el-form-item>
  5. <org-select
  6. v-model="filter.belongOrgId"
  7. placeholder="开课学院"
  8. :filter-param="{
  9. withoutSecondOrg: true,
  10. }"
  11. ></org-select>
  12. </el-form-item>
  13. <el-form-item>
  14. <el-input
  15. v-model.trim="filter.courseName"
  16. placeholder="请输入课程名称"
  17. clearable
  18. ></el-input>
  19. </el-form-item>
  20. <el-form-item>
  21. <el-button type="primary" :disabled="!canSearch" @click="toPage(1)"
  22. >查询</el-button
  23. >
  24. </el-form-item>
  25. </el-form>
  26. <div class="box-justify mb-2">
  27. <p>
  28. 全部共<span class="mlr-1">{{ dataList.length }}</span
  29. >门
  30. </p>
  31. <p>
  32. 已选<span class="mlr-1">{{ multipleSelection.length }}</span
  33. >门
  34. </p>
  35. </div>
  36. <el-table
  37. ref="TableList"
  38. :data="dataList"
  39. border
  40. max-height="440px"
  41. @selection-change="handleSelectionChange"
  42. >
  43. <el-table-column
  44. type="selection"
  45. fixed="left"
  46. width="55"
  47. align="center"
  48. ></el-table-column>
  49. <el-table-column
  50. type="index"
  51. label="序号"
  52. width="70"
  53. :index="indexMethod"
  54. ></el-table-column>
  55. <el-table-column
  56. prop="courseName"
  57. label="课程名称"
  58. min-width="120"
  59. ></el-table-column>
  60. <el-table-column
  61. prop="courseCode"
  62. label="课程编码"
  63. min-width="120"
  64. ></el-table-column>
  65. <el-table-column
  66. prop="teachCollegeName"
  67. label="开课学院"
  68. min-width="120"
  69. ></el-table-column>
  70. </el-table>
  71. </div>
  72. </template>
  73. <script>
  74. import { courseQueryByOrg } from "../../api";
  75. export default {
  76. name: "select-simple-course",
  77. props: {
  78. value: {
  79. type: Array,
  80. default() {
  81. return [];
  82. },
  83. },
  84. examId: {
  85. type: String,
  86. default: "",
  87. },
  88. },
  89. data() {
  90. return {
  91. filter: {
  92. belongOrgId: "",
  93. courseName: "",
  94. examId: "",
  95. },
  96. dataList: [],
  97. multipleSelection: [],
  98. };
  99. },
  100. computed: {
  101. canSearch() {
  102. return this.filter.belongOrgId;
  103. },
  104. },
  105. mounted() {
  106. this.filter.examId = this.examId;
  107. },
  108. methods: {
  109. async getList() {
  110. const data = await courseQueryByOrg(this.filter);
  111. this.dataList = data || [];
  112. },
  113. toPage(page) {
  114. if (!this.canSearch) return;
  115. this.current = page;
  116. this.getList();
  117. this.multipleSelection = [];
  118. this.emitChange();
  119. },
  120. handleSelectionChange(val) {
  121. this.multipleSelection = val.map((item) => item.basicCourseId);
  122. this.emitChange();
  123. },
  124. emitChange() {
  125. this.$emit("input", this.multipleSelection);
  126. this.$emit("change", this.multipleSelection);
  127. },
  128. clearSelection() {
  129. this.$refs.TableList.clearSelection();
  130. },
  131. },
  132. };
  133. </script>