83 lines
6.2 KiB
PHP
83 lines
6.2 KiB
PHP
<?php use App\Core\I18n; I18n::init(); $t = function($k,$p=[]){return I18n::t($k,$p);};
|
|
// 投注翻译函数
|
|
function fmtBet($type,$val,$t){
|
|
if($type==='rank'&&preg_match('/^rank(\d+)_(\d+)$/',$val,$m)){$r=(int)$m[1];$rl=$r===1?$t('champion'):($r===2?$t('runner_up'):$t('rank_n',['n'=>$r]));return $rl.' #'.$m[2];}
|
|
if($type==='bs'&&preg_match('/^rank(\d+)_(big|small)$/',$val,$m)){$r=(int)$m[1];$rl=$r===1?$t('champion'):($r===2?$t('runner_up'):$t('rank_n',['n'=>$r]));return $rl.' '.($m[2]==='big'?$t('big'):$t('small'));}
|
|
if($type==='oe'&&preg_match('/^rank(\d+)_(odd|even)$/',$val,$m)){$r=(int)$m[1];$rl=$r===1?$t('champion'):($r===2?$t('runner_up'):$t('rank_n',['n'=>$r]));return $rl.' '.($m[2]==='odd'?$t('odd'):$t('even'));}
|
|
if($type==='dt'&&preg_match('/^dt(\d+)_(dragon|tiger)$/',$val,$m)){$ps=[1=>[1,10],2=>[2,9],3=>[3,8],4=>[4,7],5=>[5,6]];$p=$ps[(int)$m[1]]??[0,0];return $t('rank_n',['n'=>$p[0]]).'vs'.$t('rank_n',['n'=>$p[1]]).' '.($m[2]==='dragon'?$t('dragon'):$t('tiger'));}
|
|
if($type==='sum'&&preg_match('/^sum_(\d+)$/',$val,$m))return $t('sum').' '.$m[1];
|
|
if($type==='sum_bs'){$map=['sum_big'=>$t('sum_big'),'sum_small'=>$t('sum_small'),'sum_odd'=>$t('sum_odd'),'sum_even'=>$t('sum_even')];return $map[$val]??$val;}
|
|
return $type.':'.$val;
|
|
}
|
|
?>
|
|
<!DOCTYPE html><html lang="<?=I18n::getLang()?>">
|
|
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title><?=$t('bet_details')?></title>
|
|
<link rel="stylesheet" href="/Static/css/app.css">
|
|
<style>
|
|
.det-header{background:#fff;padding:16px 15px;box-shadow:0 2px 8px rgba(0,0,0,.04);position:sticky;top:0;z-index:100}
|
|
.det-tabs{display:flex;background:#fff;border-bottom:1px solid #F0F0F0;margin-top:0}
|
|
.det-tab{flex:1;text-align:center;padding:15px 0;font-size:15px;color:#666;cursor:pointer;position:relative;transition:all .3s;background:none;border:none}
|
|
.det-tab.active{color:#333;font-weight:600}
|
|
.det-tab.active::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:60px;height:3px;background:linear-gradient(90deg,#1E90FF,#4A9FFF);border-radius:2px}
|
|
.table-header{background:#fff;display:flex;padding:12px 15px;border-bottom:1px solid #F0F0F0;font-size:13px;color:#999}
|
|
.bet-row{background:#fff;display:flex;align-items:center;padding:14px 15px;border-bottom:1px solid #F5F5F5;transition:background .2s}
|
|
.bet-row:active{background:#FAFAFA}
|
|
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;background:#fff;min-height:50vh}
|
|
.empty-icon{width:80px;height:80px;border-radius:12px;background:#E8E8E8;display:flex;align-items:center;justify-content:center;margin-bottom:20px}
|
|
.empty-text{font-size:15px;color:#999}
|
|
.col-info{flex:1;min-width:0}.col-amount{flex:0 0 80px;text-align:right}.col-result{flex:0 0 70px;text-align:right}
|
|
.status-win{color:var(--success);font-weight:600}.status-lose{color:var(--danger);font-weight:600}.status-pending{color:var(--warn);font-weight:600}
|
|
</style>
|
|
</head>
|
|
<body style="background:#F5F5F5;padding-bottom:60px">
|
|
|
|
<div class="det-header">
|
|
<div style="font-weight:700;font-size:18px;color:#333"><?=$t('bet_details')?></div>
|
|
</div>
|
|
<div class="det-tabs">
|
|
<button class="det-tab active" onclick="showPanel('settled',this)"><?=$t('settled_details')?></button>
|
|
<button class="det-tab" onclick="showPanel('pending',this)"><?=$t('unsettled_details')?></button>
|
|
</div>
|
|
|
|
<div id="panelSettled">
|
|
<?php if(empty($settled)): ?>
|
|
<div class="empty-state"><div class="empty-icon"><svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#999" stroke-width="1.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg></div><div class="empty-text"><?=$t('no_data')?></div></div>
|
|
<?php else: ?>
|
|
<div class="table-header"><span class="col-info"><?=$t('play_type')?></span><span class="col-amount"><?=$t('amount')?></span><span class="col-result"><?=$t('result')?></span></div>
|
|
<?php foreach($settled as $b): ?>
|
|
<div class="bet-row">
|
|
<div class="col-info">
|
|
<div style="font-size:14px;color:#333;font-weight:500"><?=htmlspecialchars(fmtBet($b['bet_type'],$b['bet_value'],$t))?></div>
|
|
<div style="font-size:11px;color:#999;margin-top:2px"><?=$b['period_number']??''?> · <?=$b['created_at']??''?></div>
|
|
</div>
|
|
<div class="col-amount" style="font-size:14px;color:#333"><?=number_format((float)$b['amount'],2)?><br><span style="font-size:10px;color:#999">x<?=$b['odds']??''?></span></div>
|
|
<div class="col-result"><span class="status-<?=$b['status']?>"><?=$b['status']==='win'?'+'.number_format((float)$b['win_amount'],2):($b['status']==='lose'?'-'.number_format((float)$b['amount'],2):$b['status'])?></span></div>
|
|
</div>
|
|
<?php endforeach; endif; ?>
|
|
</div>
|
|
|
|
<div id="panelPending" class="hidden">
|
|
<?php if(empty($pending)): ?>
|
|
<div class="empty-state"><div class="empty-icon"><svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#999" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg></div><div class="empty-text"><?=$t('no_data')?></div></div>
|
|
<?php else: ?>
|
|
<div class="table-header"><span class="col-info"><?=$t('play_type')?></span><span class="col-amount"><?=$t('amount')?></span><span class="col-result"><?=$t('status')?></span></div>
|
|
<?php foreach($pending as $b): ?>
|
|
<div class="bet-row">
|
|
<div class="col-info">
|
|
<div style="font-size:14px;color:#333;font-weight:500"><?=htmlspecialchars(fmtBet($b['bet_type'],$b['bet_value'],$t))?></div>
|
|
<div style="font-size:11px;color:#999;margin-top:2px"><?=$b['period_number']??''?> · <?=$b['created_at']??''?></div>
|
|
</div>
|
|
<div class="col-amount" style="font-size:14px;color:#333"><?=number_format((float)$b['amount'],2)?><br><span style="font-size:10px;color:#999">x<?=$b['odds']??''?></span></div>
|
|
<div class="col-result"><span class="status-pending"><?=$t('awaiting_draw')?></span></div>
|
|
</div>
|
|
<?php endforeach; endif; ?>
|
|
</div>
|
|
|
|
<?php $navActive='details'; include __DIR__.'/_nav.php'; ?>
|
|
|
|
<script>
|
|
function showPanel(id,btn){document.getElementById('panelSettled').classList.toggle('hidden',id!=='settled');document.getElementById('panelPending').classList.toggle('hidden',id!=='pending');document.querySelectorAll('.det-tab').forEach(t=>t.classList.remove('active'));btn.classList.add('active');}
|
|
</script>
|
|
</body></html>
|