user.html 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. {extend name="layout/content" /}
  2. {block name="header"}
  3. <link rel="stylesheet" href="__STATIC__/css/FuzzySearch.css?v={$Think.STATIC_VERSION}">
  4. <title>用户充值列表</title>
  5. <style>
  6. label {
  7. padding-top: 10px;
  8. margin-left: 10px;
  9. }
  10. .x-so {
  11. text-align: unset;
  12. margin-bottom: 20px;
  13. }
  14. section {
  15. margin-top: 10px;
  16. display: flex;
  17. }
  18. .showPassword{
  19. cursor: pointer;
  20. text-decoration: underline;
  21. color: blue;
  22. }
  23. </style>
  24. {/block}
  25. {block name="content"}
  26. <div class="x-body">
  27. <form class="layui-form">
  28. <div>
  29. <div class="layui-inline">
  30. <label for="start">开始时间:</label>
  31. <div class="layui-input-inline">
  32. <input class="layui-input" placeholder="开始日" value="{$start}" name="start" id="start" autocomplete="off">
  33. </div>
  34. </div>
  35. <div class="layui-inline">
  36. <label for="end">结束时间:</label>
  37. <div class="layui-input-inline">
  38. <input class="layui-input" placeholder="截止日" value="{$end}" name="end" id="end">
  39. </div>
  40. </div>
  41. <div class="layui-inline">
  42. <label for="playerAcount">玩家账号:</label>
  43. <div class="layui-input-inline">
  44. <input class="layui-input" placeholder="" name="username" value="{$Request.get.username}" id="playerAcount">
  45. </div>
  46. </div>
  47. <div class="layui-inline">
  48. <label>游戏:</label>
  49. <!-- <div class="layui-input-inline FuzzySearch_Container">-->
  50. <!-- <div>-->
  51. <!-- <input type="hidden" id='J_gameid' name="gameid" value="{$Request.get.gameid}" />-->
  52. <!-- </div>-->
  53. <!-- </div>-->
  54. <div class="layui-input-inline" style="width: 200px">
  55. <div id="game"></div>
  56. <!-- <input type="hidden" class="game_id" name='gameid' value="{$Request.get.gameid}"/>-->
  57. </div>
  58. </div>
  59. <div class="layui-inline" style="margin-left: 10px;">
  60. <button class="layui-btn" type="submit" id="J_search_submit">查询</button>
  61. <button type="button" onClick="window.location.href = '{url(\'pay/user\')}'" class="layui-btn layui-btn-primary">重置</button>
  62. <a class="layui-btn" href="javascript:void(0);" onclick="reportDownload();">下载报表</a>
  63. </div>
  64. </div>
  65. <table class="layui-table" lay-filter="listData">
  66. <thead>
  67. <tr>
  68. <th lay-data="{field:'userid'}">账户ID</th>
  69. <th lay-data="{field:'username'}">充值账号</th>
  70. <th lay-data="{field:'amount_total', sort:true}">实际支付</th>
  71. <th lay-data="{field:'pay_total'}">累计充值次数</th>
  72. <th lay-data="{field:'recent_pay'}">最近充值实付金额</th>
  73. <th lay-data="{field:'gameid'}">游戏名</th>
  74. </tr>
  75. </thead>
  76. <tbody>
  77. {empty name="list"}
  78. <tr>
  79. <td colspan="20" style="text-align: center;">暂无数据</td>
  80. </tr>
  81. {else/}
  82. {volist name="list" id="vo"}
  83. <tr>
  84. <!-- <td id="J_td_{$i}"><a class="showPassword" href="javascript:void(0);" onclick="showUsername({$vo.userid},{$i})">{:stringObfuscation($vo.username)}</a></td>-->
  85. <td>{$vo.userid}</td>
  86. <td id="J_td_{$i}">{$vo.username}</td>
  87. <td>{$vo.amount_total}</td>
  88. <td>{$vo.pay_total}</td>
  89. <td>{$vo.recent_pay}</td>
  90. <td>{$game_list_by_ids[$vo.gameid]['name']}</td>
  91. </tr>
  92. {/volist}
  93. {/empty}
  94. </tbody>
  95. </table>
  96. <div class="pager-container" style="margin-top:10px;">
  97. <span>
  98. {$list->total()}条记录
  99. </span>
  100. {$page}
  101. <div class="layui-inline" style="margin:0;margin-left:10px;width:80px;">
  102. <input type="text" style="height: 30px;" class="layui-input" placeholder="跳转至" name="page" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')">
  103. </div>
  104. </div>
  105. </form>
  106. </div>
  107. {/block}
  108. {block name="footer"}
  109. <script type="text/javascript" src="__STATIC__/js/FuzzySearch.js?v={$Think.STATIC_VERSION}"></script>
  110. <script type="text/javascript" charset="utf-8" src="__STATIC__/lib/xm-select.js"></script>
  111. <script async>
  112. /**
  113. * 获取当前 URL 并替换或添加参数
  114. * @param {string} paramName - 参数名
  115. * @param {string} paramValue - 参数值
  116. * @returns {string} - 更新后的完整 URL
  117. */
  118. function updateUrlParam(paramName, paramValue) {
  119. // 获取当前 URL 的路径和查询参数
  120. const url = new URL(window.location.href);
  121. // 使用 URLSearchParams 处理查询参数
  122. const searchParams = new URLSearchParams(url.search);
  123. // 替换或添加参数
  124. if (paramName && paramValue !== undefined) {
  125. searchParams.set(paramName, paramValue);
  126. }
  127. // 更新 URL 的查询参数
  128. url.search = searchParams.toString();
  129. // 返回完整的 URL
  130. return url.toString();
  131. }
  132. // $("#J_gameid").FuzzySearch({
  133. //
  134. // inputID : 'J_gameid',
  135. // title : '请输入游戏名称',
  136. // data :{:json_encode($game_list)},
  137. // searchBtn :'J_search_submit',
  138. // });
  139. layui.use(['laydate', 'table'], function () {
  140. var laydate = layui.laydate;
  141. var starttime = laydate.render({
  142. elem: '#start',
  143. type: 'date',
  144. format: 'yyyy-MM-dd',
  145. done: function (value, dates) {
  146. endtime.config.min = {
  147. year: dates.year,
  148. month: dates.month - 1, //关键
  149. date: dates.date,
  150. hours: 0,
  151. minutes: 0,
  152. seconds: 0
  153. };
  154. }
  155. });
  156. var endtime = laydate.render({
  157. elem: '#end',
  158. type: 'date',
  159. format: 'yyyy-MM-dd',
  160. done: function (value, dates) {
  161. starttime.config.max = {
  162. year: dates.year,
  163. month: dates.month - 1,//关键
  164. date: dates.date,
  165. hours: 0,
  166. minutes: 0,
  167. seconds: 0
  168. }
  169. }
  170. });
  171. var table = layui.table;
  172. table.init('listData', {limit: 20, autoSort: false});
  173. //触发排序事件
  174. table.on('sort(listData)', function(obj){ //注:sort 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
  175. console.log(obj.field); //当前排序的字段名
  176. console.log(obj.type); //当前排序类型:desc(降序)、asc(升序)、null(空对象,默认排序)
  177. window.location.href = updateUrlParam(obj.field, obj.type);
  178. });
  179. });
  180. //显示全部姓名
  181. function showUsername(userid,id)
  182. {
  183. $.ajax({
  184. type: "post",
  185. data: {'userid':userid},
  186. url: "{:url('showUsername')}",
  187. dataType: "json",
  188. timeOut: 10,
  189. success: function (result) {
  190. if(result.code) {
  191. $('#J_td_'+id).html(result.data);
  192. }else{
  193. layer.alert(result.msg, {icon: 5});
  194. }
  195. },
  196. error: function () {
  197. layer.alert('网络错误,请刷新页面重试!', {icon: 2});
  198. }
  199. });
  200. }
  201. var tagData1 = {:json_encode($game_list)}; // 获取到后台给出的数据-PHP写法
  202. var LeftData = ''
  203. var tagIns1 = xmSelect.render({
  204. el: '#game', // div的id值
  205. toolbar: { // 工具条【‘全选’,‘清空’】
  206. show: true, // 开启工具条
  207. showIcon: false, // 隐藏工具条的图标
  208. },
  209. autoRow: true,
  210. // tips: '选择校区', // 让默认值不是“请选择”,而是“选择校区”
  211. filterable: true, // 开启搜索模式,默认按照name进行搜索
  212. paging: true, // 启用分页
  213. pageSize: 100, // 每页的数据个数
  214. data: tagData1,
  215. name: 'gameid',
  216. prop: {
  217. name: 'name',
  218. value: 'id'
  219. },
  220. initValue: [{$Request.get.gameid}],
  221. // on: function (data) {
  222. //
  223. // var arr = data.arr;
  224. // if (!arr) {
  225. // return;
  226. // }
  227. // gameArr = []
  228. // for (i = 0; i < arr.length; i++) {
  229. // gameArr[i] = arr[i].id;
  230. // }
  231. // $('.game_id').val(gameArr.toString())
  232. //
  233. //
  234. // },
  235. })
  236. /**
  237. * 下载
  238. */
  239. function reportDownload()
  240. {
  241. console.log($('.layui-form').serialize());
  242. $.ajax({
  243. type: "post",
  244. url: "{:url('user')}",
  245. async: false,
  246. data: $('.layui-form').serialize()+"&down=true",
  247. dataType: 'json',
  248. timeout: 5000,
  249. success: function (data) {
  250. if (data['code']) {
  251. layer.alert(data['msg']);
  252. } else {
  253. layer.alert(data['msg']);
  254. }
  255. },
  256. error: function () {
  257. layer.alert('网络错误,请重试');
  258. },
  259. });
  260. }
  261. </script>
  262. {/block}