|
@@ -7,8 +7,13 @@
|
|
|
<span :style="{ marginLeft: '4px' }">筛选搜索</span>
|
|
|
</el-col>
|
|
|
<el-col :span="12" :style="{ textAlign: 'right' }">
|
|
|
- <el-button size="mini" plain>重置</el-button>
|
|
|
- <el-button size="mini" type="primary" icon="el-icon-search" plain
|
|
|
+ <el-button size="mini" plain @click="filterName = ''">重置</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ plain
|
|
|
+ @click="loadData"
|
|
|
>查询</el-button
|
|
|
>
|
|
|
</el-col>
|
|
@@ -16,7 +21,12 @@
|
|
|
<el-row :style="{ marginLeft: '32px' }">
|
|
|
<el-form inline>
|
|
|
<el-form-item label="用户名:">
|
|
|
- <el-input placeholder="根据用户名检索..." size="mini" />
|
|
|
+ <el-input
|
|
|
+ placeholder="根据用户名检索..."
|
|
|
+ size="mini"
|
|
|
+ clearable
|
|
|
+ v-model="filterName"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-row>
|
|
@@ -47,7 +57,13 @@
|
|
|
<el-table-column prop="username" label="账号"> </el-table-column>
|
|
|
<el-table-column prop="nickname" label="昵称"> </el-table-column>
|
|
|
<el-table-column prop="password" label="密码"> </el-table-column>
|
|
|
- <el-table-column prop="roleId" label="角色"> </el-table-column>
|
|
|
+ <el-table-column prop="roleId" label="角色">
|
|
|
+ <template v-slot="{ row }">
|
|
|
+ <el-tag :type="row.roleId == 1 ? 'warning' : ''">{{
|
|
|
+ showRoleName(row.roleId)
|
|
|
+ }}</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column prop="deptName" label="部门"> </el-table-column>
|
|
|
<el-table-column prop="insertTime" label="创建时间">
|
|
|
<template v-slot="{ row }">
|
|
@@ -64,19 +80,30 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column fixed="right" label="操作" width="88">
|
|
|
- <template>
|
|
|
+ <template v-slot="{ row }">
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
icon="el-icon-edit"
|
|
|
circle
|
|
|
size="mini"
|
|
|
></el-button>
|
|
|
- <el-button
|
|
|
- type="danger"
|
|
|
- icon="el-icon-delete"
|
|
|
- circle
|
|
|
- size="mini"
|
|
|
- ></el-button>
|
|
|
+ <el-popconfirm
|
|
|
+ confirm-button-text="确认"
|
|
|
+ confirm-button-type="danger"
|
|
|
+ cancel-button-text="取消"
|
|
|
+ icon="el-icon-info"
|
|
|
+ icon-color="red"
|
|
|
+ title="您确定删除当前用户吗?"
|
|
|
+ @confirm="onDeleteUser(row.id)"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ circle
|
|
|
+ size="mini"
|
|
|
+ slot="reference"
|
|
|
+ ></el-button>
|
|
|
+ </el-popconfirm>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -95,16 +122,63 @@
|
|
|
|
|
|
<script>
|
|
|
import { mapActions, mapState } from 'vuex';
|
|
|
+import { getAllRoles } from '@/api/roles';
|
|
|
+import { deleteUser } from '@/api/users';
|
|
|
+
|
|
|
export default {
|
|
|
name: 'Users',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ filterName: '',
|
|
|
+ roles: [],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ filters: {
|
|
|
+ // 根据角色id 显示出 对应角色的名称
|
|
|
+ // showRoleName(rid) {
|
|
|
+ // return this.roles.find((r) => r.id === rid).name;
|
|
|
+ // },
|
|
|
+ },
|
|
|
computed: {
|
|
|
...mapState('users', ['users', 'pageInfo']),
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 删除用户
|
|
|
+ async onDeleteUser(id) {
|
|
|
+ // console.log(`output->id`, id);
|
|
|
+
|
|
|
+ if (id === 1) {
|
|
|
+ return this.$message({
|
|
|
+ type: 'error',
|
|
|
+ message: '不能删除超级管理员',
|
|
|
+ duration: 1000,
|
|
|
+ showClose: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ let { code, msg } = await deleteUser(id);
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: msg,
|
|
|
+ duration: 1000,
|
|
|
+ showClose: true,
|
|
|
+ });
|
|
|
+
|
|
|
+ if (code === 200) this.loadData();
|
|
|
+ },
|
|
|
+ showRoleName(rid) {
|
|
|
+ return this.roles.find((r) => r.id === rid)?.name;
|
|
|
+ },
|
|
|
+ loadData() {
|
|
|
+ this.fetchUsersByPage(this.filterName);
|
|
|
+ },
|
|
|
...mapActions('users', ['fetchUsersByPage']),
|
|
|
},
|
|
|
- mounted() {
|
|
|
- this.fetchUsersByPage('');
|
|
|
+ async mounted() {
|
|
|
+ this.loadData();
|
|
|
+ let { code, data } = await getAllRoles().catch((err) => err);
|
|
|
+ if (code === 200) {
|
|
|
+ this.roles = data.list;
|
|
|
+ }
|
|
|
},
|
|
|
};
|
|
|
</script>
|