AdminUserManage.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <template>
  2. <div class="user-manage">
  3. <div class="part-box part-box-filter">
  4. <el-form
  5. ref="FilterForm"
  6. class="filter-form"
  7. label-position="left"
  8. label-width="85px"
  9. inline
  10. >
  11. <el-form-item label="姓名:" label-width="75px">
  12. <el-input
  13. style="width: 142px"
  14. v-model.trim="filter.realName"
  15. placeholder="姓名"
  16. clearable
  17. ></el-input>
  18. </el-form-item>
  19. <el-form-item label="启用/禁用:" label-width="90px">
  20. <el-select
  21. v-model="filter.enable"
  22. style="width: 120px"
  23. placeholder="启用/禁用"
  24. clearable
  25. >
  26. <el-option
  27. v-for="(val, key) in ABLE_TYPE"
  28. :key="key"
  29. :value="key * 1"
  30. :label="val"
  31. ></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label-width="0px">
  35. <el-button type="primary" @click="toPage(1)">查询</el-button>
  36. </el-form-item>
  37. <el-form-item>
  38. <el-button
  39. type="primary"
  40. icon="el-icon-circle-plus-outline"
  41. @click="toAdd"
  42. >新增用户</el-button
  43. >
  44. </el-form-item>
  45. </el-form>
  46. </div>
  47. <div class="part-box part-box-pad">
  48. <el-table ref="TableList" :data="users">
  49. <el-table-column
  50. type="index"
  51. label="序号"
  52. width="70"
  53. :index="indexMethod"
  54. ></el-table-column>
  55. <el-table-column prop="loginName" label="用户名"></el-table-column>
  56. <el-table-column prop="realName" label="姓名"></el-table-column>
  57. <el-table-column prop="roles" label="角色">
  58. <template slot-scope="scope">
  59. {{ scope.row.roles | rolesFilter }}
  60. </template>
  61. </el-table-column>
  62. <el-table-column prop="mobileNumber" label="手机号"></el-table-column>
  63. <el-table-column prop="enable" label="状态" width="100">
  64. <template slot-scope="scope">
  65. {{ scope.row.enable | enableFilter }}
  66. </template>
  67. </el-table-column>
  68. <el-table-column class-name="action-column" label="操作" width="200px">
  69. <template slot-scope="scope">
  70. <el-button
  71. class="btn-primary"
  72. type="text"
  73. @click="toEdit(scope.row)"
  74. >编辑</el-button
  75. >
  76. <el-button
  77. :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
  78. type="text"
  79. @click="toEnable(scope.row)"
  80. >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
  81. >
  82. <el-button
  83. class="btn-danger"
  84. type="text"
  85. @click="toResetPwd(scope.row)"
  86. >重置密码</el-button
  87. >
  88. </template>
  89. </el-table-column>
  90. </el-table>
  91. <div class="part-page">
  92. <el-pagination
  93. background
  94. layout="total,prev, pager, next"
  95. :current-page="current"
  96. :total="total"
  97. :page-size="size"
  98. @current-change="toPage"
  99. >
  100. </el-pagination>
  101. </div>
  102. </div>
  103. <!-- ModifyUser -->
  104. <modify-user
  105. ref="ModifyUser"
  106. :instance="curUser"
  107. :roles="roles"
  108. @modified="getList"
  109. ></modify-user>
  110. </div>
  111. </template>
  112. <script>
  113. import ModifyUser from "../components/ModifyUser";
  114. import { ABLE_TYPE } from "@/constants/enumerate";
  115. import { userListPage, ableUser, resetPwd, userRoleListPage } from "../api";
  116. export default {
  117. name: "user-manage",
  118. components: { ModifyUser },
  119. data() {
  120. return {
  121. filter: {
  122. realName: "",
  123. enable: "",
  124. },
  125. current: 1,
  126. size: this.GLOBAL.pageSize,
  127. total: 0,
  128. visible: false,
  129. ABLE_TYPE,
  130. roles: [],
  131. users: [],
  132. curUser: {},
  133. };
  134. },
  135. created() {
  136. this.getRoleList();
  137. this.getList();
  138. },
  139. methods: {
  140. async getRoleList() {
  141. const data = await userRoleListPage();
  142. this.roles = data || [];
  143. this.roles = this.roles
  144. .filter((item) => item.type !== "ADMIN")
  145. .map((item) => {
  146. return {
  147. id: item.id,
  148. name: item.name,
  149. };
  150. });
  151. },
  152. async getList() {
  153. const datas = {
  154. ...this.filter,
  155. pageNumber: this.current,
  156. pageSize: this.size,
  157. };
  158. if (datas.enable !== null && datas.enable !== "")
  159. datas.enable = !!datas.enable;
  160. const data = await userListPage(datas);
  161. this.users = data.records;
  162. this.total = data.total;
  163. },
  164. toPage(page) {
  165. this.current = page;
  166. this.getList();
  167. },
  168. toEnable(row) {
  169. // 自己不可以启用/禁用自己
  170. const userId = this.$ls.get("user", { id: "" }).id;
  171. if (row.id === userId) {
  172. this.$message.error("不可以启用/禁用自己!");
  173. return;
  174. }
  175. const action = row.enable ? "禁用" : "启用";
  176. this.$confirm(`确定要${action}用户【${row.realName}】吗?`, "提示", {
  177. type: "warning",
  178. })
  179. .then(async () => {
  180. const enable = !row.enable;
  181. await ableUser({
  182. id: row.id,
  183. enable,
  184. });
  185. row.enable = enable;
  186. this.$message.success("操作成功!");
  187. })
  188. .catch(() => {});
  189. },
  190. toEdit(row) {
  191. this.curUser = row;
  192. this.$refs.ModifyUser.open();
  193. },
  194. toAdd() {
  195. this.curUser = {};
  196. this.$refs.ModifyUser.open();
  197. },
  198. async toResetPwd(row) {
  199. await resetPwd(row.id);
  200. this.$message.success("密码重置成功!");
  201. },
  202. },
  203. };
  204. </script>