Files
peko-admin-web/src/views/users/UserCheckAdminBaseView.vue
2025-03-18 17:46:12 +08:00

577 lines
28 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<section class="content">
<div class="box box-primary">
<div class="box-body">
<section class="content-header">
<h1 id="itemTitle"></h1>
</section>
<section class="content">
<div id="table"></div>
<div id="toolbar">
<div style="margin-bottom: 6px">
<button id="btnSearch" class="btn btn-sm btn-primary">查询</button>
搜索根源
<select name="checkType" id="checkType">
<option value="1">平台号</option>
<option value="2">手机号</option>
<option value="4">uid</option>
<option value="5">邮箱</option>
</select>
</div>
<textarea name="erbanNoList" id="erbanNoList" placeholder="多个搜索号请用逗号隔开"></textarea>
</div>
</section>
</div>
</div>
</section>
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel2">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">x</span></button>
<h4 class="modal-title" id="addModalLabel">编辑用户信息</h4>
</div>
<div class="modal-body">
<form id="editUser" class="form-horizontal">
<input type="hidden" name="uid" id="editUid">
<input type="hidden" name="app" id="app">
<div class="form-group">
<label for="editNick" class="col-sm-3 control-label">昵称:</label>
<div class="col-sm-7">
<input type="text" class="form-control validate[required]" name="nick" id="editNick">
</div>
<button class="btn btn-warning col-sm-2" type="button" id="default_nick">恢复默认</button>
</div>
<div class="form-group">
<label for="editGender" class="col-sm-3 control-label">性别:</label>
<div class="col-sm-8">
<select name="gender" class="form-control" id="editGender">
<option value="1"></option>
<option value="2"></option>
</select>
</div>
</div>
<div class="form-group">
<label for="editPhone" class="col-sm-3 control-label">手机:</label>
<div class="col-sm-8 control-label">
<p id="editPhone"></p>
</div>
</div>
<div class="form-group">
<label for="editEmail" class="col-sm-3 control-label">邮箱:</label>
<div class="col-sm-8 control-label">
<p id="editEmail"></p>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">用户头像图:</label>
<div class="col-sm-8">
<img src="" id="addImgUrl" style="width:70px;height:70px;" alt="">
<input type="file" id="addUploadFile" name="uploadFile"
accept="image/gif,image/jpeg,image/jpg,image/png,image/svg">
<button class="btn btn-success" type="button" id="editUploadBtn">上传</button>
<button class="btn btn-warning" type="button" id="default_avatar">恢复默认</button>
<input type="hidden" id="editAvatar" name="avatar"
class="form-control validate[required]" />
</div>
</div>
<div class="form-group">
<label for="userDesc" class="col-sm-3 control-label">简介:</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="userDesc" id="userDesc">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">相册:</label>
<table class="table table-bordered table-hover" id="photoTable">
<tbody id="photoTbody">
</tbody>
</table>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">添加相册:</label>
<div class="col-sm-8">
<img src="" id="picUrl" style="width:70px;height:70px;" alt="">
<input type="file" id="uploadPhotoFile" name="uploadPhotoFile"
accept="image/gif,image/jpeg,image/jpg,image/png,image/svg">
<button class="btn btn-success" type="button" id="uploadPicBtn">上传</button>
<input type="hidden" class="form-control validate[required]" name="imgUrl" id="imgUrl"
style="width:400px">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">是否发送通知:</label>
<div class="col-sm-9">
<label class="radio-inline"><input type="radio" name="sendMsg" id="needSend" value="1"
checked></label>
<label class="radio-inline"><input type="radio" name="sendMsg" id="notSend"
value="0"></label>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"> </label>
<div class="col-sm-9" id="msgDiv">
<textarea type="text" class="form-control" name="msg" id="msg" maxlength="100"
placeholder="请填写通知内容100字符内"></textarea>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" id="editSave">保存</button>
</div>
</div>
</div>
</div>
</template>
<script>
import TableHelper from '@/utils/bootstrap-table-helper';
export default {
name: "UserCheckAdminBaseView",
setup() {
function delPhoto(obj) {
var tr = $(obj).parent().parent();
tr.remove();
}
window.delPhoto = delPhoto;
return {
delPhoto
};
},
created() {
this.$nextTick(function () {
this.initData();
});
},
methods: {
initData() {
$(function () {
$('#table').bootstrapTable('destroy');
$('#table').bootstrapTable({
cache: false,
striped: true,
showRefresh: false,
pageSize: 10,
pagination: true,
pageList: [10, 20, 30, 50],
sidePagination: "client", //表示服务端请求
//设置为undefined可以获取pageNumberpageSizesearchTextsortNamesortOrder
//设置为limit可以获取limit, offset, search, sort, order
queryParamsType: "undefined",
queryParams: function queryParams(params) { //设置查询参数
var param = {
pageSize: params.pageSize,
pageNumber: params.pageNumber,
erbanNoList: $('#erbanNoList').val(),
type: $('#checkType').val()
};
// console.log(param);
return param;
},
uniqueId: 'code',
toolbar: '#toolbar',
url: '/admin/userCheckAdmin/getlist',
onLoadSuccess: function () { //加载成功时执行
console.log("load success");
},
onLoadError: function () { //加载失败时执行
console.log("load fail");
},
columns: [
{ field: 'account.erbanNo', title: '平台号', align: 'center', valign: 'middle' },
{
field: 'users.avatar',
title: '头像',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
return "<img src='" + val + "' width='40' height='40'>";
}
},
{ field: 'account.uid', title: 'Uid', align: 'center', valign: 'middle' },
{ field: 'users.nick', title: '用户昵称', align: 'center', valign: 'middle' },
{ field: 'account.phone', title: '手机号', align: 'center', valign: 'middle' },
{ field: 'account.email', title: '邮箱', align: 'center', valign: 'middle' },
{ field: 'users.userDesc', title: '简介', align: 'center', valign: 'middle' },
{
field: '', title: '是否实名认证', align: 'center', valign: 'middle',
formatter: function (val, row, index) {
if (row.users.idCardNum && row.users.realName) {
return '是';
} else {
return '否';
}
}
},
{
field: 'privatePhoto',
title: '相册',
align: 'center',
width: '10%',
valign: 'middle',
formatter: function (val, row, index) {
var photoUrl = '';
val.forEach(function (item, index) {
photoUrl += "<img src='" + item.photoUrl + "' width='70' height='70'>";
});
return photoUrl;
}
},
{ field: 'userPurseVo.diamonds', title: '金币数', align: 'center', valign: 'middle' },
{ field: 'userPurseVo.golds', title: '钻石数', align: 'center', valign: 'middle' },
// {field:'account.phone',title:'手机电话',align:'center',valign:'middle'},
{
field: 'users.birth',
title: '用户出生日期',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
if (val) {
var date = new Date(val);
return date.format("yyyy-MM-dd");
} else {
return '-';
}
}
},
{
field: 'users.gender',
title: '性别',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
if (val == 1) {
return '男';
} else {
return '女';
}
}
},
{
field: 'users.userVipInfoVO',
title: 'vip等级',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
if (!val){
return 0
} else {
return val.vipLevel;
}
}
},
{
field: 'users.userLevelVo',
title: '财富等级(经验值)',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
return val.experLevelName + '(' + val.experAmount + ')';
}
},
{
field: 'users.userLevelVo',
title: '魅力等级(魅力值)',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
return val.charmLevelName + '(' + val.charmAmount + ')';
}
},
{
field: 'users.defUser',
title: '账号类型',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
switch (val) {
case 1:
return '普通账号';
case 2:
return '官方账号';
case 3:
return '机器账号';
case 4:
return '工会账户';
}
}
},
{
field: 'users.createTime',
title: '创建时间',
align: 'center',
valign: 'middle',
formatter: function (val, row, index) {
if (val) {
var date = new Date(val);
return date.format("yyyy-MM-dd hh:mm:ss");
} else {
return '-';
}
}
},
{ field: 'users.inviteCode', title: '所属邀请码', align: 'center', valign: 'middle' },
{
field: 'tmp',
title: '操作',
align: 'center',
width: '20%',
valign: 'middle',
formatter: function (val, row, index) {
var key = row.account.uid;
var result = "<button class='btn btn-sm btn-success opt-edit' data-id=" + key + ">编辑</button>";
return result;
}
}
]
})
$('#btnSearch').on('click', function () {
TableHelper.doRefresh('#table');
})
$('#uploadPicBtn').on('click', function () {
if (!$('#uploadPhotoFile').val()) {
$("#tipMsg").text("请选择上传图片");
$("#tipModal").modal('show');
return;
}
var options = {
type: 'post',
url: '/admin/userCheckAdmin/upload/photo',
dataType: 'json',
success: function (json) {
if (json.path) {
$('#imgUrl').val(json.path);
$('#picUrl').attr('src', json.path);
var trHtml = '<tr><td style="text-align:center;"><img src="' + json.path + '" width="100" height="100" class="photoImgUrl"></td>' +
'<td><button class="btn btn-danger" type="button" onclick="delPhoto(this)">删除</button></td></tr>';
$('#photoTbody').append(trHtml);
} else {
$('#tipMsg').text(json.msg);
$('#tipModal').modal('show');
}
}
}
$("#editUser").ajaxSubmit(options);
});
$('#table').on('click', '.opt-edit', function () {
$('#imgUrl').val('');
$('#picUrl').attr('src', '');
$('#uploadPhotoFile').val('');
$("#needSend").prop("checked", true);
$('#msg').val('');
$('#msgDiv').show();
$.ajax({
url: '/admin/userCheckAdmin/getOne',
type: 'post',
data: {
uid: $(this).data('id')
},
dataType: 'json',
success: function (res) {
if (res.code == 200) {
var users = res.data.users;
var account = res.data.account;
var nick = users ? users.nick : '';
var avatar = users ? users.avatar : '';
var gender = users ? users.gender : 1;
$('#editNick').val(nick);
$('#editPhone').html(account.phone);
$('#addImgUrl').attr('src', avatar);
$('#editAvatar').val(avatar);
$('#editPhone').val(account.phone);
$('#editGender').val(gender);
$('#editUid').val(account.uid);
$("#app").val(users.currentApp);
$("#userDesc").val(users.userDesc);
var privatePhoto = res.data.privatePhoto;
var $photos = $('#photoTbody');
$photos.html("");
$.each(privatePhoto, function (i, item) {
var $photo = $('<tr><td style="text-align:center;"><img src="' + item.photoUrl + '" width="100" height="100" class="photoImgUrl"></td>' +
'<td><button class="btn btn-danger" type="button" onclick="delPhoto(this)">删除</button></td></tr>');
$photos.append($photo);
});
}
$('#editModal').modal('show');
}
})
})
$('#editSave').on('click', function () {
var userDesc = $("#userDesc").val();
if (userDesc && userDesc.length > 60) {
$("#tipMsg").text("简介文字过长");
$("#tipModal").modal('show');
return;
}
var photoUrls = '';
var list = $('#photoTable').find($('.photoImgUrl'));
var size = list ? list.length : 0;
if (size > 8) {
$("#tipMsg").text("最多只能上传8张照片");
$("#tipModal").modal('show');
return;
}
for (var i = 0; i < size; i++) {
photoUrls += list[i].src + ',';
}
var sendMsg = $('input[name="sendMsg"]:checked').val();
if (sendMsg == 1 && !$("#msg").val()) {
$("#tipMsg").text("请填写通知内容");
$("#tipModal").modal('show');
return;
}
if ($('#editUser').validationEngine('validate')) {
$.ajax({
type: "post",
url: "/admin/userCheckAdmin/saveUser",
data: {
nick: $('#editNick').val(),
gender: $('#editGender').val(),
avatar: $('#editAvatar').val(),
uid: $('#editUid').val(),
userDesc: $("#userDesc").val(),
photoUrls: photoUrls,
msg: $("#msg").val(),
sendMsg: sendMsg
},
dataType: 'json',
success: function (res) {
if (res.code == 200) {
// $('#erbanNoList').val('');
$("#editModal").modal('hide');
$("#tipMsg").text("保存成功");
$("#tipModal").modal('show');
TableHelper.doRefresh("#table");
} else if (res.code == 1600) {
$("#tipMsg").text("保存失败,错误码:" + res.code + ",无法寻找用户资料,请确认该用户资料是否补全或存在");
$("#tipModal").modal('show');
} else if (res.code == 999) {
$("#tipMsg").text("保存失败,错误码:" + res.code + ",该平台号已被占用");
$("#tipModal").modal('show');
} else if (res.code == 4002) {
$("#tipMsg").text("保存失败,错误码:" + res.code + ",该手机号已被占用");
$("#tipModal").modal('show');
} else {
$("#tipMsg").text("保存失败," + res.message);
$("#tipModal").modal('show');
}
}
})
}
})
$('#editUploadBtn').on('click', function () {
//判断图片的大小
var file = $('#addUploadFile')[0];
if (file != undefined && file != "") {
var fileSize = file.files[0].size; //获得文件大小;
console.log(fileSize);
if (fileSize > 5242880) {
$("#tipMsg").text("当前图片大于5M,请重新选择");
$("#tipModal").modal('show');
return
}
}
var options = {
fileElementId: 'addUploadFile', //需要上传的文件域的ID即<input type="file">的ID。
type: 'post',
url: '/admin/upload/img',
dataType: 'json',
success: function (json) {
if (json.path) {
$('#editAvatar').val(json.path);
$('#addImgUrl').attr("src", json.path);
console.log(json.path);
} else {
$("#tipMsg").text(json.msg);
$("#tipModal").modal('show');
}
}
}
$("#editUser").ajaxSubmit(options);
})
$('#default_nick').on('click', function () {
$.ajax({
type: "post",
url: "/admin/userCheckAdmin/getDefaultNick",
data: {
app: $('#app').val()
},
dataType: 'json',
success: function (res) {
if (res.code == 200) {
$("#editNick").val(res.data);
}
}
})
})
$('#default_avatar').on('click', function () {
$.ajax({
type: "post",
url: "/admin/userCheckAdmin/getDefaultAvatar",
data: {
app: $('#app').val()
},
dataType: 'json',
success: function (res) {
if (res.code == 200) {
$("#addImgUrl").attr("src", res.data);
$("#editAvatar").val(res.data);
}
}
})
})
$('input[name="sendMsg"]').change(function () {
if ($("#needSend").is(":checked")) {
$('#msgDiv').show();
} else if ($("#notSend").is(":checked")) {
$('#msgDiv').hide();
}
});
})
}
},
};
</script>
<style scoped>
#toolbar textarea {
overflow: hidden;
resize: none;
width: 100%;
box-sizing: border-box;
padding: 4px;
height: 100px;
line-height: 20px;
}
#btnSearch {
margin-right: 12px;
}</style>