AdminUserManage.vue 5.7 KB

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