game_info.blade.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. @extends('base.base')
  2. @section('base')
  3. <style>
  4. /* 移动端优化样式 */
  5. @media screen and (max-width: 991px) {
  6. /* 让卡片内的表格可以横向滚动 */
  7. .card-body {
  8. overflow-x: auto !important;
  9. -webkit-overflow-scrolling: touch !important;
  10. }
  11. /* 表格基础样式 */
  12. .table-bordered {
  13. font-size: 0.75rem !important;
  14. margin-bottom: 1rem !important;
  15. min-width: 600px; /* 确保表格有最小宽度才能滚动 */
  16. }
  17. .table-bordered td,
  18. .table-bordered th {
  19. white-space: nowrap !important;
  20. padding: 0.4rem 0.5rem !important;
  21. vertical-align: middle !important;
  22. }
  23. /* 固定第一列 */
  24. .table-bordered td:first-child,
  25. .table-bordered th:first-child {
  26. position: sticky;
  27. left: auto;
  28. background: #fff;
  29. z-index: 2;
  30. box-shadow: 2px 0 5px rgba(0,0,0,0.05);
  31. }
  32. .table-bordered thead th:first-child {
  33. z-index: 3;
  34. background: #f8f9fa;
  35. }
  36. /* 处理使用float的单元格内容 */
  37. .table-bordered td > div[style*="float"] {
  38. display: inline-block;
  39. float: left;
  40. margin-right: 0.5rem;
  41. }
  42. /* 清除浮动 */
  43. .table-bordered td > div::after {
  44. content: "";
  45. display: table;
  46. clear: both;
  47. }
  48. }
  49. @media screen and (max-width: 576px) {
  50. .table-bordered {
  51. font-size: 0.7rem !important;
  52. }
  53. .table-bordered td,
  54. .table-bordered th {
  55. padding: 0.3rem 0.4rem !important;
  56. }
  57. }
  58. </style>
  59. <style>
  60. /* 移动端优化样式 */
  61. @media screen and (max-width: 991px) {
  62. /* 卡片内容区域可横向滚动 */
  63. .card-body {
  64. overflow-x: auto !important;
  65. -webkit-overflow-scrolling: touch !important;
  66. }
  67. /* 表格基础样式 */
  68. .table-bordered {
  69. font-size: 0.75rem !important;
  70. margin-bottom: 1rem !important;
  71. width: max-content !important;
  72. min-width: 100% !important;
  73. }
  74. .table-bordered td,
  75. .table-bordered th {
  76. white-space: nowrap !important;
  77. padding: 0.5rem !important;
  78. vertical-align: middle !important;
  79. }
  80. /* 嵌套表格样式 */
  81. .nested-table {
  82. width: 100%;
  83. margin: 0;
  84. }
  85. .nested-table td {
  86. padding: 0.3rem !important;
  87. font-size: 0.7rem !important;
  88. border: none !important;
  89. }
  90. .nested-table .label-row td {
  91. font-weight: 500;
  92. color: #666;
  93. }
  94. .nested-table .value-row td {
  95. font-weight: 600;
  96. color: #000;
  97. }
  98. }
  99. </style>
  100. <style>
  101. /* 移动端优化样式 */
  102. @media screen and (max-width: 991px) {
  103. /* 卡片内容区域可横向滚动 */
  104. .card-body {
  105. overflow-x: auto !important;
  106. -webkit-overflow-scrolling: touch !important;
  107. }
  108. /* 表格基础样式 */
  109. .table-bordered {
  110. font-size: 0.75rem !important;
  111. margin-bottom: 1rem !important;
  112. width: max-content !important;
  113. min-width: 100% !important;
  114. }
  115. .table-bordered td,
  116. .table-bordered th {
  117. white-space: nowrap !important;
  118. padding: 0.5rem !important;
  119. vertical-align: middle !important;
  120. }
  121. /* 嵌套表格样式 */
  122. .nested-table {
  123. width: 100%;
  124. margin: 0;
  125. }
  126. .nested-table td {
  127. padding: 0.3rem !important;
  128. font-size: 0.7rem !important;
  129. border: none !important;
  130. }
  131. .nested-table .label-row td {
  132. font-weight: 500;
  133. color: #666;
  134. }
  135. .nested-table .value-row td {
  136. font-weight: 600;
  137. color: #000;
  138. }
  139. }
  140. </style>
  141. <!-- 内容区域 -->
  142. <div class="main-panel">
  143. <div class="content-wrapper">
  144. <div class="page-header">
  145. <h3 class="page-title">
  146. <span class="page-title-icon bg-gradient-primary text-white mr-2">
  147. <i class="mdi mdi-settings"></i>
  148. </span>
  149. {{ __('auto.游戏概括') }}
  150. </h3>
  151. <nav aria-label="breadcrumb">
  152. <ol class="breadcrumb">
  153. <li class="breadcrumb-item"><a href="#">{{ __('auto.实时数据') }}</a></li>
  154. <li class="breadcrumb-item active" aria-current="page">{{ __('auto.游戏概括') }}</li>
  155. </ol>
  156. </nav>
  157. </div>
  158. <div class="row">
  159. <div class="col-lg-12 grid-margin stretch-card" style=";margin:10px 0;padding:0">
  160. <div class="card">
  161. <div class="card-body">
  162. <table class="table table-bordered">
  163. <tr>
  164. <th><a href="/admin/withdrawal/waitWithdrawal">{{ __('auto.待处理茶叶') }}</a>
  165. </th>
  166. <th>{{ __('auto.申请:') }}
  167. {{$applyUserCount->userCount ?? 0}} {{ __('auto.人') }} {{$applyUserCount->count ?? 0}}
  168. {{ __('auto.笔') }}&nbsp;&nbsp;{{ __('auto.总计:') }}{{$applyUserCount->WithDraw ?? 0}} &nbsp;&nbsp;
  169. </th>
  170. <th><a href="/admin/complaint/opinion"> 24{{ __('auto.小时内客服') }}</a>
  171. </th>
  172. <th>{{ __('auto.未回复总计:') }}{{$message->count}}{{ __('auto.条') }} {{ __('auto.已回复:') }}{{$message->replycount}}{{ __('auto.条') }}
  173. {{ __('auto.已读:') }}{{$message->readcount}}{{ __('auto.条') }}
  174. </th>
  175. </tr>
  176. </table>
  177. <table class="table table-bordered">
  178. <tbody>
  179. @foreach($alldata['plays'] as $item)
  180. <tr>
  181. <td><a href="{{$item['url']}}" target="_blank">{{$item['name']}}</a></td>
  182. <td>{{ $item['package'] ?? '' }}</td>
  183. <td>
  184. @if($item['status']==200)
  185. <span class="text-success">{{ __('auto.运行中') }}</span>
  186. @else
  187. <span class="text-danger">{{ __('auto.下架') }}</span>
  188. @endif
  189. </td>
  190. <td>
  191. @if(isset($item['downtime']))
  192. ({{ __('auto.下架时间') }}:<?php echo date("m-d H:i",$item['downtime'])?>)
  193. @elseif(isset($item['uptime']))
  194. ({{ __('auto.上架时间') }}:<?php echo date("m-d H:i",$item['uptime'])?>)
  195. @endif
  196. </td>
  197. </tr>
  198. @endforeach
  199. </tbody>
  200. </table>
  201. <table class="table table-bordered">
  202. <tbody>
  203. @foreach($dataGropSums as $channel=>$item)
  204. @if (isset($alldata[$channel])&&$data=$alldata[$channel])
  205. <tr>
  206. <td width="20%"><span class="card-title">{{$Channels[$channel]}}({{$channel}})</span></td>
  207. <td width="12%">{{ __('auto.新增:') }}&nbsp;{{$data['today_register']}}<span style="font-size:0.7em;color:<?php echo intval($data['new_rhb'])>=0?"green":"red" ?>">({{$data['new_rhb']}})</span></td>
  208. <td width="10%">d0:&nbsp;{{$data['d0_day_pay_count']}}<span style="font-size:0.7em;color:<?php echo intval($data['d0_day_pay_rhb'])>=0?"green":"red" ?>">({{$data['d0_day_pay_rhb']}})</span></td>
  209. <td width="21%">{{ __('auto.充值:') }}&nbsp;{{$data['today_pay_sum']}}<span style="font-size:0.7em;color:<?php echo intval($data['pay_sum_rhb'])>=0?"green":"red" ?>">({{$data['pay_sum_rhb']}})</span>(U:{{$data['today_pay_sum_u']}})</td>
  210. <td width="22%">{{ __('auto.付费人数/新增:') }}&nbsp;{{$data['today_pay_count']}}/{{$data['day_pay_count']}}</td>
  211. <td width="15%">{{ __('auto.日活:') }}&nbsp;{{$data['today_live']}}</td>
  212. </tr>
  213. @endif
  214. @endforeach
  215. </tbody>
  216. </table>
  217. </div>
  218. </div>
  219. </div>
  220. @foreach($adminChannels as $channel)
  221. @if (isset($alldata[$channel])&&$data=$alldata[$channel])
  222. <div class="col-lg-12 grid-margin stretch-card" id="short_{{$channel}}"
  223. style="display: block;margin:0;padding:0" onclick="openBoard({{$channel}})">
  224. <div class="card" style=";margin:0;padding:0">
  225. <div class="card-body" style=";margin:0;padding:0 10px">
  226. <table
  227. class="table table-bordered">
  228. <tr>
  229. <td width="20%"><span class="card-title">({{$channel}}){{$Channels[$channel]??$channel}}</span></td>
  230. <td width="12%">{{ __('auto.新增:') }}&nbsp;{{$data['today_register']}}<span style="font-size:0.7em;color:<?php echo intval($data['new_rhb'])>=0?"green":"red" ?>">({{$data['new_rhb']}})</span></td>
  231. <td width="10%">d0:&nbsp;{{$data['d0_day_pay_count']}}<span style="font-size:0.7em;color:<?php echo intval($data['d0_day_pay_rhb'])>=0?"green":"red" ?>">({{$data['d0_day_pay_rhb']}})</span></td>
  232. <td width="21%">{{ __('auto.充值:') }}&nbsp;{{$data['today_pay_sum']}}<span style="font-size:0.7em;color:<?php echo intval($data['pay_sum_rhb'])>=0?"green":"red" ?>">({{$data['pay_sum_rhb']}})</span></td>
  233. <td width="22%">{{ __('auto.付费人数/新增:') }}&nbsp;{{$data['today_pay_count']}}/{{$data['day_pay_count']}}</td>
  234. <td width="15%">{{ __('auto.日活:') }}&nbsp;{{$data['today_live']}}</td>
  235. </tr>
  236. </table>
  237. </div>
  238. </div>
  239. </div>
  240. <div class="col-lg-12 grid-margin stretch-card" id="expend_{{$channel}}"
  241. style="display: none;margin:10px 0;padding:0" onclick="closeBoard({{$channel}})">
  242. <div class="card">
  243. <div class="card-body">
  244. <h4 class="card-title">({{$channel}}){{$Channels[$channel]??$channel}}</h4>
  245. <table class="table table-bordered">
  246. <thead>
  247. <tr>
  248. <th width="23%">{{ __('auto.新增用户') }}</th>
  249. <th width="23%">{{ __('auto.参游比') }}</th>
  250. <th width="18%">{{ __('auto.日活跃用户') }}</th>
  251. <th width="18%">{{ __('auto.周活跃用户') }}</th>
  252. <th width="18%">{{ __('auto.月活跃用户') }}</th>
  253. </tr>
  254. </thead>
  255. <tbody>
  256. <tr>
  257. <td width="23%">
  258. <table class="nested-table table-sm table-borderless">
  259. <tr class="label-row">
  260. <td width="33%">{{ __('auto.今日新增') }}</td>
  261. <td width="33%">{{ __('auto.即时日环比') }}</td>
  262. <td width="34%">{{ __('auto.昨日总新增') }}</td>
  263. </tr>
  264. <tr class="value-row">
  265. <td>{{$data['today_register']}}</td>
  266. <td>{{$data['new_rhb']}}</td>
  267. <td>{{$data['yesterday_register']}}</td>
  268. </tr>
  269. </table>
  270. </td>
  271. <td width="23%">
  272. <table class="nested-table table-sm table-borderless">
  273. <tr class="label-row">
  274. <td width="33%">{{ __('auto.今日参游') }}</td>
  275. <td width="33%">{{ __('auto.日对比') }}</td>
  276. <td width="34%">{{ __('auto.昨日参游') }}</td>
  277. </tr>
  278. <tr class="value-row">
  279. <td>{{$data['today_play_rate']}}%</td>
  280. <td>{{$data['play_rhb']}}</td>
  281. <td>{{$data['yesterday_play_rate']}}%</td>
  282. </tr>
  283. </table>
  284. </td>
  285. <td width="18%">
  286. <table class="nested-table table-sm table-borderless">
  287. <tr class="label-row">
  288. <td width="50%">{{ __('auto.本日') }}</td>
  289. <td width="50%">{{ __('auto.日环比') }}</td>
  290. </tr>
  291. <tr class="value-row">
  292. <td>{{$data['today_live']}}</td>
  293. <td>{{$data['live_rhb']}}</td>
  294. </tr>
  295. </table>
  296. </td>
  297. <td width="18%">
  298. <table class="nested-table table-sm table-borderless">
  299. <tr class="label-row">
  300. <td width="50%">{{ __('auto.本周') }}</td>
  301. <td width="50%">{{ __('auto.周环比') }}</td>
  302. </tr>
  303. <tr class="value-row">
  304. <td>{{$data['week_login']}}</td>
  305. <td>{{$data['week_rhb']}}</td>
  306. </tr>
  307. </table>
  308. </td>
  309. <td width="18%">
  310. <table class="nested-table table-sm table-borderless">
  311. <tr class="label-row">
  312. <td width="50%">{{ __('auto.本月') }}</td>
  313. <td width="50%">{{ __('auto.月环比') }}</td>
  314. </tr>
  315. <tr class="value-row">
  316. <td>{{$data['month_login']}}</td>
  317. <td>{{$data['month_rhb']}}</td>
  318. </tr>
  319. </table>
  320. </td>
  321. </tr>
  322. </tbody>
  323. </table>
  324. <table>
  325. <div align="center" style=" padding: 10px;">{{ __('auto.总注册用户:') }}{{$data['user_count']}},{{ __('auto.休眠用户:') }}{{$data['dormancy_user']}}</div>
  326. </table>
  327. @if (hidden() != 'service')
  328. <table class="table table-bordered">
  329. <thead>
  330. <tr>
  331. <th width="22%">{{ __('auto.充值金额') }}</th>
  332. <th width="21%">{{ __('auto.付费人数') }}</th>
  333. <th width="21%">d0{{ __('auto.付费人数') }}</th>
  334. <th width="21%">{{ __('auto.新增付费人数') }}</th>
  335. <th width="15%">ltv</th>
  336. </tr>
  337. </thead>
  338. <tbody>
  339. <tr>
  340. <td width="22%">
  341. <table class="nested-table table-sm table-borderless">
  342. <tr class="label-row">
  343. <td width="33%">{{ __('auto.今日充值') }}</td>
  344. <td width="33%">{{ __('auto.即时环比') }}</td>
  345. <td width="34%">{{ __('auto.昨日总额') }}</td>
  346. </tr>
  347. <tr class="value-row">
  348. <td>{{$data['today_pay_sum']}}</td>
  349. <td>{{$data['pay_sum_rhb']}}</td>
  350. <td>{{$data['yesterday_pay_sum']}}</td>
  351. </tr>
  352. </table>
  353. </td>
  354. <td width="21%">
  355. <table class="nested-table table-sm table-borderless">
  356. <tr class="label-row">
  357. <td width="33%">{{ __('auto.本日') }}</td>
  358. <td width="33%">{{ __('auto.即时环比') }}</td>
  359. <td width="34%">{{ __('auto.昨日总数') }}</td>
  360. </tr>
  361. <tr class="value-row">
  362. <td>{{$data['today_pay_count']}}</td>
  363. <td>{{$data['pay_count_rhb']}}</td>
  364. <td>{{$data['yesterday_pay_count']}}</td>
  365. </tr>
  366. </table>
  367. </td>
  368. <td width="21%">
  369. <table class="nested-table table-sm table-borderless">
  370. <tr class="label-row">
  371. <td width="33%">d0</td>
  372. <td width="33%">{{ __('auto.即时环比') }}</td>
  373. <td width="34%">{{ __('auto.昨日') }}d0</td>
  374. </tr>
  375. <tr class="value-row">
  376. <td>{{$data['d0_day_pay_count']}}</td>
  377. <td>{{$data['d0_day_pay_rhb']}}</td>
  378. <td>{{$data['d0_yday_pay_count']}}</td>
  379. </tr>
  380. </table>
  381. </td>
  382. <td width="21%">
  383. <table class="nested-table table-sm table-borderless">
  384. <tr class="label-row">
  385. <td width="33%">{{ __('auto.本日') }}</td>
  386. <td width="33%">{{ __('auto.即时环比') }}</td>
  387. <td width="34%">{{ __('auto.昨日总新') }}</td>
  388. </tr>
  389. <tr class="value-row">
  390. <td>{{$data['day_pay_count']}}</td>
  391. <td>{{$data['day_pay_rhb']}}</td>
  392. <td>{{$data['yday_pay_count']}}</td>
  393. </tr>
  394. </table>
  395. </td>
  396. <td width="15%">
  397. <table class="nested-table table-sm table-borderless">
  398. <tr class="label-row">
  399. <td width="50%">d0_ltv</td>
  400. <td width="50%">{{ __('auto.昨日') }}ltv</td>
  401. </tr>
  402. <tr class="value-row">
  403. <td>{{$data['d0_day_pay']['ltv_now']}}</td>
  404. <td>{{$data['yes_day_pay']['ltv_now']}}</td>
  405. </tr>
  406. </table>
  407. </td>
  408. </tr>
  409. </tbody>
  410. </table>
  411. <table>
  412. <div align="center">
  413. <a style="width: 20%" href="/admin/recharge/rank?start_time={{$alldata['time']}}&end_time={{$alldata['time']}}&Channel={{$channel}}" class="btn btn-sm btn-gradient-info btn-icon-text">{{ __('auto.今日充值排行榜') }}</a>
  414. <a style="width: 20%" href="/admin/recharge/list?&Channel={{$channel}}" class="btn btn-sm btn-gradient-info btn-icon-text">{{ __('auto.各档位充值明细') }}</a>
  415. </div>
  416. </table>
  417. @endif
  418. </div>
  419. </div>
  420. </div>
  421. @endif
  422. @endforeach
  423. </div>
  424. </div>
  425. </div>
  426. <script>
  427. function openBoard(channel){
  428. $('#expend_'+channel).show();
  429. $('#short_'+channel).hide();
  430. }
  431. function closeBoard(channel){
  432. $('#expend_'+channel).hide();
  433. $('#short_'+channel).show();
  434. }
  435. $(function(){
  436. cutStr(50);
  437. });
  438. // function update(id){
  439. // myConfirm("是否继续?",function(){
  440. // var nullity= document.getElementById('nullity').value;
  441. // myRequest("/admin/user/freeze/"+id,"post",{nullity:nullity},function(res){
  442. // layer.msg(res.msg)
  443. // setTimeout(function(){
  444. // window.location.reload();
  445. // },1500)
  446. // });
  447. // });
  448. // }
  449. setInterval(function (){
  450. window.location.reload();
  451. },300000)
  452. </script>
  453. @endsection