<extend name="Public/base"/> <block name="body"> <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" /> <script type="text/javascript" src="__JS__/bootstrap.min.js"></script> <script type="text/javascript" src="__JS__/select2.min.js"></script> <style> .select2-container--default .select2-selection--single { color: #000; resize: none; border-width: 1px; border-style: solid; border-color: #a7b5bc #ced9df #ced9df #a7b5bc; box-shadow: 0px 3px 3px #F7F8F9 inset;height:35px; height:28px;border-radius:3px;font-size:12px; } .select2-container--default .select2-selection--single .select2-selection__rendered { line-height:35px; line-height:28px; } .select2-container--default .select2-selection--single .select2-selection__arrow { height:26px; } .select2-container--default .select2-search--dropdown .select2-search__field { height:26px;line-height:26px;font-size:12px; } .select2-results__option[aria-selected] {font-size:12px;} </style> <div class="cf main-place top_nav_list navtab_list"> <h3 class="page_title">留存率分析</h3> <p class="description_text">说明:根据日期,游戏,推广员分析用户留存率信息</p> </div> <div class="cf top_nav_list"> <!-- 高级搜索 --> <div class="jssearch fl cf search_list"> <div class="input-list search-title-box"> <label>搜索:</label> </div> <div class="input-list"> <input type="text" id="time-start" name="start" class="" value="{:I('start',date('Y-m-d',strtotime('-7 day')))}" placeholder="选择开始时间" /> - <input type="text" id="time-end" name="end" class="" value="{:I('end',date('Y-m-d',time()))}" placeholder="选择结束时间" /> </div> <div class="input-list search_label_rehab"> <select id="game_id" name="game_id" class="select_gallery"> <option value="">请选择游戏</option> <volist name=":get_game_list()" id="vo"> <option game-id="{$vo.id}" value="{$vo.id}">{$vo.game_name}</option> </volist> </select> </div> <div class="input-list input-list-promote search_label_rehab"> <select id="promote_id" name="promote_id" class="select_gallery" > <option value="">推广员账号</option> <volist name=":get_promote_list()" id="vo"> <option promote-id="{$vo.id}" value="{$vo.id}">{$vo.account}</option> </volist> </select> </div> <input type="hidden" name="" value="" class="sortBy"> <div class="input-list"> <a class="sch-btn" href="javascript:;" id="search" url="{:U('stat/userretention','model='.$model['name'].'&row='.I('row'),false)}">搜索</a> </div> </div> </div> <!-- 数据列表 --> <div class="data_list"> <div class=""> <table> <!-- 表头 --> <thead> <tr> <th ><a class="paixu" data-order='time'>日期</a></th> <if condition="$game_name neq ''"> <th>游戏名称</th> </if> <if condition="$promote_name neq ''"> <th>渠道名称</th> </if> <th ><a class="paixu" data-order='register_num'>新增玩家</a></th> <th ><a class="paixu" data-order='1'>1日留存</a></th> <th ><a class="paixu" data-order='2'>2日留存</a></th> <th ><a class="paixu" data-order='3'>3日留存</a></th> <th ><a class="paixu" data-order='4'>4日留存</a></th> <th ><a class="paixu" data-order='5'>5日留存</a></th> <th ><a class="paixu" data-order='6'>6日留存</a></th> <th ><a class="paixu" data-order='7'>7日留存</a></th> <th ><a class="paixu" data-order='15'>15日留存</a></th> <th ><a class="paixu" data-order='30'>30日留存</a></th> </tr> </thead> <!-- 列表 --> <tbody> <empty name="data" > <tr> <td colspan="11" class="text-center">aOh! 暂时还没有内容!</td> </tr> <else /> <volist name="data" id="vo"> <tr> <td>{$vo.time}</td> <if condition="$game_name neq ''"> <td>{$game_name}</td> </if> <if condition="$promote_name neq ''"> <td>{$promote_name}</td> </if> <td>{$vo.register_num}</td> <td>{:round($vo['1']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['2']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['3']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['4']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['5']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['6']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['7']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['15']/$vo['register_num'],4)*100}%</td> <td>{:round($vo['30']/$vo['register_num'],4)*100}%</td> </tr> </volist> </empty> </tbody> </table> </div> </div> <div class="page"> <a class="sch-btn" href="{:U('Export/userretention_export', array( 'start' =>I('start',date('Y-m-d',strtotime('-7 day'))), 'end' =>I('end',date('Y-m-d',time())), 'game_id'=>I('game_id'), 'promote_id'=>I('promote_id'), 'xlsname'=>'数据分析_留存率分析',) ,false)}">导出</a> {$_page|default=''} </div> </block> <block name="script"> <script src="__STATIC__/layer/layer.js"></script> <script> <volist name=":I('get.')" id="vo"> Think.setValue('{$key}',"{$vo}"); </volist> $(".select_gallery").select2(); </script> <link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css"> <php>if(C('COLOR_STYLE')=='blue_color') echo '<link href="__STATIC__/datetimepicker/css/datetimepicker_blue.css" rel="stylesheet" type="text/css">';</php> <link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script> <script src="__STATIC__/layer/layer.js" type="text/javascript"></script> <script type="text/javascript"> //导航高亮 highlight_subnav('{:U('stat/userretention')}'); $(function(){ //搜索功能 $("#search").click(function(){ //计算天数差的函数,通用 function GetDateDiff(startDate,endDate) { var startTime = new Date(Date.parse(startDate.replace(/-/g, "/"))).getTime(); var endTime = new Date(Date.parse(endDate.replace(/-/g, "/"))).getTime(); var dates = Math.abs((startTime - endTime))/(1000*60*60*24); return dates; } var start = $("#time-start").val(); start = start.substring(0,19); var end = ($("#time-end").val() == "") ? "{:date('Y-m-d')}" : $("#time-end").val(); end = end.substring(0,19); var interval = GetDateDiff(end,start); if(interval < 0 || start == ''){ layer.msg('请选择搜索时间'); return false; }else if(interval>90){ layer.msg('请选择90日内的时间段'); return false; } var url = $(this).attr('url'); var query = $('.jssearch').find('input').serialize(); query += "&"+$('.jssearch').find('select').serialize(); query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,''); query = query.replace(/^&/g,''); if( url.indexOf('?')>0 ){ url += '&' + query; }else{ url += '?' + query; } if (start !='' && end != ''){ if (Date.parse(start) > Date.parse(end)){ layer.msg('开始时间必须小于等于结束时间'); return false; } } window.location.href = url; }); $(".paixu").click(function(){ var that=$(this); $data_order=that.attr('data-order'); $order_type='{$userarpu_order}'; if($order_type==''||$order_type=='4'){ $(".sortBy").attr('name','data_order'); val='3,'+$data_order; $(".sortBy").attr('value',val); $("#search").click(); }else if($order_type=='3'){ $(".sortBy").attr('name','data_order'); val='4,'+$data_order; $(".sortBy").attr('value',val); $("#search").click(); } }); //回车自动提交 $('.jssearch').find('input').keyup(function(event){ if(event.keyCode===13){ $("#search").click(); } }); $('#time-start').datetimepicker({ format: 'yyyy-mm-dd', language:"zh-CN", minView:2, autoclose:true }); $('#time-end').datetimepicker({ format: 'yyyy-mm-dd', language:"zh-CN", minView:2, autoclose:true, pickerPosition:'bottom-left' }) $(".chakan").click(function() { that = $(this); url = that.attr('href-url'); timetitle=that.attr('timetitle'); ptitle=' '+that.attr('ptitle')+' '; layer.open({ type: 2, title: false, closeBtn: 0, //不显示关闭按钮 shade: [0], area: ['1px', '1px'], offset: 'rb', //右下角弹出 time: 1, // 秒后自动关闭 这里设置成1ms 不显示过度页面 anim: 2, content: ['', 'no'], //iframe的url,no代表不显示滚动条 end: function(){ // layer.open({ type: 2, title: timetitle+ptitle+'游戏数据', shadeClose: true, shade: false, maxmin: true, //开启最大化最小化按钮 area: ['50%', '45%'], content: url//iframe的url }); } }); }); $("#game").on('click',function(event) { var navlist = $(this).find('.i_list_li'); if (navlist.hasClass('hidden')) { navlist.removeClass('hidden'); $(this).find('#i_list_id').focus().val(''); } else { navlist.addClass('hidden'); } $(document).one("click", function(){ navlist.addClass('hidden'); }); event.stopPropagation(); }); $('#game #i_list_id').on('keyup',function(event) { var val = $.trim($(this).val()).toLowerCase(); $(this).closest('.drop-down').find('#i_list_idh').val(val); }); $("#game #i_list_li").find("a").each(function(){ $(this).click(function(){ var text = $.trim($(this).text()).toLowerCase(); var val = $.trim($(this).attr('value')); $(this).closest('.drop-down').find("#i_list_id").val(text); $(this).closest('.drop-down').find('#i_list_idh').val(val); }) }); $("#promote").on('click',function(event) { var navlist = $(this).find('.i_list_li'); if (navlist.hasClass('hidden')) { navlist.removeClass('hidden'); $(this).find('#i_list_id').focus().val(''); } else { navlist.addClass('hidden'); } $(document).one("click", function(){ navlist.addClass('hidden'); }); event.stopPropagation(); }); $('#promote #i_list_id').on('keyup',function(event) { $(this).closest('.drop-down').find('#i_list_idh').val(-1); }); $("#promote #i_list_li").find("a").each(function(){ $(this).click(function(){ var text = $.trim($(this).text()).toLowerCase(); $(this).closest('.drop-down').find("#i_list_id").val(text); $(this).closest('.drop-down').find('#i_list_idh').val($(this).attr('value')); }) }); }) </script> </block>