SelectSimpleStudent.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <div class="select-simple-student">
  3. <el-form ref="FilterForm" label-position="left" inline label-width="0px">
  4. <el-form-item>
  5. <college-select
  6. v-model="filter.collegeId"
  7. class="width-200"
  8. placeholder="学院"
  9. @change="collegeChange"
  10. ></college-select>
  11. </el-form-item>
  12. <el-form-item>
  13. <major-select
  14. v-model="filter.majorId"
  15. class="width-200"
  16. :college-id="filter.collegeId"
  17. cascader
  18. placeholder="专业"
  19. @change="majorChange"
  20. ></major-select>
  21. </el-form-item>
  22. <el-form-item>
  23. <class-select
  24. v-model="filter.clazzId"
  25. class="width-200"
  26. :major-id="filter.majorId"
  27. cascader
  28. placeholder="班级"
  29. @change="classChange"
  30. ></class-select>
  31. </el-form-item>
  32. <el-form-item>
  33. <el-button type="primary" :disabled="!canSearch" @click="toPage(1)"
  34. >查询</el-button
  35. >
  36. </el-form-item>
  37. </el-form>
  38. <div class="box-justify mb-2">
  39. <p>
  40. 全部共<span class="mlr-1">{{ dataList.length }}</span
  41. >人
  42. </p>
  43. <p>
  44. 已选<span class="mlr-1">{{ multipleSelection.length }}</span
  45. >人
  46. </p>
  47. </div>
  48. <el-table
  49. ref="TableList"
  50. :data="dataList"
  51. border
  52. max-height="440px"
  53. @selection-change="handleSelectionChange"
  54. >
  55. <el-table-column
  56. type="selection"
  57. width="55"
  58. align="center"
  59. ></el-table-column>
  60. <el-table-column
  61. type="index"
  62. label="序号"
  63. width="70"
  64. :index="indexMethod"
  65. ></el-table-column>
  66. <el-table-column prop="studentName" label="姓名"></el-table-column>
  67. <el-table-column prop="studentCode" label="学号"></el-table-column>
  68. <el-table-column prop="collegeName" label="机构"></el-table-column>
  69. <el-table-column prop="majorName" label="专业"></el-table-column>
  70. <el-table-column prop="clazzName" label="班级"></el-table-column>
  71. </el-table>
  72. </div>
  73. </template>
  74. <script>
  75. import { unitQueryByType } from "../../api";
  76. export default {
  77. name: "select-simple-student",
  78. props: {
  79. value: {
  80. type: Array,
  81. default() {
  82. return [];
  83. }
  84. }
  85. },
  86. data() {
  87. return {
  88. filter: {
  89. collegeId: "",
  90. majorId: "",
  91. clazzId: ""
  92. },
  93. filterNames: {
  94. collegeName: "",
  95. majorName: "",
  96. clazzName: ""
  97. },
  98. dataList: [],
  99. multipleSelection: []
  100. };
  101. },
  102. computed: {
  103. canSearch() {
  104. return (
  105. this.filter.collegeId && this.filter.majorId && this.filter.clazzId
  106. );
  107. }
  108. },
  109. methods: {
  110. async getList() {
  111. const datas = {
  112. ...this.filter
  113. };
  114. const data = await unitQueryByType(datas, "STUDENT");
  115. this.dataList = data || [];
  116. this.dataList = this.dataList.map(item => {
  117. return {
  118. id: item.id,
  119. studentName: item.name,
  120. studentCode: item.code,
  121. ...this.filterNames
  122. };
  123. });
  124. },
  125. toPage(page) {
  126. if (!this.canSearch) return;
  127. this.current = page;
  128. this.getList();
  129. this.multipleSelection = [];
  130. this.emitChange();
  131. },
  132. handleSelectionChange(val) {
  133. this.multipleSelection = val.map(item => item.id);
  134. this.emitChange();
  135. },
  136. collegeChange(val) {
  137. this.filterNames.collegeName = val.name;
  138. },
  139. majorChange(val) {
  140. this.filterNames.majorName = val.name;
  141. },
  142. classChange(val) {
  143. this.filterNames.clazzName = val.name;
  144. },
  145. emitChange() {
  146. this.$emit("input", this.multipleSelection);
  147. this.$emit("change", this.multipleSelection);
  148. },
  149. clearSelection() {
  150. this.$refs.TableList.clearSelection();
  151. }
  152. }
  153. };
  154. </script>