768bd31cfad350d4954f350156d70505.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <?php /*a:5:{s:72:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\finance\user_recharge\index.php";i:1595820902;s:61:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\container.php";i:1595820902;s:62:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\frame_head.php";i:1595820902;s:57:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\style.php";i:1595820902;s:64:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\frame_footer.php";i:1595820902;}*/ ?>
  2. <!DOCTYPE html>
  3. <html lang="zh-CN">
  4. <head>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <?php if(empty($is_layui) || (($is_layui instanceof \think\Collection || $is_layui instanceof \think\Paginator ) && $is_layui->isEmpty())): ?>
  8. <link href="/system/frame/css/bootstrap.min.css?v=3.4.0" rel="stylesheet">
  9. <?php endif; ?>
  10. <link href="/static/plug/layui/css/layui.css" rel="stylesheet">
  11. <link href="/system/css/layui-admin.css" rel="stylesheet">
  12. <link href="/system/frame/css/font-awesome.min.css?v=4.3.0" rel="stylesheet">
  13. <link href="/system/frame/css/animate.min.css" rel="stylesheet">
  14. <link href="/system/frame/css/style.min.css?v=3.0.0" rel="stylesheet">
  15. <script src="/system/frame/js/jquery.min.js"></script>
  16. <script src="/system/frame/js/bootstrap.min.js"></script>
  17. <script src="/static/plug/layui/layui.all.js"></script>
  18. <script>
  19. $eb = parent._mpApi;
  20. window.controlle="<?php echo strtolower(trim(preg_replace("/[A-Z]/", "_\\0", app('request')->controller()), "_"));?>";
  21. window.module="<?php echo app('http')->getName();?>";
  22. </script>
  23. <title></title>
  24. <style>
  25. </style>
  26. <!--<script type="text/javascript" src="/static/plug/basket.js"></script>-->
  27. <script type="text/javascript" src="/static/plug/requirejs/require.js"></script>
  28. <?php /* <script type="text/javascript" src="/static/plug/requirejs/require-basket-load.js"></script> */ ?>
  29. <script>
  30. var hostname = location.hostname;
  31. if(location.port) hostname += ':' + location.port;
  32. requirejs.config({
  33. map: {
  34. '*': {
  35. 'css': '/static/plug/requirejs/require-css.js'
  36. }
  37. },
  38. shim:{
  39. 'iview':{
  40. deps:['css!iviewcss']
  41. },
  42. 'layer':{
  43. deps:['css!layercss']
  44. }
  45. },
  46. baseUrl:'//'+hostname+'/',
  47. paths: {
  48. 'static':'static',
  49. 'system':'system',
  50. 'vue':'static/plug/vue/dist/vue.min',
  51. 'axios':'static/plug/axios.min',
  52. 'iview':'static/plug/iview/dist/iview.min',
  53. 'iviewcss':'static/plug/iview/dist/styles/iview',
  54. 'lodash':'static/plug/lodash',
  55. 'layer':'static/plug/layer/layer',
  56. 'layercss':'static/plug/layer/theme/default/layer',
  57. 'jquery':'static/plug/jquery/jquery.min',
  58. 'moment':'static/plug/moment',
  59. 'sweetalert':'static/plug/sweetalert2/sweetalert2.all.min',
  60. 'formCreate':'/static/plug/form-create/form-create.min',
  61. },
  62. basket: {
  63. excludes:['system/js/index','system/util/mpVueComponent','system/util/mpVuePackage']
  64. // excludes:['system/util/mpFormBuilder','system/js/index','system/util/mpVueComponent','system/util/mpVuePackage']
  65. }
  66. });
  67. </script>
  68. <script type="text/javascript" src="/system/util/mpFrame.js"></script>
  69. </head>
  70. <body class="gray-bg">
  71. <div class="wrapper wrapper-content">
  72. <div class="layui-fluid">
  73. <div class="layui-row layui-col-space15" id="app">
  74. <!--搜索条件-->
  75. <div class="layui-col-md12">
  76. <div class="layui-card">
  77. <div class="layui-card-header">搜索条件</div>
  78. <div class="layui-card-body">
  79. <div class="layui-carousel layadmin-carousel layadmin-shortcut" lay-anim="" lay-indicator="inside" lay-arrow="none" style="background:none">
  80. <div class="layui-card-body">
  81. <div class="layui-row layui-col-space10 layui-form-item">
  82. <div class="layui-col-lg12">
  83. <label class="layui-form-label">时间选择:</label>
  84. <div class="layui-input-block" data-type="data" v-cloak="">
  85. <button class="layui-btn layui-btn-sm" type="button" v-for="item in dataList" @click="setData(item)" :class="{'layui-btn-primary':where.data!=item.value}">{{item.name}}</button>
  86. <button class="layui-btn layui-btn-sm" type="button" ref="time" @click="setData({value:'zd',is_zd:true})" :class="{'layui-btn-primary':where.data!='zd'}">自定义</button>
  87. <button type="button" class="layui-btn layui-btn-sm layui-btn-primary" v-show="showtime==true" ref="date_time"><?php echo htmlentities($year['0']); ?> - <?php echo htmlentities($year['1']); ?></button>
  88. </div>
  89. </div>
  90. <div class="layui-col-lg12">
  91. <label class="layui-form-label">支付类型:</label>
  92. <div class="layui-input-block" v-cloak="">
  93. <button class="layui-btn layui-btn-sm" :class="{'layui-btn-primary':where.paid !== item.value}" @click="where.paid = item.value" type="button" v-for="item in paidStatus">{{item.name}}
  94. <span v-if="item.count!=undefined" class="layui-badge layui-bg-gray">{{item.count}}</span></button>
  95. </div>
  96. </div>
  97. <div class="layui-col-lg12">
  98. <label class="layui-form-label">用户昵称:</label>
  99. <div class="layui-input-block">
  100. <input type="text" name="nickname" style="width: 50%" v-model="where.nickname" placeholder="请输入姓名、电话、UID" class="layui-input">
  101. </div>
  102. </div>
  103. <div class="layui-col-lg12">
  104. <div class="layui-input-block">
  105. <button @click="search" type="button" class="layui-btn layui-btn-sm layui-btn-normal">
  106. <i class="layui-icon layui-icon-search"></i>搜索</button>
  107. <button @click="excel" type="button" class="layui-btn layui-btn-warm layui-btn-sm export" type="button">
  108. <i class="fa fa-floppy-o" style="margin-right: 3px;"></i>导出</button>
  109. <button @click="refresh" type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
  110. <i class="layui-icon layui-icon-refresh" ></i>刷新</button>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <!--end-->
  120. <!-- 中间详细信息-->
  121. <div :class="item.col!=undefined ? 'layui-col-sm'+item.col+' '+'layui-col-md'+item.col:'layui-col-sm6 layui-col-md3'" v-for="item in badge" v-cloak="" v-if="item.count > 0">
  122. <div class="layui-card">
  123. <div class="layui-card-header">
  124. {{item.name}}
  125. <span class="layui-badge layuiadmin-badge" :class="item.background_color">{{item.field}}</span>
  126. </div>
  127. <div class="layui-card-body">
  128. <p class="layuiadmin-big-font">{{item.count}}</p>
  129. <p v-show="item.content!=undefined">
  130. {{item.content}}
  131. <span class="layuiadmin-span-color">{{item.sum}}<i :class="item.class"></i></span>
  132. </p>
  133. </div>
  134. </div>
  135. </div>
  136. <!--enb-->
  137. </div>
  138. <div class="layui-row layui-col-space15">
  139. <div class="layui-col-md12">
  140. <div class="layui-card">
  141. <div class="layui-card-header">充值记录列表</div>
  142. <div class="layui-card-body">
  143. <table class="layui-hide" id="userList" lay-filter="userList"></table>
  144. <script type="text/html" id="avatar">
  145. <img style="cursor: pointer" lay-event='open_image' src="{{d.avatar}}">
  146. </script>
  147. <script type="text/html" id="act">
  148. {{# if(d.paid && parseFloat(d.refund_price) <= 0) { }}
  149. <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='refund'>退款</button>
  150. {{# }else if(d.paid == 0){ }}
  151. <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='delect'>删除</button>
  152. {{# }else{ }}
  153. <button type="button" class="layui-btn layui-btn-xs layui-btn-disabled">暂无操作</button>
  154. {{# } }}
  155. </script>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <script src="/system/js/layuiList.js"></script>
  162. <script>
  163. layList.form.render();
  164. layList.tableList('userList',"<?php echo Url('get_user_recharge_list'); ?>",function () {
  165. return [
  166. {field: 'uid', title: 'UID', sort: true,width:'5%'},
  167. {field: 'avatar', title: '头像',templet:'#avatar'},
  168. {field: 'nickname', title: '用户昵称'},
  169. {field: 'order_id', title: '订单号'},
  170. {field: 'price', title: '支付金额',sort:true},
  171. {field: 'paid_type', title: '是否支付'},
  172. {field: '_recharge_type', title: '充值类型'},
  173. {field: '_pay_time', title: '支付时间'},
  174. {field: 'right', title: '操作',toolbar:'#act',width:'5%'},
  175. ];
  176. });
  177. layList.date({elem:'#start_time',theme:'#393D49',type:'datetime'});
  178. layList.date({elem:'#end_time',theme:'#393D49',type:'datetime'});
  179. layList.search('search',function(where){
  180. if(where.start_time!='' && where.end_time=='') return layList.msg('请选择结束时间')
  181. if(where.end_time!='' && where.start_time=='') return layList.msg('请选择开始时间')
  182. console.log(where);
  183. layList.reload(where,true);
  184. });
  185. layList.tool(function (event,data,obj) {
  186. switch (event) {
  187. case 'open_image':
  188. if($eb)
  189. $eb.openImage(data.avatar);
  190. else
  191. layList.layer.open({
  192. type: 1,
  193. title: false,
  194. closeBtn: 0,
  195. shadeClose: true,
  196. content: '<img src="'+data.avatar+'" style="display: block;width: 100%;" />'
  197. });
  198. break;
  199. case 'refund':
  200. $eb.createModalFrame('退款',layList.U({a:'edit',q:{id:data.id}}),{h:'300',w:'500'});
  201. break;
  202. case 'delect':
  203. var url =layList.U({a:'delect',p:{id:data.id}});
  204. if (data.paid) return layList.msg('已支付的记录无法删除!');
  205. $eb.$swal('delete',function(){
  206. $eb.axios.get(url).then(function(res){
  207. if(res.status == 200 && res.data.code == 200) {
  208. $eb.$swal('success',res.data.msg);
  209. obj.del();
  210. }else
  211. return Promise.reject(res.data.msg || '删除失败')
  212. }).catch(function(err){
  213. $eb.$swal('error',err);
  214. });
  215. },{'title':'您确定要删除此条充值记录吗?','text':'删除后将无法恢复,请谨慎操作!','confirm':'是的,我要删除'})
  216. break;
  217. }
  218. });
  219. require(['vue'],function(Vue) {
  220. new Vue({
  221. el: "#app",
  222. data: {
  223. badge: [],
  224. dataList: [
  225. {name: '全部', value: ''},
  226. {name: '今天', value: 'today'},
  227. {name: '昨天', value: 'yesterday'},
  228. {name: '最近7天', value: 'lately7'},
  229. {name: '最近30天', value: 'lately30'},
  230. {name: '本月', value: 'month'},
  231. {name: '本年', value: 'year'},
  232. ],
  233. paidStatus:[
  234. {name:'全部',value:''},
  235. {name:'已支付',value:1},
  236. {name:'未支付',value:0},
  237. ],
  238. where:{
  239. data:'',
  240. paid:'',
  241. nickname: '',
  242. excel:0,
  243. },
  244. showtime: false,
  245. },
  246. watch:{
  247. },
  248. methods:{
  249. getBadge:function(){
  250. var that=this;
  251. layList.basePost(layList.Url({a:'get_badge'}),this.where,function (rem) {
  252. that.badge=rem.data;
  253. });
  254. },
  255. setData:function(item){
  256. var that=this;
  257. if(item.is_zd==true){
  258. that.showtime=true;
  259. this.where.data=this.$refs.date_time.innerText;
  260. }else{
  261. this.showtime=false;
  262. this.where.data=item.value;
  263. }
  264. },
  265. search:function () {
  266. this.where.excel=0;
  267. this.getBadge();
  268. layList.reload(this.where,true);
  269. },
  270. excel:function () {
  271. this.where.excel=1;
  272. location.href=layList.U({a:'get_user_recharge_list',q:this.where});
  273. },
  274. refresh:function () {
  275. layList.reload();
  276. this.getBadge();
  277. }
  278. },
  279. mounted:function () {
  280. that = this;
  281. this.getBadge();
  282. layList.laydate.render({
  283. elem:this.$refs.date_time,
  284. trigger:'click',
  285. eventElem:this.$refs.time,
  286. range:true,
  287. change:function (value){
  288. that.where.data=value;
  289. }
  290. });
  291. window.SuccessFun = this.search
  292. }
  293. })
  294. });
  295. </script>
  296. </div>
  297. </body>
  298. </html>