TeacherSimpleManage.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <template>
  2. <div class="teacher-simple-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. <el-form-item>
  6. <el-input
  7. v-model.trim="filter.userInfo"
  8. placeholder="请输入姓名或工号"
  9. clearable
  10. ></el-input>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button
  14. type="primary"
  15. :disabled="!filter.basicCourseId"
  16. @click="toPage(1)"
  17. >查询</el-button
  18. >
  19. </el-form-item>
  20. </el-form>
  21. <div class="part-box-action">
  22. <el-button type="danger" @click="toBatchDelete">批量删除</el-button>
  23. <el-button type="primary" @click="toAdd">新增教师</el-button>
  24. </div>
  25. </div>
  26. <div class="part-box part-box-pad">
  27. <el-table
  28. ref="TableList"
  29. :data="dataList"
  30. @selection-change="handleSelectionChange"
  31. >
  32. <el-table-column
  33. type="selection"
  34. width="55"
  35. align="center"
  36. ></el-table-column>
  37. <el-table-column
  38. type="index"
  39. label="序号"
  40. width="70"
  41. :index="indexMethod"
  42. ></el-table-column>
  43. <el-table-column prop="teachClazzName" label="姓名"></el-table-column>
  44. <el-table-column
  45. prop="teachStudentCount"
  46. label="工号"
  47. ></el-table-column>
  48. <el-table-column
  49. prop="teachStudentCount"
  50. label="角色"
  51. ></el-table-column>
  52. <el-table-column
  53. prop="teachStudentCount"
  54. label="所在机构"
  55. ></el-table-column>
  56. <el-table-column class-name="action-column" label="操作" width="170px">
  57. <template slot-scope="scope">
  58. <el-button
  59. class="btn-danger"
  60. type="text"
  61. @click="toDelete(scope.row)"
  62. >删除</el-button
  63. >
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. <div class="part-page">
  68. <el-pagination
  69. background
  70. layout="total, sizes, prev, pager, next, jumper"
  71. :pager-count="5"
  72. :current-page="current"
  73. :total="total"
  74. :page-size="size"
  75. @current-change="toPage"
  76. @size-change="pageSizeChange"
  77. >
  78. </el-pagination>
  79. </div>
  80. </div>
  81. <!-- ModifyTeacherSimple -->
  82. <modify-teacher-simple
  83. ref="ModifyTeacherSimple"
  84. :course="course"
  85. @modified="getList"
  86. ></modify-teacher-simple>
  87. </div>
  88. </template>
  89. <script>
  90. import { teacherSimpleListQuery, deleteTeacherSimple } from "../../api";
  91. import ModifyTeacherSimple from "./ModifyTeacherSimple";
  92. export default {
  93. name: "teacher-simple-manage",
  94. components: { ModifyTeacherSimple },
  95. props: {
  96. course: {
  97. type: Object,
  98. default() {
  99. return {};
  100. }
  101. }
  102. },
  103. data() {
  104. return {
  105. filter: {
  106. basicCourseId: "",
  107. userInfo: ""
  108. },
  109. current: 1,
  110. size: this.GLOBAL.pageSize,
  111. total: 0,
  112. multipleSelection: [],
  113. dataList: [],
  114. curRow: {}
  115. };
  116. },
  117. mounted() {
  118. this.initData();
  119. },
  120. methods: {
  121. async initData() {
  122. this.filter.basicCourseId = this.course.id;
  123. await this.getList();
  124. },
  125. async getList() {
  126. const datas = {
  127. ...this.filter,
  128. pageNumber: this.current,
  129. pageSize: this.size
  130. };
  131. const data = await teacherSimpleListQuery(datas);
  132. this.dataList = data.records;
  133. this.total = data.total;
  134. },
  135. toPage(page) {
  136. this.current = page;
  137. this.getList();
  138. },
  139. handleSelectionChange(val) {
  140. this.multipleSelection = val.map(item => item.id);
  141. },
  142. toAdd() {
  143. this.$refs.ModifyTeacherSimple.open();
  144. },
  145. async toDelete(row) {
  146. const confirm = await this.$confirm(
  147. `确定要删除教师【${row.teachClazzName}】吗?`,
  148. "提示",
  149. {
  150. type: "warning"
  151. }
  152. ).catch(() => {});
  153. if (confirm !== "confirm") return;
  154. await deleteTeacherSimple([row.id]);
  155. this.$message.success("删除成功!");
  156. this.deletePageLastItem();
  157. },
  158. async toBatchDelete() {
  159. if (!this.multipleSelection.length) {
  160. this.$message.error("请选择要删除的数据");
  161. return;
  162. }
  163. const confirm = await this.$confirm(
  164. `确定要删除选中的这些数据吗?`,
  165. "提示",
  166. {
  167. type: "warning"
  168. }
  169. ).catch(() => {});
  170. if (confirm !== "confirm") return;
  171. await deleteTeacherSimple(this.multipleSelection);
  172. this.$message.success("删除成功!");
  173. this.deletePageLastItem(this.multipleSelection.length);
  174. this.multipleSelection = [];
  175. }
  176. }
  177. };
  178. </script>