UserManage.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <template>
  2. <div class="user-manage">
  3. <div class="part-box part-box-filter">
  4. <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
  5. <el-form-item label="用户名:" label-width="75px">
  6. <el-input
  7. style="width: 142px;"
  8. v-model.trim="filter.loginName"
  9. placeholder="请输入内容"
  10. clearable
  11. ></el-input>
  12. </el-form-item>
  13. <el-form-item label="角色:" label-width="55px">
  14. <el-select
  15. v-model="filter.roleCode"
  16. style="width: 142px;"
  17. placeholder="请选择"
  18. clearable
  19. >
  20. <el-option
  21. v-for="item in roles"
  22. :key="item.roleCode"
  23. :value="item.roleCode"
  24. :label="item.roleName"
  25. ></el-option>
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item label="状态:" label-width="55px">
  29. <el-select
  30. v-model="filter.enable"
  31. style="width: 142px;"
  32. placeholder="请选择"
  33. clearable
  34. >
  35. <el-option
  36. v-for="(val, key) in ABLE_TYPE"
  37. :key="key"
  38. :value="key"
  39. :label="val"
  40. ></el-option>
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label-width="0px">
  44. <el-button type="primary" icon="icon icon-search" @click="toPage(1)"
  45. >查询</el-button
  46. >
  47. <upload-button
  48. :upload-url="uploadUrl"
  49. :format="['xls', 'xlsx']"
  50. :upload-data="uploadData"
  51. @upload-error="uplaodError"
  52. @upload-success="uploadSuccess"
  53. >
  54. <el-button type="warning" icon="icon icon-share">导入</el-button>
  55. </upload-button>
  56. </el-form-item>
  57. </el-form>
  58. </div>
  59. <div class="part-box">
  60. <el-table ref="TableList" :data="users" border stripe>
  61. <el-table-column
  62. type="index"
  63. label="序号"
  64. width="70"
  65. align="center"
  66. :index="indexMethod"
  67. ></el-table-column>
  68. <el-table-column prop="loginName" label="用户名"></el-table-column>
  69. <el-table-column prop="name" label="姓名"></el-table-column>
  70. <el-table-column prop="roleName" label="角色"></el-table-column>
  71. <el-table-column prop="courseName" label="科目"></el-table-column>
  72. <el-table-column prop="enable" label="状态">
  73. <template slot-scope="scope">
  74. {{ ABLE_TYPE[scope.row.enable + ""] }}
  75. </template>
  76. </el-table-column>
  77. <el-table-column label="操作" align="center" width="120px">
  78. <template slot-scope="scope">
  79. <el-button
  80. class="btn-table-icon"
  81. type="text"
  82. :icon="
  83. scope.row.enable
  84. ? 'icon icon-circle-stop'
  85. : 'icon icon-circle-caret-right'
  86. "
  87. @click="toEnable(scope.row)"
  88. :title="scope.row.enable ? '禁用' : '启用'"
  89. ></el-button>
  90. <el-button
  91. class="btn-table-icon"
  92. type="text"
  93. icon="icon icon-edit"
  94. @click="toEdit(scope.row)"
  95. title="编辑"
  96. ></el-button>
  97. <el-button
  98. class="btn-table-icon"
  99. type="text"
  100. icon="icon icon-circle-lock"
  101. @click="toResetPwd(scope.row)"
  102. title="重置密码"
  103. ></el-button>
  104. </template>
  105. </el-table-column>
  106. </el-table>
  107. <div class="part-page">
  108. <el-pagination
  109. background
  110. layout="prev, pager, next"
  111. :current-page="current"
  112. :total="total"
  113. :page-size="size"
  114. @current-change="toPage"
  115. >
  116. </el-pagination>
  117. </div>
  118. </div>
  119. </div>
  120. </template>
  121. <script>
  122. import { ABLE_TYPE } from "@/constants/enumerate";
  123. import { userListPage, ableUser, updatePwd, roleList } from "../api";
  124. import UploadButton from "@/components/UploadButton";
  125. export default {
  126. name: "user-manage",
  127. components: { UploadButton },
  128. data() {
  129. return {
  130. filter: {
  131. loginName: "",
  132. roleCode: "",
  133. enable: ""
  134. },
  135. current: 1,
  136. size: this.GLOBAL.pageSize,
  137. total: 0,
  138. visible: false,
  139. ABLE_TYPE,
  140. roles: [],
  141. users: [],
  142. // import
  143. uploadUrl: this.GLOBAL.domain + "/api/print/basic/user/add",
  144. uploadData: {
  145. schoolId: this.$ls.get("schoolId"),
  146. userId: this.$ls.get("user", { id: "" }).id
  147. }
  148. };
  149. },
  150. created() {
  151. this.getRoleList();
  152. this.getList();
  153. },
  154. methods: {
  155. indexMethod(index) {
  156. return (this.current - 1) * this.size + index + 1;
  157. },
  158. async getRoleList() {
  159. const data = await roleList();
  160. this.roles = data.records;
  161. },
  162. async getList() {
  163. const datas = {
  164. ...this.filter,
  165. pageNumber: this.current,
  166. pageSize: this.size
  167. };
  168. const data = await userListPage(datas);
  169. this.users = data.records;
  170. this.total = data.total;
  171. },
  172. toPage(page) {
  173. this.current = page;
  174. this.getList();
  175. },
  176. async toEnable(row) {
  177. const enable = Number(!row.enable);
  178. await ableUser({
  179. id: row.id,
  180. enable
  181. });
  182. row.enable = enable;
  183. },
  184. toEdit(row) {
  185. this.$router.push({
  186. name: "UserEdit",
  187. params: {
  188. userId: row.id
  189. }
  190. });
  191. },
  192. async toResetPwd(row) {
  193. await updatePwd({
  194. id: row.id,
  195. password: "123456"
  196. });
  197. this.$message.success("密码重置成功!");
  198. },
  199. uplaodError(msg) {
  200. this.$message.error(msg);
  201. },
  202. uploadSuccess(res) {
  203. this.$message.success("上传成功!");
  204. this.getList();
  205. }
  206. }
  207. };
  208. </script>