userAdmin.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <div class="main-card__body" v-loading="pageLoading">
  3. <h1 class="main-card__title">
  4. 账户管理
  5. </h1>
  6. <el-input class="main-card__filter" v-model="filter" placeholder="筛选"></el-input>
  7. <el-table
  8. :data="filterUsers"
  9. stripe
  10. class="main-card__table"
  11. >
  12. <el-table-column
  13. type="index"
  14. width="50">
  15. </el-table-column>
  16. <el-table-column
  17. prop="name"
  18. label="名称"
  19. width="110">
  20. </el-table-column>
  21. <el-table-column
  22. prop="phone"
  23. label="联系方式">
  24. </el-table-column>
  25. <el-table-column
  26. prop="role"
  27. label="角色"
  28. width="100">
  29. </el-table-column>
  30. <el-table-column
  31. prop="state"
  32. label="状态"
  33. width="80">
  34. </el-table-column>
  35. <el-table-column
  36. fixed="right"
  37. label="封号"
  38. width="70">
  39. <template slot-scope="scope">
  40. <el-button @click="block(scope.row)" type="text" size="small" v-if="scope.row.valid">封禁</el-button>
  41. <el-button @click="unblock(scope.row)" type="text" size="small" v-else>解封</el-button>
  42. </template>
  43. </el-table-column>
  44. <el-table-column
  45. fixed="right"
  46. label="操作"
  47. width="100">
  48. <template slot-scope="scope">
  49. <el-button @click="setSEEC(scope.row)" type="text" size="small" v-if="scope.row.role==='STUDENT'">设为开发人员</el-button>
  50. <el-button @click="setStudent(scope.row)" type="text" size="small" v-else-if="scope.row.role==='SEEC'">恢复普通用户</el-button>
  51. </template>
  52. </el-table-column>
  53. </el-table>
  54. </div>
  55. </template>
  56. <script>
  57. export default {
  58. name: 'userAdmin',
  59. layout: 'admin',
  60. data () {
  61. return {
  62. users: [],
  63. filterUsers: [],
  64. pageLoading: true,
  65. filter: ''
  66. }
  67. },
  68. mounted () {
  69. this.getUsers()
  70. this.pageLoading = false
  71. },
  72. methods: {
  73. getUsers () {
  74. this.$api.$get('/admin/getUsers').then((res) => {
  75. console.log('users', res.data)
  76. if (res.code === 0) {
  77. for (const item of res.data) {
  78. if (item.valid) {
  79. item.state = '正常'
  80. } else {
  81. item.state = '封禁中'
  82. }
  83. }
  84. this.users = res.data
  85. this.filterUser()
  86. } else {
  87. this.$message({
  88. showClose: true,
  89. message: res.message,
  90. type: 'error'
  91. })
  92. }
  93. }
  94. ).catch((e) => {
  95. console.log(e)
  96. })
  97. },
  98. block (row) {
  99. this.$api.$post('/admin/updateUserValid', { id: row.id, valid: false }).then((res) => {
  100. if (res.code === 0) {
  101. this.$message({
  102. showClose: true,
  103. message: '已封禁用户' + row.name,
  104. type: 'success'
  105. })
  106. row.valid = false
  107. row.state = '封禁中'
  108. } else {
  109. this.$message({
  110. showClose: true,
  111. message: res.message,
  112. type: 'error'
  113. })
  114. }
  115. }
  116. ).catch((e) => {
  117. console.log(e)
  118. })
  119. },
  120. unblock (row) {
  121. this.$api.$post('/admin/updateUserValid', { id: row.id, valid: true }).then((res) => {
  122. if (res.code === 0) {
  123. this.$message({
  124. showClose: true,
  125. message: '已解封用户' + row.name,
  126. type: 'success'
  127. })
  128. row.valid = true
  129. row.state = '正常'
  130. } else {
  131. this.$message({
  132. showClose: true,
  133. message: res.message,
  134. type: 'error'
  135. })
  136. }
  137. }
  138. ).catch((e) => {
  139. console.log(e)
  140. })
  141. },
  142. setSEEC (row) {
  143. this.$api.$post('/admin/updateUserRole', { id: row.id, role: 'SEEC' }).then((res) => {
  144. if (res.code === 0) {
  145. this.$message({
  146. showClose: true,
  147. message: row.name + '已设置为开发人员',
  148. type: 'success'
  149. })
  150. row.role = 'SEEC'
  151. } else {
  152. this.$message({
  153. showClose: true,
  154. message: res.message,
  155. type: 'error'
  156. })
  157. }
  158. }).catch((e) => {
  159. console.log(e)
  160. })
  161. },
  162. setStudent (row) {
  163. this.$api.$post('/admin/updateUserRole', { id: row.id, role: 'STUDENT' }).then((res) => {
  164. if (res.code === 0) {
  165. this.$message({
  166. showClose: true,
  167. message: row.name + '已恢复为普通用户',
  168. type: 'success'
  169. })
  170. row.role = 'STUDENT'
  171. } else {
  172. this.$message({
  173. showClose: true,
  174. message: res.message,
  175. type: 'error'
  176. })
  177. }
  178. }).catch((e) => {
  179. console.log(e)
  180. })
  181. },
  182. filterUser () {
  183. const filterUsers = []
  184. this.users.forEach(user => {
  185. if (user.name.toLowerCase().indexOf(this.filter.toLowerCase()) !== -1 ||
  186. user.phone.toLowerCase().indexOf(this.filter.toLowerCase()) !== -1 ||
  187. user.role.toLowerCase().indexOf(this.filter.toLowerCase()) !== -1) {
  188. filterUsers.push(user)
  189. }
  190. })
  191. this.filterUsers = filterUsers
  192. }
  193. },
  194. watch: {
  195. filter: function () {
  196. this.filterUser()
  197. }
  198. }
  199. }
  200. </script>
  201. <style lang="scss" scoped>
  202. @import '~/assets/css/person.scss';
  203. </style>