index.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <template>
  2. <div class="admin-user">
  3. <el-form :inline="true">
  4. <!-- <el-form-item label="账号">
  5. <el-input v-model="queryParams.username" size="small" placeholder="请输入账号"></el-input>
  6. </el-form-item> -->
  7. <el-form-item v-if="$permission('/admin/admin')">
  8. <el-input v-model="queryParams.name" size="small" placeholder="请输入"></el-input>
  9. </el-form-item>
  10. <el-form-item>
  11. <el-button type="" size="small" @click="getList2">查询</el-button>
  12. <el-button type="primary" size="small" @click="handleAdd()">新增</el-button>
  13. </el-form-item>
  14. </el-form>
  15. <el-table v-loading="loading" :data="tableData" border header-row-class-name="custom-table-header">
  16. <el-table-column type="index" label="#" width="55" align="center"></el-table-column>
  17. <el-table-column prop="username" label="账号" align="center" show-overflow-tooltip></el-table-column>
  18. <el-table-column prop="name" label="用户名" align="center" show-overflow-tooltip></el-table-column>
  19. <el-table-column label="性别" align="center" show-overflow-tooltip>
  20. <template slot-scope="scope">
  21. <span>{{ genderObj[scope.row.gender] }}</span>
  22. </template>
  23. </el-table-column>
  24. <el-table-column prop="email" label="邮箱" align="center" show-overflow-tooltip></el-table-column>
  25. <el-table-column prop="mobile" label="联系方式" align="center" show-overflow-tooltip></el-table-column>
  26. <el-table-column prop="remark" label="备注" align="center" show-overflow-tooltip></el-table-column>
  27. <el-table-column label="操作" align="center" width="150">
  28. <template slot-scope="scope">
  29. <el-dropdown split-button type="primary" size="small" @click="handleEdit(scope.row)">
  30. 编辑
  31. <el-dropdown-menu slot="dropdown" class="text-align_center">
  32. <el-dropdown-item @click.native="handleReset(scope.row)">重置密码</el-dropdown-item>
  33. <el-dropdown-item class="color-red" @click.native="handleDelete(scope.row)" divided>删除</el-dropdown-item>
  34. </el-dropdown-menu>
  35. </el-dropdown>
  36. </template>
  37. </el-table-column>
  38. </el-table>
  39. <div class="pagination">
  40. <el-pagination :current-page.sync="queryParams.current" :page-size="queryParams.size" :total="total" @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
  41. </div>
  42. <el-dialog :title="title" :visible.sync="visible" width="700px" :before-close="close">
  43. <el-form v-if="visible" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="80px" label-position="left">
  44. <el-row :gutter="24">
  45. <el-col :span="12">
  46. <el-form-item label="账号" prop="username">
  47. <el-input v-model="ruleForm.username" placeholder="请输入账号"></el-input>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="12">
  51. <el-form-item label="密码" prop="password">
  52. <el-input v-model="ruleForm.password" placeholder="请输入密码"></el-input>
  53. </el-form-item>
  54. </el-col>
  55. </el-row>
  56. <el-row :gutter="24">
  57. <el-col :span="12">
  58. <el-form-item label="姓名" prop="name">
  59. <el-input v-model="ruleForm.name" placeholder="请输入姓名"></el-input>
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="12">
  63. <el-form-item label="性别" prop="gender">
  64. <el-select v-model="ruleForm.gender" class="width_100" placeholder="请选择">
  65. <el-option v-for="(item, key) in genderObj" :label="item" :value="parseInt(key)"></el-option>
  66. </el-select>
  67. </el-form-item>
  68. </el-col>
  69. </el-row>
  70. <el-row :gutter="24">
  71. <el-col :span="12">
  72. <el-form-item label="邮箱" prop="email">
  73. <el-input v-model="ruleForm.email" placeholder="请输入邮箱"></el-input>
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item label="联系方式" prop="mobile">
  78. <el-input v-model="ruleForm.mobile" placeholder="请输入联系方式"></el-input>
  79. </el-form-item>
  80. </el-col>
  81. </el-row>
  82. <el-form-item label="备注" prop="remark">
  83. <el-input v-model="ruleForm.remark" placeholder="请输入备注" type="textarea" maxlength="100" show-word-limit></el-input>
  84. </el-form-item>
  85. </el-form>
  86. <div slot="footer" class="dialog-footer">
  87. <el-button @click="close">取 消</el-button>
  88. <el-button type="primary" @click="submit" :loading="btnLoading">确 定</el-button>
  89. </div>
  90. </el-dialog>
  91. </div>
  92. </template>
  93. <script>
  94. export default {
  95. components: {
  96. },
  97. data() {
  98. return {
  99. visible: false,
  100. loading: false,
  101. btnLoading: false,
  102. total: 0,
  103. tableData: [],
  104. title: '',
  105. queryParams: {
  106. size: 10,
  107. current: 1,
  108. username: '',
  109. name: ''
  110. },
  111. genderObj: {
  112. 0: '女',
  113. 1: '男'
  114. },
  115. ruleForm: {},
  116. rules: {
  117. name: [{ required: true, message: '请输入用户名', trigger: 'blur' },],
  118. username: [{ required: true, message: '请输入账号', trigger: 'blur' },],
  119. gender: [{ required: true, message: '请选择性别', trigger: 'change' },],
  120. },
  121. }
  122. },
  123. mounted() {
  124. this.getList()
  125. },
  126. methods: {
  127. //根据条件查询
  128. getList2(){
  129. this.queryParams.current=1
  130. this.getList()
  131. },
  132. handleAdd() {
  133. this.title = '新增系统管理员'
  134. this.visible = true
  135. this.ruleForm = {
  136. gender: 0,
  137. }
  138. },
  139. handleEdit(row) {
  140. this.title = '编辑系统管理员'
  141. this.visible = true
  142. this.ruleForm = { ...row }
  143. },
  144. close() {
  145. this.visible = false
  146. },
  147. getList() {
  148. this.loading = true
  149. this.$api.getAdminUserList(this.queryParams).then(response => {
  150. this.tableData = response.data.records
  151. this.total = response.data.total
  152. this.loading = false
  153. }).catch(error => {
  154. this.loading = false
  155. })
  156. },
  157. handleCurrentChange(val) {
  158. this.queryParams.current = val;
  159. this.getList();
  160. },
  161. submit() {
  162. this.$refs.ruleForm.validate((valid) => {
  163. if (valid) {
  164. this.btnLoading = true
  165. if (this.ruleForm.id) {
  166. this.$api.editAdminUser(this.ruleForm).then(response => {
  167. this.$message.success('编辑成功')
  168. this.btnLoading = false
  169. this.getList()
  170. this.close()
  171. }).catch(error => {
  172. this.btnLoading = false
  173. })
  174. } else {
  175. this.$api.addAdminUser(this.ruleForm).then(response => {
  176. this.$message.success('新增成功')
  177. this.btnLoading = false
  178. this.getList()
  179. this.close()
  180. }).catch(error => {
  181. this.btnLoading = false
  182. })
  183. }
  184. } else {
  185. // console.log('error submit!!');
  186. return false;
  187. }
  188. });
  189. },
  190. handleReset(row) {
  191. this.$confirm('确认将用户密码重置为123456吗?', '提示', {
  192. confirmButtonText: '确定',
  193. cancelButtonText: '取消',
  194. type: 'warning'
  195. }).then(() => {
  196. this.loading = true
  197. this.$api.resetAdminUserPassword({ id: row.id }).then(response => {
  198. this.$message.success('重置成功')
  199. this.loading = false
  200. this.getList()
  201. }).catch(error => {
  202. this.loading = false
  203. })
  204. })
  205. },
  206. handleDelete(row) {
  207. this.$confirm('确认删除本条数据吗?', '提示', {
  208. confirmButtonText: '确定',
  209. cancelButtonText: '取消',
  210. type: 'warning'
  211. }).then(() => {
  212. this.loading = true
  213. this.$api.deleteAdminUser({ id: row.id }).then(response => {
  214. this.$message.success('删除成功')
  215. this.loading = false
  216. this.getList()
  217. }).catch(error => {
  218. this.loading = false
  219. })
  220. })
  221. }
  222. }
  223. }
  224. </script>
  225. <style lang="scss" scoped>
  226. .admin-user {
  227. }
  228. </style>