Files
Pro/application/admin/view/player/user_online.html
T
2026-02-25 01:50:31 +08:00

250 lines
12 KiB
HTML
Executable File

{include file="public/header"}
<style>
.x-body .layui-row{ margin-top:-10px; line-height:25px; background:#f5f5f5; border-radius:10px; }
.x-body .layui-row .xblock button{ margin-top:-20px; }
.x-body .layui-form{ margin-top:15px; margin-bottom:16px; }
.x-body .layui-form .layui-input-block{ display:inline-block; width:150px; margin-left:0; }
.x-body .layui-form .layui-form-item{ display:inline-block; margin-left:0; }
.x-body .layui-form .layui-form-item .layui-form-label{ width:80px; }
.x-body .layui-form .layui-form-item .layui-input-block{ margin-left:-10px; width:100px; }
.x-body .layui-form .layui-form-item .layui-input-block .layui-form-radio i{ margin-right:4px; }
.x-body .layui-form .layui-form-item .layui-form-radio{ margin-top:6px; margin-right:-8px; }
.layui-input-block dl{ text-align:left; }
.x-so{ margin:0; }
.x-so input.layui-input{ width:150px; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
.alert{position:fixed; top:15%; left:30%; width:600px; min-height:150px; background:#fff; border:1px solid #e2e2e2; border-radius:5px; display:none;}
.alert .alert-main{width:600px;height:200px;overflow-y: scroll;}
.alert-title{background:#009688; height:40px; text-align: center; line-height:40px; font-size:14px; border-bootom:1px solid #F2F2F2;color:#fff;}
.alert-main th{width:40%; border-left:none; text-align:right;}
.alert-main td{border-right:none; }
.alert-footer{padding:20px; text-align:center;}
.alert-footer span{padding:10px 30px; display:inline-block; border-radius:5px; cursor:pointer;}
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one actived" data-id="1">实时数据</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="x-body">
<div class="layui-row">
<form class="layui-form layui-col-md12 x-so float-left" action="/player/user_online" method="get">
<div class="layui-input-block" >
<select name="table_id" id="table_id">
<option value="-1" selected>请选择桌子</option>
{foreach name="$table_list" item="vo"}
<option value="{$vo.id}" <?php if(isset($get['table_id']) && $get['table_id'] == $vo['id']) {echo 'selected';} ?>>{$vo.table_name}</option>
{/foreach}
</select>
</div>
<input type="text" name="username" id="username" placeholder="请输入用户名" autocomplete="off" class="layui-input" value="<?php if(isset($get['username'])) {echo $get['username'];} ?>">
<div class="layui-form-item" style="margin-bottom: 0px;">
<label class="layui-form-label">只看未开</label>
<div class="layui-input-block">
<input type="radio" class="is_under" name="is_under" value="1" title="是" <?php if(isset($get['is_under']) && $get['is_under'] == 1) {echo 'checked';} ?>>
<input type="radio" class="is_under" name="is_under" value="0" title="否" <?php if(isset($get['is_under']) && $get['is_under'] == 0) {echo 'checked';} ?>>
</div>
</div>
<button class="layui-btn" lay-submit="" lay-filter="sreach"><i class="layui-icon">&#xe615;</i></button>
<!-- <span class="layui-btn" id="export">导出excel</span>
<span class="layui-btn" id="print">打印</span> -->
<span style="margin-left:20px;color:red;">数据标红则疑似对打</span>
</form>
</div>
<table class="layui-table">
<thead>
<tr>
<th>账号</th>
<th>登录客户端</th>
<th>登录IP</th>
<th>总押</th>
<th>总赢</th>
<th>当前余额</th>
<th>下注详情</th>
<th>操作</th>
</tr>
</thead>
<tbody class="ttable">
{foreach name="$user_online" item="vo"}
{if $vo.is_beat == 1}
<tr class="refreshData" style="background:red;">
{else}
<tr class="refreshData">
{/if}
<td>{$vo.username}</td>
<td>{$vo.client}</td>
<td>{$vo.last_login_ip}</td>
<td>{$vo.amount}</td>
<td>{$vo.win_total}</td>
<td>{$vo.money}</td>
<td>
{$vo.bet_detail_first.bet_detail}
{if condition="$vo.bet_detail_count > 1"}
<a href="javascript:;" onclick="showBetDetail(this)" data-username="{$vo.username}" data-bet_detail={$vo.bet_detail}><span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#009688;">更多</span></a>
{/if}
</td>
<td>
<a href="javascript:;">
<span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#009688;" onclick="logout({$vo.user_id})">强制下线</span>
</a>
</td>
</tr>
{/foreach}
<tr class="refreshData">
<th colspan="3" style="text-align: center;">统计</th>
<th>{$totalData.amount}</th>
<th>{$totalData.win_total}</th>
<th colspan="3"></th>
</tr>
</tbody>
</table>
</div>
<audio id="audio" hidden></audio>
<div class="alert" id="alert_bet_detail">
<div class="alert-title" id="show_username"></div>
<div class="alert-main">
<table class="layui-table" style="margin:0;">
<tr><th>押庄赔率:</th><td id="show_price_banker"></td></tr>
<tr><th>押闲赔率:</th><td id="show_price_player"></td></tr>
<tr><th>押和赔率(百家乐):</th><td id="show_price_tie_baccarat"></td></tr>
<tr><th>押对子赔率:</th><td id="show_price_pair"></td></tr>
<tr><th>押龙赔率:</th><td id="show_price_dragon"></td></tr>
<tr><th>押虎赔率:</th><td id="show_price_tiger"></td></tr>
<tr><th>押和赔率(龙虎斗):</th><td id="show_price_tie_dt"></td></tr>
<tr><th>押牛7-牛9赔率:</th><td id="show_price_n7_n9"></td></tr>
<tr><th>押牛牛赔率:</th><td id="show_price_nn"></td></tr>
<tr><th>押五公赔率:</th><td id="show_price_5n"></td></tr>
<tr><th>押四条赔率:</th><td id="show_price_bomb"></td></tr>
</table>
</div>
<div class="alert-footer">
<span onclick="hideBetDetail()" class="input_button" style="background:#009688; border:1px solid #e2e2e2;color:#fff;">关闭</span>
</div>
</div>
<script>
var b = {$betIdArrJson};
var bt = {$betIdDtArrJson};
autoRefresh();
function autoRefresh(){
setInterval(function(){
var username = $('#username').val();
var table_id = $('#table_id').val();
var is_under = $('.is_under:checked').val();
$.ajax({
url:'/player/user_online_autoRefresh',
data:{username:username,table_id:table_id,is_under:is_under},
dataType:'JSON',
type:'POST',
success:function(data){
// 声音
if(data.is_new == true){
audioShow();
}
if(data.user_online){
var total = data.totalData;
var v = data.user_online;
b = data.betIdArr;
bt = data.betIdDtArr;
var str = "";
for(var i=0; i<v.length; i++){
if(v[i]['is_beat'] == 1){
str += '<tr class="refreshData" style="background:red;">';
}else{
str += '<tr class="refreshData">';
}
str += '<td>'+v[i].username+'</td>';
str += '<td>'+v[i].client+'</td>';
str += '<td>'+v[i].last_login_ip+'</td>';
str += '<td>'+v[i].amount+'</td>';
str += '<td>'+v[i].win_total+'</td>';
str += '<td>'+v[i].money+'</td>';
str += '<td>'+v[i].bet_detail_first.bet_detail;
if(v[i].bet_detail_count > 1){
str += '<a href="javascript:;" onclick="showBetDetail(this)" data-username="'+v[i].username+'" data-bet_detail='+JSON.stringify(v[i].bet_detail)+'><span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#009688;">更多</span></a></td>';
}else{
str += '</td>';
}
str += '<td><a href="javascript:;"><span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#009688;" onclick="logout('+v[i].user_id+')">强制下线</span></a> </td>';
str += '</tr>';
}
str += '<tr class="refreshData">';
str += '<th colspan="3" style="text-align: center;">统计</th>';
str += '<th>'+total.amount+'</th>';
str += '<th>'+total.win_total+'</th>';
str += '<th colspan="3"></th>';
str += '</tr>';
$('.refreshData').remove();
$('.ttable').append(str);
}
}
});
},5000);
}
function showBetDetail(obj){
var username = $(obj).attr('data-username');
var bet_detail = $(obj).attr('data-bet_detail');
var v = JSON.parse(bet_detail);
var str = '';
console.log(v)
console.log(b.indexOf(47))
for(var i in v){
if(v[i]['game_id'] == 1 && b.includes(v[i]['bet_id'])){
str += '<tr style="background:red;"><td>'+ v[i]['bet_detail'] +'</td></tr>';
}else if(v[i]['game_id'] == 2 && bt.includes(v[i]['bet_id'])){
str += '<tr style="background:red;"><td>'+ v[i]['bet_detail'] +'</td></tr>';
}else{
str += '<tr><td>'+ v[i]['bet_detail'] +'</td></tr>';
}
}
$('#show_username').html(username);
$('#alert_bet_detail').find('.layui-table').empty().html(str);
$('#alert_bet_detail').show();
}
function hideBetDetail(){
$('#alert_bet_detail').hide();
}
// 踢人
function logout(id){
layer.confirm('确定强制该玩家下线吗?',function(){
$.ajax({
url:'/player/logout',
data:{user_id:id},
type:'POST',
dataType:'JSON',
success:function(data){
layer.alert(data.msg,function(){
location.reload();
})
}
});
});
}
// 新客人上线声音
function audioShow(){
var audio = $("#audio").get(0);
var audioPath = '/static/console/mp3/welcome.mp3';
$('#audio').attr('src',audioPath);
audio.play();
}
</script>
</body>
</html>