parent
89fd9e235f
commit
5b4408724c
@ -0,0 +1,247 @@
|
|||||||
|
<template>
|
||||||
|
<div v-loading="loading">
|
||||||
|
<div style="margin-top: 10px;display: flex;justify-content: center">
|
||||||
|
<el-input
|
||||||
|
placeholder="默认展示部分用户,可以通过用户名搜索用户..."
|
||||||
|
prefix-icon="el-icon-search"
|
||||||
|
v-model="keywords" style="width: 400px" size="small">
|
||||||
|
</el-input>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="small" style="margin-left: 3px" @click="searchClick">搜索
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;justify-content: space-around;flex-wrap: wrap">
|
||||||
|
<el-card style="width:330px;margin-top: 10px;" v-for="(user,index) in users" :key="index"
|
||||||
|
v-loading="cardloading[index]">
|
||||||
|
<div slot="header" style="text-align: left">
|
||||||
|
<span>{{user.nickname}}</span>
|
||||||
|
<el-button style="float: right; padding: 3px 0;color: #ff0509" type="text" icon="el-icon-delete"
|
||||||
|
@click="deleteUser(user.id)">删除
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div><img :src="user.userface" :alt="user.nickname" style="width: 70px;height: 70px"></div>
|
||||||
|
<div style="text-align: left;color:#20a0ff;font-size: 12px;margin-top: 13px">
|
||||||
|
<span>用户名:</span><span>{{user.username}}</span>
|
||||||
|
</div>
|
||||||
|
<div style="text-align: left;color:#20a0ff;font-size: 12px;margin-top: 13px">
|
||||||
|
<span>电子邮箱:</span><span>{{user.email}}</span>
|
||||||
|
</div>
|
||||||
|
<div style="text-align: left;color:#20a0ff;font-size: 12px;margin-top: 13px">
|
||||||
|
<span>注册时间:</span><span>{{user.regTime | formatDateTime}}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
style="text-align: left;color:#20a0ff;font-size: 12px;margin-top: 13px;display: flex;align-items: center">
|
||||||
|
<span>用户状态:</span>
|
||||||
|
<el-switch
|
||||||
|
v-model="user.enabled"
|
||||||
|
active-text="启用"
|
||||||
|
active-color="#13ce66"
|
||||||
|
@change="enabledChange(user.enabled,user.id,index)"
|
||||||
|
inactive-text="禁用" style="font-size: 12px">
|
||||||
|
</el-switch>
|
||||||
|
</div>
|
||||||
|
<div style="text-align: left;color:#20a0ff;font-size: 12px;margin-top: 13px">
|
||||||
|
<span>用户角色:</span>
|
||||||
|
<el-tag
|
||||||
|
v-for="role in user.roles"
|
||||||
|
:key="role.id"
|
||||||
|
size="mini"
|
||||||
|
style="margin-right: 8px"
|
||||||
|
type="success">
|
||||||
|
{{role.name}}
|
||||||
|
</el-tag>
|
||||||
|
<el-popover
|
||||||
|
placement="right"
|
||||||
|
title="角色列表"
|
||||||
|
width="200"
|
||||||
|
:key="index+''+user.id"
|
||||||
|
@hide="saveRoles(user.id,index)"
|
||||||
|
trigger="click" v-loading="eploading[index]">
|
||||||
|
<el-select v-model="roles" :key="user.id" multiple placeholder="请选择" size="mini">
|
||||||
|
<el-option
|
||||||
|
v-for="(item,index) in allRoles"
|
||||||
|
:key="user.id+'-'+item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button type="text" icon="el-icon-more" style="padding-top: 0px" slot="reference"
|
||||||
|
@click="showRole(user.roles,user.id,index)"></el-button>
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {getRequest} from '../utils/api'
|
||||||
|
import {putRequest} from '../utils/api'
|
||||||
|
import {deleteRequest} from '../utils/api'
|
||||||
|
export default{
|
||||||
|
mounted: function () {
|
||||||
|
this.loading = true;
|
||||||
|
this.loadUserList();
|
||||||
|
this.cardloading = Array.apply(null, Array(20)).map(function (item, i) {
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
this.eploading = Array.apply(null, Array(20)).map(function (item, i) {
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
saveRoles(id, index){
|
||||||
|
var selRoles = this.roles;
|
||||||
|
if (this.cpRoles.length == selRoles.length) {
|
||||||
|
for (var i = 0; i < this.cpRoles.length; i++) {
|
||||||
|
for (var j = 0; j < selRoles.length; j++) {
|
||||||
|
if (this.cpRoles[i].id == selRoles[j]) {
|
||||||
|
selRoles.splice(j, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (selRoles.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var _this = this;
|
||||||
|
_this.cardloading.splice(index, 1, true)
|
||||||
|
putRequest("/admin/user/role", {rids: this.roles, id: id}).then(resp=> {
|
||||||
|
if (resp.status == 200 && resp.data.status == 'success') {
|
||||||
|
_this.$message({type: resp.data.status, message: resp.data.msg});
|
||||||
|
_this.loadOneUserById(id, index);
|
||||||
|
} else {
|
||||||
|
_this.cardloading.splice(index, 1, false)
|
||||||
|
_this.$message({type: 'error', message: '更新失败!'});
|
||||||
|
}
|
||||||
|
}, resp=> {
|
||||||
|
_this.cardloading.splice(index, 1, false)
|
||||||
|
if (resp.response.status == 403) {
|
||||||
|
var data = resp.response.data;
|
||||||
|
_this.$message({type: 'error', message: data});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
showRole(aRoles, id, index){
|
||||||
|
this.cpRoles = aRoles;
|
||||||
|
this.roles = [];
|
||||||
|
this.loadRoles(index);
|
||||||
|
for (var i = 0; i < aRoles.length; i++) {
|
||||||
|
this.roles.push(aRoles[i].id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deleteUser(id){
|
||||||
|
var _this = this;
|
||||||
|
this.$confirm('删除该用户, 是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
_this.loading = true;
|
||||||
|
deleteRequest("/admin/user/" + id).then(resp=> {
|
||||||
|
if (resp.status == 200 && resp.data.status == 'success') {
|
||||||
|
_this.$message({type: 'success', message: '删除成功!'})
|
||||||
|
_this.loadUserList();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_this.loading = false;
|
||||||
|
_this.$message({type: 'error', message: '删除失败!'})
|
||||||
|
}, resp=> {
|
||||||
|
_this.loading = false;
|
||||||
|
_this.$message({type: 'error', message: '删除失败!'})
|
||||||
|
});
|
||||||
|
}).catch(() => {
|
||||||
|
_this.$message({
|
||||||
|
type: 'info',
|
||||||
|
message: '已取消删除'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
enabledChange(enabled, id, index){
|
||||||
|
var _this = this;
|
||||||
|
_this.cardloading.splice(index, 1, true)
|
||||||
|
putRequest("/admin/user/enabled", {enabled: enabled, uid: id}).then(resp=> {
|
||||||
|
if (resp.status != 200) {
|
||||||
|
_this.$message({type: 'error', message: '更新失败!'})
|
||||||
|
_this.loadOneUserById(id, index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_this.cardloading.splice(index, 1, false)
|
||||||
|
_this.$message({type: 'success', message: '更新成功!'})
|
||||||
|
}, resp=> {
|
||||||
|
_this.$message({type: 'error', message: '更新失败!'})
|
||||||
|
_this.loadOneUserById(id, index);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadRoles(index){
|
||||||
|
var _this = this;
|
||||||
|
_this.eploading.splice(index, 1, true)
|
||||||
|
getRequest("/admin/roles").then(resp=> {
|
||||||
|
_this.eploading.splice(index, 1, false)
|
||||||
|
if (resp.status == 200) {
|
||||||
|
_this.allRoles = resp.data;
|
||||||
|
} else {
|
||||||
|
_this.$message({type: 'error', message: '数据加载失败!'});
|
||||||
|
}
|
||||||
|
}, resp=> {
|
||||||
|
_this.eploading.splice(index, 1, false)
|
||||||
|
if (resp.response.status == 403) {
|
||||||
|
var data = resp.response.data;
|
||||||
|
_this.$message({type: 'error', message: data});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadOneUserById(id, index){
|
||||||
|
var _this = this;
|
||||||
|
getRequest("/admin/user/" + id).then(resp=> {
|
||||||
|
_this.cardloading.splice(index, 1, false)
|
||||||
|
if (resp.status == 200) {
|
||||||
|
_this.users.splice(index, 1, resp.data);
|
||||||
|
} else {
|
||||||
|
_this.$message({type: 'error', message: '数据加载失败!'});
|
||||||
|
}
|
||||||
|
}, resp=> {
|
||||||
|
_this.cardloading.splice(index, 1, false)
|
||||||
|
if (resp.response.status == 403) {
|
||||||
|
var data = resp.response.data;
|
||||||
|
_this.$message({type: 'error', message: data});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadUserList(){
|
||||||
|
var _this = this;
|
||||||
|
getRequest("/admin/user?nickname="+this.keywords).then(resp=> {
|
||||||
|
_this.loading = false;
|
||||||
|
if (resp.status == 200) {
|
||||||
|
_this.users = resp.data;
|
||||||
|
} else {
|
||||||
|
_this.$message({type: 'error', message: '数据加载失败!'});
|
||||||
|
}
|
||||||
|
}, resp=> {
|
||||||
|
_this.loading = false;
|
||||||
|
if (resp.response.status == 403) {
|
||||||
|
var data = resp.response.data;
|
||||||
|
_this.$message({type: 'error', message: data});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
searchClick(){
|
||||||
|
this.loading = true;
|
||||||
|
this.loadUserList();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
eploading: [],
|
||||||
|
cardloading: [],
|
||||||
|
keywords: '',
|
||||||
|
users: [],
|
||||||
|
allRoles: [],
|
||||||
|
roles: [],
|
||||||
|
cpRoles: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
Loading…
Reference in new issue