Files
Socket/app/handle/view/index/tab_roulette.html
T
testadmin d77c6beac7 feat: add logging module for backend + frontend error reporting
Backend:
- New Logger utility (app/utils/Logger.php) with category-based log files
  (connect/game/bet/error/frontend under runtime/log/)
- Log WebSocket connect/close events (WsConnect, WsClose)
- Log dealer auth success/failure (SpaceConnectService)
- Log all game events: startBet, endBet, changeBoot, opening for all 7 game types
- Log unhandled exceptions (ExceptionHandle)
- Separate SQL/error logs via apart_level, enable realtime_write for Swoole
- Add /log/report POST endpoint for frontend error ingestion

Frontend:
- New error-report.js with window.onerror + unhandledrejection auto-reporting
- Added to all 12 dealer HTML templates
- Bump VERSION_V to v10.1.0
2026-05-14 11:28:33 +08:00

133 lines
6.2 KiB
HTML
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.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>荷官端</title>
<link rel="stylesheet" type="text/css" href="/static/handle/css/reset.css{$Think.VERSION_V}">
<link rel="stylesheet" type="text/css" href="/static/handle/css/common.css{$Think.VERSION_V}">
<script type="text/javascript">
var casinoTableId = "{$table.table_num}";
var localSbServer="{$localSbServer}";
var scanner_type = "{$table.scanner_type}";
var websocketUrl="{$websocketUrl}";
var websocketProtocol="{$websocketProtocol}";
var wait_time = "{$table.wait_time}";
var table_type = "{$table.table_type}";
var bet_type = "{$table.bet_type}";
var lang;
var flvUrl="{$table.media_far_rtmp}";
var player="{$player}";
var interval_time="{$table.interval_time}";
</script>
</head>
<body>
<audio id="audio"></audio>
<section class="section">
<div class="top-sec">
<div class="gra-btn countdown" >
<div class="grab-count">
</div>
<div class="gc round-txt-item num"></div>
</div>
<!-- 视频-->
<div class="video-sec fl">
<div class="table-data">
<div class="head box-sizing">
<div class="box">
<div class="clearfix">
<div class="date"><div>{:lang('now_time')}:<span class="weekend"> 周四</span><span class="time"></span></div> </div>
</div>
<div class="list clearfix">
<div class="item input-box" ><label>{:lang('boot')}:</label><span id="boot_num" ></span></div>
<div class="item input-box m0" ><label>{:lang('number')}:</label><span id="number"></span></div>
</div>
</div>
</div>
<div class="lan-box clearfix">
<div class="item fl" style="opacity:0">
<span>{:lang('online_number')}</span>
<small id="onlineNumber">0</small>
</div>
</div>
</div>
<iframe class="video-iframe" id="video-iframe"></iframe>
</div>
<div class="table-info fr">
<div class="t-logo">
<span id="show-status-span"></span>
<img id="t-logo-img" src="{$logoPath}" />
<div class="t-logo-tit"><span>{$table.table_name}</span></div>
</div>
<div class="nobegin-tip"></div>
</div>
</div>
<!-- 导航结速-->
<div class="footer">
<div class="canvas-box big">
<canvas id="canvas3"></canvas>
<input type="hidden" id="wait_time" value="{$table.wait_time}">
</div>
</div>
</section>
<section class="control-box noselect">
<div class="slide-btn">《</div>
<div clss="btn-box0" style="padding:5vh 0 3vh 0">
<select class="green_bg" id="language">
<option value="cn" <?php if(isset($langType) && $langType == 'zh-cn') echo 'selected="selected"'; ?> >简体中文</option>
<option value="tw" <?php if(isset($langType) && $langType == 'zh-tw') echo 'selected="selected"'; ?> >繁體中文</option>
<option value="en" <?php if(isset($langType) && $langType == 'en-us') echo 'selected="selected"'; ?> >English</option>
</select>
</div>
<div class="btn-box1" style="padding-top:0;">
<span class="green_bg" id="start_bet" onclick="startBet()">{:lang('start')}</span>
<span class="red_bg" id="end_bet" onclick="endBet()">{:lang('end')}</span>
</div>
<div class="btn-box4">
<span onclick="resetNumberTab()">{:lang('reset_number')}</span>
<span onclick="changeBoot()">{:lang('change_boot')}</span>
<span onclick="resetBoot()">{:lang('close_boot')}</span>
<span onclick="loginout()">{:lang('logout')}</span>
</div>
</section>
<div class="roulette-result-box" id="roulette_result_box">
<div class="roulette-result">
<div class="roulette-result-item">
<div class="roulette-result-num"></div>
</div>
</div>
</div>
<style>
@keyframes fade {from {opacity: 1.0;}50% {opacity: 0.4;}to {opacity: 1.0;}}
@-webkit-keyframes fade {from {opacity: 1.0;}50% {opacity: 0.4;}to {opacity: 1.0;}}
.flicker{animation: fade 600ms infinite; -webkit-animation: fade 600ms infinite;}
.roulette-result-box{width: 100vw; height: 100vh; position: fixed; left: 0; top: 0; z-index: 1; background-color:rgba(0,0,0,0.5); display: none;}
.roulette-result{width: 80%; height: 420px; position: absolute; top: 30%; left: 10%; text-align: center}
.roulette-result-item .roulette-result-num{cursor: pointer; border: 10px solid #FFFFFF; display: inline-block; width: 400px; height: 300px; background: #0b6140; margin-right: 60px; font-size: 320px; font-weight: bold; line-height: 300px; color: #F75748;}
.roulette-result-item .roulette-result-num.active{border-color: #F75748 !important;animation: fade 400ms infinite; -webkit-animation: fade 400ms infinite;}
</style>
<input type="hidden" id="roulette_result" value="">
<input type="hidden" id="login_token" value="{$login_token}">
<input type="hidden" id="account" value="{$user.username}">
<input type="hidden" id="userid" value="{$user.id}">
<input type="hidden" id="number_tab_status">
<input type="hidden" id="table_id" value="{$table.id}">
<input type="hidden" id="game_id" value="{$table.game_id}">
<input type="hidden" id="is_scavenging" value="{$table.is_scavenging}">
<input type="hidden" id="boot_id" value="">
<input type="hidden" id="bet_type" value="{$table.bet_type}">
<input type="hidden" id="keycode" value="">
<script type="text/javascript" src="/static/handle/js/jquery-2.1.0.min.js"></script>
<script type="text/javascript" src="/static/handle/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/static/handle/js/layer-v3.1.1/layer.js"></script>
<script type="text/javascript" src="/static/handle/js/socket.io-1.4.4.js"></script>
<script type="text/javascript" src="/static/handle/js/error-report.js{$Think.VERSION_V}"></script>
<script type="text/javascript" src="/static/handle/js/handle_roulette.js{$Think.VERSION_V}"></script>
</body>
</html>