733 lines
30 KiB
HTML
Executable File
733 lines
30 KiB
HTML
Executable File
{include file="Public:header2"/}
|
||
|
||
<body>
|
||
<div class="layui-fluid">
|
||
<div class="layui-card">
|
||
<!-- 搜索表单 -->
|
||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" id="searchForm">
|
||
<div class="layui-form-item">
|
||
<div class="layui-inline">
|
||
<div class="layui-input-inline">
|
||
<input type="text" name="user_id" placeholder="请输入UID" autocomplete="off"
|
||
class="layui-input">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-inline">
|
||
<div class="layui-input-inline">
|
||
<input type="text" name="pid" placeholder="请输入推荐人UID" autocomplete="off"
|
||
class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-inline">
|
||
<div class="layui-input-inline">
|
||
<input type="text" name="mobile" placeholder="请输入手机号" autocomplete="off"
|
||
class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-inline">
|
||
<div class="layui-input-inline">
|
||
<input type="text" name="nickname" placeholder="请输入昵称" autocomplete="off"
|
||
class="layui-input">
|
||
</div>
|
||
</div>
|
||
<div class="layui-inline">
|
||
<div class="layui-input-inline">
|
||
<input type="text" id="last_login_ip" name="last_login_ip" class="layui-input"
|
||
placeholder="ip查询">
|
||
</div>
|
||
</div>
|
||
<div class="layui-inline">
|
||
<div class="layui-input-inline">
|
||
<input type="text" id="addtime" name="addtime" class="layui-input" placeholder="登录时间">
|
||
</div>
|
||
</div>
|
||
<div class="layui-inline">
|
||
<button class="layui-btn layuiadmin-btn-useradmin" data-type="search">
|
||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 数据表格 -->
|
||
<div class="layui-card-body">
|
||
<table id="LAY-user-table" lay-filter="LAY-user-table"></table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 用户信息模板 -->
|
||
<script type="text/html" id="userInfoTpl">
|
||
<div class="user-card">
|
||
<img src="{{d.headimg}}" alt="{{d.nickname}}" class="user-avatar">
|
||
<div class="user-info">
|
||
<p class="user-detail">{{d.nickname}}</p>
|
||
<p class="user-id">UID:{{d.uid}}</p>
|
||
<p class="user-id">真实Id:{{d.id}}</p>
|
||
<p class="user-detail">{{d.mobile}}</p>
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- 添加推荐人信息模板 -->
|
||
<script type="text/html" id="pidInfoTpl">
|
||
{{# if(d.pid_info) { }}
|
||
<div class="user-card">
|
||
<img src="{{d.pid_info.headimg}}" alt="" class="user-avatar">
|
||
<div class="user-info">
|
||
<p class="user-id">UID:{{d.pid_info.uid}}</p>
|
||
<p class="user-detail">{{d.pid_info.nickname}}</p>
|
||
<p class="user-id">真实Id:{{d.pid_info.id}}</p>
|
||
</div>
|
||
</div>
|
||
{{# } else { }}
|
||
-
|
||
{{# } }}
|
||
</script>
|
||
|
||
<!-- 操作按钮模板 -->
|
||
<script type="text/html" id="operationTpl">
|
||
<div class="btn-group">
|
||
<a class="layui-btn layui-btn-default layui-btn-xs" lay-event="give">赠送优惠券</a>
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="detail">查看下级</a>
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="ipDetail">查看ip登录列表</a>
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="viewBox">查看盒柜</a>
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="viewOrder">查看订单</a>
|
||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="bindMobile">绑定手机号</a>
|
||
{{# if(d.ip_adcode == 1){ }}
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="ipConvert">ip转换</a>
|
||
{{# } }}
|
||
|
||
<div>
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearMobile">清空手机号</a>
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearWechat">重置微信登录</a>
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearUid">清空UID</a><br />
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="resetSign">重置签到数据</a>
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- 余额模板 -->
|
||
<script type="text/html" id="moneyTpl">
|
||
<span class="value-display">{{d.money}}</span>
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="rechargeMoney">充值</a><br />
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyDetail">流水明细</a>
|
||
</script>
|
||
<!--货币2按钮模板-->
|
||
<script type="text/html" id="integralTpl">
|
||
<span class="value-display">{{d.integral}}</span>
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="rechargeIntegral">充值</a><br />
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="integralDetail">流水明细</a>
|
||
</script>
|
||
<!--货币3按钮模板-->
|
||
<script type="text/html" id="scoreTpl">
|
||
<span class="value-display">{{d.money2}}</span>
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="rechargeScore">充值</a><br />
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="scoreDetail">流水明细</a>
|
||
</script>
|
||
|
||
<!-- 修改状态模板 -->
|
||
<script type="text/html" id="statusTpl">
|
||
<div class="status-group">
|
||
<div class="status-text">
|
||
账号状态:
|
||
{{# if(d.status == 1) { }}
|
||
正常
|
||
{{# if(d.istest == 1) { }}
|
||
/推广账号
|
||
{{# } else if(d.istest == 2) { }}
|
||
/测试账号
|
||
{{# } }}
|
||
{{# } else { }}
|
||
封号
|
||
{{# } }}
|
||
</div>
|
||
<div class="status-actions">
|
||
{{# if(d.status == 1) { }}
|
||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="ban">封号</a>
|
||
|
||
{{# if(d.istest == 0) { }}
|
||
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="setPromotion">推广</a>
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="setTest">测试</a>
|
||
{{# } }}
|
||
|
||
{{# if(d.istest == 1) { }}
|
||
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="cancelPromotion">取消推广</a>
|
||
{{# } }}
|
||
|
||
{{# if(d.istest == 2) { }}
|
||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelTest">取消测试</a>
|
||
{{# } }}
|
||
{{# } else { }}
|
||
<a class="layui-btn layui-btn-success layui-btn-xs" lay-event="unban">解封</a>
|
||
{{# } }}
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- 修改合并列模板 -->
|
||
<script type="text/html" id="combinedTpl">
|
||
<div class="user-extra-info">
|
||
<div>总消费:{{Number(d.user_all_total).toFixed(2)}}</div>
|
||
<div>总出货价值:{{Number(d.user_goodslist_money3).toFixed(2)}}</div>
|
||
<div>盒柜价值:{{(Number(d.user_hegui)).toFixed(2)}}</div>
|
||
<div>微信消费:{{Number(d.user_weixin_total).toFixed(2)}}</div>
|
||
<div>{$app_setting.balance_name}消费:{{Number(d.user_use_money).toFixed(2)}}</div>
|
||
<div>{$app_setting.currency1_name}消费:{{Number(d.user_use_integral).toFixed(2)}}</div>
|
||
<div>回收货币:{{Number(d.user_goodslist_money).toFixed(2)}}</div>
|
||
<div>发货价值:{{Number(d.user_goodslist_money2).toFixed(2)}}</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- 添加新的用户附加信息模板 -->
|
||
<script type="text/html" id="userExtraInfoTpl">
|
||
<div class="user-extra-info">
|
||
<div>注册时间:{{d.addtime ? timestampToDatetime(d.addtime) : '-'}}</div>
|
||
<div>活跃时间:{{d.last_login_time ? timestampToDatetime(d.last_login_time) : '空'}}</div>
|
||
<div>IP:{{d.last_login_ip || '-'}}</div>
|
||
<div>IP地址:{{d.ip_province || '-'}}</div>
|
||
<div>IP邮编:{{d.ip_adcode || '-'}}</div>
|
||
</div>
|
||
</script>
|
||
|
||
{include file="Public:footer"/}
|
||
<script>
|
||
var table;
|
||
var form;
|
||
var laydate;
|
||
|
||
// 时间戳转日期时间格式 - 移到全局作用域
|
||
function timestampToDatetime(timestamp) {
|
||
var date = new Date(timestamp * 1000);
|
||
var year = date.getFullYear();
|
||
var month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||
var day = ('0' + date.getDate()).slice(-2);
|
||
var hours = ('0' + date.getHours()).slice(-2);
|
||
var minutes = ('0' + date.getMinutes()).slice(-2);
|
||
var seconds = ('0' + date.getSeconds()).slice(-2);
|
||
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
|
||
}
|
||
|
||
layui.use(['table', 'form', 'laydate'], function () {
|
||
table = layui.table;
|
||
form = layui.form;
|
||
laydate = layui.laydate;
|
||
|
||
// 日期时间范围
|
||
laydate.render({
|
||
elem: '#addtime'
|
||
, type: 'datetime'
|
||
, range: true
|
||
});
|
||
console.log('full-' + Math.floor($('#searchForm').height() + 80));
|
||
|
||
// 表格实例
|
||
table.render({
|
||
elem: '#LAY-user-table'
|
||
, url: '{:url("/admin/user_list")}'
|
||
, cellMinWidth: 80 // 设置最小列宽
|
||
, lineStyle: 'height: 80px;' // 设置行高
|
||
, height: 'full-' + Math.floor($('#searchForm').height() + 100)
|
||
, cols: [[
|
||
{ field: 'userInfo', title: '用户信息', templet: '#userInfoTpl', width: 200 }
|
||
, { field: 'pid_info', title: '推荐人', templet: '#pidInfoTpl', width: 200 }
|
||
, { field: 'money', title: '{$app_setting.balance_name}', templet: '#moneyTpl', width: 150 }
|
||
, { field: 'integral', title: '{$app_setting.currency1_name}', templet: '#integralTpl', width: 120 }
|
||
, { field: 'score', title: '{$app_setting.currency2_name}', templet: '#scoreTpl', width: 120 }
|
||
, { field: 'combined', title: '货币信息', templet: '#combinedTpl', width: 200 }
|
||
, { field: 'status', title: '用户状态', templet: '#statusTpl', width: 200 }
|
||
, { field: 'extraInfo', title: '用户信息', templet: '#userExtraInfoTpl', width: 220 }
|
||
, { title: '操作', toolbar: '#operationTpl', width: 300, fixed: 'right' }
|
||
]]
|
||
, page: true
|
||
, limit: 20
|
||
, text: {
|
||
none: '暂无相关数据'
|
||
}
|
||
});
|
||
|
||
// 监听工具条事件
|
||
table.on('tool(LAY-user-table)', function (obj) {
|
||
var data = obj.data;
|
||
switch (obj.event) {
|
||
case 'give':
|
||
layer.open({
|
||
type: 2
|
||
, title: '赠送优惠券'
|
||
, content: '/admin/user_give_add/user_id/' + data.id
|
||
, area: ['600px', '400px']
|
||
});
|
||
break;
|
||
case 'bindMobile':
|
||
bindMobile(data.id, data.nickname);
|
||
break;
|
||
case 'ban':
|
||
userStatusChange(data.id, 2, data.nickname, '封号');
|
||
break;
|
||
case 'unban':
|
||
userStatusChange(data.id, 1, data.nickname, '解封');
|
||
break;
|
||
case 'setPromotion':
|
||
testAccountChange(data.id, 1, data.nickname, '设为推广账号');
|
||
break;
|
||
case 'setTest':
|
||
testAccountChange(data.id, 2, data.nickname, '设为测试账号');
|
||
break;
|
||
case 'cancelPromotion':
|
||
testAccountChange(data.id, 0, data.nickname, '取消推广账号');
|
||
break;
|
||
case 'cancelTest':
|
||
testAccountChange(data.id, 0, data.nickname, '取消测试账号');
|
||
break;
|
||
case 'detail':
|
||
layer.open({
|
||
type: 2
|
||
, title: '下级用户'
|
||
, content: '/admin/user_team?id=' + data.id
|
||
, area: ['80%', '80%']
|
||
});
|
||
break;
|
||
case 'ipDetail':
|
||
layer.open({
|
||
type: 2
|
||
, title: 'IP登录记录'
|
||
, content: '/admin/ip_list?id=' + data.id
|
||
, area: ['80%', '80%']
|
||
});
|
||
break;
|
||
case 'ipConvert':
|
||
ipConvert(data.id, 2, data.nickname);
|
||
break;
|
||
case 'clearMobile':
|
||
clearMobile(data.id, data.nickname);
|
||
break;
|
||
case 'clearWechat':
|
||
clearWechat(data.id, data.nickname);
|
||
break;
|
||
case 'clearUid':
|
||
clearUid(data.id, data.nickname);
|
||
break;
|
||
case 'rechargeMoney':
|
||
recharge(data.id, data.nickname, 1, '{$app_setting.balance_name}');
|
||
break;
|
||
case 'rechargeIntegral':
|
||
recharge(data.id, data.nickname, 2, '{$app_setting.currency1_name}');
|
||
break;
|
||
case 'rechargeScore':
|
||
recharge(data.id, data.nickname, 3, '{$app_setting.currency2_name}');
|
||
break;
|
||
case 'viewBox':
|
||
layer.open({
|
||
type: 2,
|
||
title: data.nickname + ' 的盒柜',
|
||
content: '/admin/user_box?id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||
area: ['95%', '90%'],
|
||
maxmin: true
|
||
});
|
||
break;
|
||
case 'viewOrder':
|
||
layer.open({
|
||
type: 2,
|
||
title: data.nickname + ' 的订单列表',
|
||
content: '/admin/user_order?id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||
area: ['95%', '90%'],
|
||
maxmin: true
|
||
});
|
||
break;
|
||
case 'moneyDetail':
|
||
layer.open({
|
||
type: 2,
|
||
title: data.nickname + ' 的余额流水明细',
|
||
content: '/admin/user_money_detail?user_id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||
area: ['95%', '90%'],
|
||
maxmin: true
|
||
});
|
||
break;
|
||
case 'integralDetail':
|
||
layer.open({
|
||
type: 2,
|
||
title: data.nickname + ' 的{$app_setting.currency1_name}流水明细',
|
||
content: '/admin/user_integral_detail?user_id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||
area: ['95%', '90%'],
|
||
maxmin: true
|
||
});
|
||
break;
|
||
case 'scoreDetail':
|
||
layer.open({
|
||
type: 2,
|
||
title: data.nickname + ' 的{$app_setting.currency2_name}流水明细',
|
||
content: '/admin/user_score_detail?user_id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||
area: ['95%', '90%'],
|
||
maxmin: true
|
||
});
|
||
break;
|
||
case 'resetSign':
|
||
resetUserSign(data.id, data.nickname);
|
||
break;
|
||
}
|
||
});
|
||
|
||
// 搜索
|
||
var active = {
|
||
search: function () {
|
||
var user_id = $('input[name="user_id"]').val()
|
||
, mobile = $('input[name="mobile"]').val()
|
||
, nickname = $('input[name="nickname"]').val()
|
||
, last_login_ip = $('input[name="last_login_ip"]').val()
|
||
, addtime = $('input[name="addtime"]').val();
|
||
var pid = $('input[name="pid"]').val();
|
||
table.reload('LAY-user-table', {
|
||
where: {
|
||
user_id: user_id
|
||
, mobile: mobile
|
||
, nickname: nickname
|
||
, last_login_ip: last_login_ip
|
||
, addtime: addtime
|
||
, pid: pid
|
||
}
|
||
, page: {
|
||
curr: 1
|
||
}
|
||
});
|
||
}
|
||
};
|
||
|
||
$('.layui-btn').on('click', function () {
|
||
var type = $(this).data('type');
|
||
active[type] ? active[type].call(this) : '';
|
||
});
|
||
|
||
// 用户状态变更
|
||
function userStatusChange(id, type, username, typeName) {
|
||
layer.confirm('确认要执行' + username + '的' + typeName + '操作吗?', function (index) {
|
||
$.post('{:url("/admin/userdel")}', {
|
||
id: id,
|
||
type: type
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg, { icon: 1 });
|
||
table.reload('LAY-user-table');
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// 充值功能
|
||
function recharge(id, username, type, typeName) {
|
||
layer.open({
|
||
type: 2
|
||
, title: username + ' 充值' + typeName
|
||
, content: '/admin/chongzhi?id=' + id + '&type=' + type
|
||
, area: ['40%', '40%']
|
||
});
|
||
}
|
||
|
||
// 测试/推广账号状态变更
|
||
function testAccountChange(id, type, username, typeName) {
|
||
layer.confirm('确认要执行' + username + '的' + typeName + '操作吗?', function (index) {
|
||
$.post('{:url("/admin/usertest")}', {
|
||
id: id,
|
||
type: type
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg, { icon: 1 });
|
||
table.reload('LAY-user-table');
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// IP转换
|
||
function ipConvert(id, type, username) {
|
||
layer.confirm('确认要执行' + username + '的IP转换操作吗?', function (index) {
|
||
$.post('{:url("/admin/ipzh")}', {
|
||
id: id,
|
||
type: type
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg, { icon: 1 });
|
||
table.reload('LAY-user-table');
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// 清空手机号
|
||
function clearMobile(id, username) {
|
||
layer.confirm('确认要执行' + username + '的清空手机号操作吗?清空后通过手机号将搜索不到用户!同时用户需要重新绑定手机号才能抽奖!', {
|
||
icon: 2,
|
||
title: '清除手机号'
|
||
}, function (index) {
|
||
$.post('{:url("/admin/usermobileclear")}', {
|
||
id: id
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg + ';请手动刷新页面!', { icon: 1 });
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// 清除微信
|
||
function clearWechat(id, username) {
|
||
layer.confirm('确认要执行' + username + '的清空微信关联数据操作吗?清空后通过微信号将关联不到此账号!微信设为新账号需要同时清除手机号操作!!!', {
|
||
icon: 2,
|
||
title: '清除微信号'
|
||
}, function (index) {
|
||
$.post('{:url("/admin/userwxclear")}', {
|
||
id: id
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg + ';请手动刷新页面!', { icon: 1 });
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// 清空UID
|
||
function clearUid(id, username) {
|
||
layer.confirm('确认要清空' + username + '的UID吗?清空后系统会按配置自动生成新的UID!', {
|
||
icon: 2,
|
||
title: '清空UID'
|
||
}, function (index) {
|
||
$.post('{:url("/admin/userUidClear")}', {
|
||
id: id
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg, { icon: 1 });
|
||
table.reload('LAY-user-table');
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// 重置用户签到数据
|
||
function resetUserSign(id, username) {
|
||
layer.confirm('确认要重置' + username + '的签到数据吗?重置后将把签到日期设置为上一天!', {
|
||
icon: 2,
|
||
title: '重置签到数据'
|
||
}, function (index) {
|
||
$.post('{:url("/admin/resetUserSign")}', {
|
||
id: id
|
||
}, function (res) {
|
||
if (res.status === 1) {
|
||
layer.msg(res.msg, { icon: 1 });
|
||
table.reload('LAY-user-table');
|
||
} else {
|
||
layer.msg(res.msg, { icon: 2 });
|
||
}
|
||
});
|
||
layer.close(index);
|
||
});
|
||
}
|
||
|
||
// 绑定手机号
|
||
function bindMobile(id, username) {
|
||
layer.open({
|
||
type: 1,
|
||
title: '为 ' + username + ' 绑定手机号',
|
||
content: '<div style="padding: 20px;"><div class="layui-form-item">' +
|
||
'<label class="layui-form-label">手机号</label>' +
|
||
'<div class="layui-input-block">' +
|
||
'<input type="text" id="bind_mobile" placeholder="请输入手机号" autocomplete="off" class="layui-input">' +
|
||
'</div></div></div>',
|
||
area: ['400px', '200px'],
|
||
btn: ['确定', '取消'],
|
||
yes: function(index) {
|
||
var mobile = $('#bind_mobile').val();
|
||
if(!mobile || !/^1\d{10}$/.test(mobile)) {
|
||
layer.msg('请输入正确的手机号码', {icon: 2});
|
||
return;
|
||
}
|
||
$.post('{:url("/admin/bindUserMobile")}', {
|
||
id: id,
|
||
mobile: mobile
|
||
}, function(res) {
|
||
if(res.status === 1) {
|
||
layer.msg(res.msg, {icon: 1});
|
||
table.reload('LAY-user-table');
|
||
layer.close(index);
|
||
} else {
|
||
layer.msg(res.msg, {icon: 2});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<style>
|
||
/* 用户信息卡片样式 */
|
||
.user-card {
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 8px;
|
||
}
|
||
|
||
.user-avatar {
|
||
width: 50px;
|
||
height: 50px;
|
||
border-radius: 50%;
|
||
object-fit: cover;
|
||
}
|
||
|
||
.user-info {
|
||
margin-left: 12px;
|
||
}
|
||
|
||
.user-id {
|
||
color: #e91e63;
|
||
font-size: 12px;
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
.user-detail {
|
||
color: rgba(102, 102, 102, 0.73);
|
||
font-size: 12px;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
/* 操作按钮组样式 */
|
||
.btn-group {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 8px;
|
||
padding: 8px 0;
|
||
}
|
||
|
||
/* 搜索表单样式 */
|
||
.search-form {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 12px;
|
||
padding: 16px;
|
||
}
|
||
|
||
.search-item {
|
||
min-width: 150px;
|
||
}
|
||
|
||
/* 表格样式优化 */
|
||
.layui-table {
|
||
margin-top: 16px;
|
||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
||
}
|
||
|
||
.layui-table thead th {
|
||
background-color: #f8f8f8;
|
||
font-weight: bold;
|
||
}
|
||
|
||
|
||
/* 充值按钮样式 */
|
||
.layui-table .layui-btn-xs {
|
||
margin-top: 5px;
|
||
/* 给充值按钮添加上边距 */
|
||
height: 22px;
|
||
line-height: 22px;
|
||
padding: 0 5px;
|
||
}
|
||
|
||
/* 数值显示样式 */
|
||
.value-display {
|
||
margin-bottom: 5px;
|
||
/* 数值和按钮之间的间距 */
|
||
display: block;
|
||
}
|
||
|
||
.layui-table-cell {
|
||
height: 150px !important;
|
||
line-height: 28px;
|
||
padding: 0 15px;
|
||
position: relative;
|
||
box-sizing: border-box
|
||
}
|
||
|
||
.status-group {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
}
|
||
|
||
.status-text {
|
||
color: #333;
|
||
font-size: 13px;
|
||
}
|
||
|
||
.status-actions {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 4px;
|
||
}
|
||
|
||
.status-actions .layui-btn-xs {
|
||
height: 22px;
|
||
line-height: 22px;
|
||
padding: 0 8px;
|
||
}
|
||
|
||
.combined-values {
|
||
overflow: auto;
|
||
height: 100%;
|
||
}
|
||
|
||
.combined-values div {
|
||
margin: 0;
|
||
padding: 0px 0;
|
||
|
||
}
|
||
|
||
.layui-table td {
|
||
padding: 10px 15px;
|
||
/* 调整单元格内边距 */
|
||
height: 150px !important;
|
||
}
|
||
|
||
|
||
.layui-table thead th {
|
||
height: 30px !important;
|
||
}
|
||
|
||
.layui-table thead th div {
|
||
height: 30px !important;
|
||
}
|
||
|
||
.layui-table-col-special {
|
||
height: 30px !important;
|
||
}
|
||
|
||
/* 添加用户附加信息样式 */
|
||
.user-extra-info {
|
||
font-size: 12px;
|
||
color: rgba(0, 0, 0, 0.65);
|
||
line-height: 1.8;
|
||
overflow: auto;
|
||
}
|
||
|
||
.user-extra-info div {
|
||
margin-bottom: 3px;
|
||
}
|
||
</style>
|
||
</body>
|
||
|
||
</html> |