You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

410 lines
18 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<extend name="Public/base"/>
<block name="css">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<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;}
.bindcoinsbox {height:33px;line-height:37px;}
.bindcoinsbox .radio {cursor:pointer;}
.bindcoinsbox .radio input {cursor:pointer;}
</style>
</block>
<block name="body">
<style>.button_list2 {
margin: 9px 0;
margin: 5px 0 32px;
margin-right: 15px;
}</style>
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">ARPU分析</h3>
<p class="description_text">说明根据日期游戏推广员分析ARPU等相关数据信息</p>
<div class="keywords_information">
<i class="keywords_mark"><span>关键词说明</span></i>
<ul class="keywords_content">
<li class="keywords_title">关键词说明<a href="javascript:;" class="keywords_close">X</a></li>
<li class="keywords_list">
<span class="">活跃玩家</span>
<span class="">当天登录的玩家总数</span>
</li>
<li class="keywords_list">
<span class="">1日留存</span>
<span class="">注册第二天的登录率</span>
</li>
<li class="keywords_list">
<span class="">付费玩家</span>
<span class="">当天付费的玩家数量</span>
</li>
<li class="keywords_list">
<span class="">新付费玩家</span>
<span class="">当天付费玩家中第一次付费的玩家数</span>
</li>
<li class="keywords_list">
<span class="">付费率</span>
<span class="">付费玩家/活跃玩家</span>
</li>
<li class="keywords_list">
<span class="">ARPU(每用户平均付费)</span>
<span class="">当日总充值数/活跃玩家数</span>
</li>
<li class="keywords_list">
<span class="">ARPPU(付费用户的平均付费)</span>
<span class="">当日总充值/付费玩家数</span>
</li>
</ul>
</div>
</div>
<div class="cf jssearch top_nav_list">
<div class="fl button_list2">
<div class="bindcoinsbox">
参与统计设置:
<label class="radio radio-primary">
<input type="radio" class="coins" value="0" name="hasbindcoins">
<span>排除绑币</span>
</label>
<label class="radio radio-primary">
<input type="radio" class="coins" value="1" name="hasbindcoins">
<span>包含绑币</span>
</label>
</div>
</div>
<!-- 高级搜索 -->
<div class=" 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="选择开始时间" />
&nbsp;-&nbsp;
<input type="text" id="time-end" name="end" class="" value="{:I('end',date('Y-m-d',time()))}" placeholder="选择结束时间" />
</div>
<div class="input-list input-list-game 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.game_name}" 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(1)" id="vo">
<option promote-id="{$vo.account}" 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/userarpu','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'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'time'">日期▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'time'"/>日期▼<else />日期<img src="__IMG__/up-down.png" width="13px"></if></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'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'register_num'">新增玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'register_num'"/>新增玩家▼<else />新增玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='act_user'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'act_user'">活跃玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'act_user'"/>活跃玩家▼<else />活跃玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='keep_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'keep_num'">1日留存▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'keep_num'"/>1日留存▼<else />1日留存<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend'">充值▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend'"/>充值▼<else />充值<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend_people'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend_people'">付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend_people'"/>付费玩家▼<else />付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='new_pop'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'new_pop'">新付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'new_pop'"/>新付费玩家▼<else />新付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend_rate'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend_rate'">付费率▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend_rate'"/>付费率▼<else />付费率<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='ARPU'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'ARPU'">ARPU▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'ARPU'"/>ARPU▼<else />ARPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='ARPPU'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'ARPPU'">ARPPU▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'ARPPU'"/>ARPPU▼<else />ARPPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='pop_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'pop_num'">累计付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'pop_num'"/>累计付费玩家▼<else />累计付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<if condition="$game_name eq ''">
<if condition="$game_name eq ''">
<th>详情</th>
</if>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<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>{$vo.act_user}</td>
<td>{$vo.keep_num}%</td>
<td>{$vo.spend}</td>
<td>{$vo.spend_people}</td>
<td>{$vo.new_pop}</td>
<td>{$vo.spend_rate}%</td>
<td>{$vo.ARPU}</td>
<td>{$vo.ARPPU}</td>
<td>{$vo.pop_num}</td>
<if condition="$game_name eq ''">
<td><a style="cursor:pointer;width:100%;text-align:center" class="chakan" timetitle="{$vo['time']}" ptitle="{$promote_name}" href-url="{:U('stat/cha_userarpu',array('time'=>$vo['time'],'hasbindcoins'=>I('hasbindcoins'),'promote_name'=>$promote_name,'promote_id'=>$_REQUEST['promote_id']))}">查看</td>
</if>
</tr>
</volist>
</tbody>
</table>
</div>
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn" href="{:U('Export/userarpuExport',array(
'start'=>$_GET['start'],
'end'=>$_GET['end'],
'game_id'=>$_GET['game_id'],
'promote_id'=>$_GET['promote_id'],
'xlsname'=>'数据分析_ARPU分析',
),false)}">导出</a>
</if>
{$_page|default=''}
</div>
</block>
<block name="script">
<script>
Think.setValue('hasbindcoins',{$Think.get.hasbindcoins|default=0});
Think.setValue('start',"{$Think.get.start|default=''}");
Think.setValue('end',"{$Think.get.end|default=''}");
Think.setValue('promote_id',{$Think.get.promote_id|default='""'});
Think.setValue('game_id',{$Think.get.game_id|default='""'});
Think.setValue('row',{$Think.get.row|default=10});
$(".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/userarpu')}');
$(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;
}
//搜索功能
$("#search").click(function(){
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(start,end);
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;
}
var start = $("#time-start").val();
var end = $("#time-end").val();
if (start !='' && end != ''){
if (Date.parse(start) > Date.parse(end)){
layer.msg('开始时间必须小于等于结束时间');
return false;
}
}
window.location.href = url;
});
$('input[name="hasbindcoins"]').click(function() {
$("#search").click();
});
$(".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:1,
});
$('#time-end').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:1,
pickerPosition:'bottom-right'
});
$(".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的urlno代表不显示滚动条
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'));
})
});
paramnum="{:count(I('get.'))}";
if(paramnum==0){
$("#search").click();
}
})
</script>
</block>