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.

387 lines
16 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/promote_base"/>
<block name="css">
<link href="__CSS__/20180207/data.css" rel="stylesheet">
<link href="__CSS__/20180207/finance.css" rel="stylesheet">
<style type="text/css">
.keywords_information {margin-left:15px;cursor:pointer;}
.keywords_information .keywords_mark {height:35px;line-height:35px;color:#4A90F0;}
.keywords_information .keywords_mark span{border-bottom:1px solid transparent;}
.keywords_information .keywords_mark:hover span {border-bottom-color:#4A90F0;}
.keywords_information .keywords_content {transition:opacity 1.2s,visibility 1.5s;}
.keywords_information .keywords_content:before {margin-left:41px;}
.keywords_information .keywords_content .keywords_close {position:absolute;right:0;top:0;width:25px;height:40px;line-height:35px;color:#515974;}
.keywords_information .keywords_list span:first-child {width:160px;}
.keywords_information .keywords_list span:last-child {width:228px;}
.keywords_information {position:relative;display:inline-block;}
.keywords_information .keywords_mark {display:block;font-size:12px;font-style:normal;font-weight:normal; }
.keywords_information .keywords_content.active {visibility:visible;opacity:1;transition:visibility 1.5s,opacity 1s;}
.keywords_information .keywords_content {visibility:hidden;opacity:0;
position:absolute;width:435px;z-index:10;background:#fff;border-radius:5px;
border: 1px solid #E7ECEF;
box-shadow: 1px 1px 15px rgba(0,0,0,.1);
top:10px;left:72px;
}
.keywords_information .keywords_title {
height:40px;line-height:40px;background-color:#FAFAFA;
border-top-left-radius:5px;border-top-right-radius:5px;color:#515974;
padding-left:10px;font-size:12px;
}
.keywords_information .keywords_list {overflow:hidden;clear:both;padding:5px;margin:0 8px;font-size:10px;border-bottom:1px solid #EBEEF5;}
.keywords_information .keywords_list:last-child {border-bottom:none;}
.keywords_information .keywords_list span {display:inline-block;display: block;font-weight: normal;color: #515974;
float: left;
line-height: 30px;
width: 420px;}
.keywords_information .keywords_list span:last-child{color: #a5a6bb;}
.keywords_information .keywords_list span:first-child {width:160px;margin-right:20px;}
.chakan{
font-size: 14px;
font-weight: normal;
color: #26C7DB;
cursor: pointer;
display: inline-block;
text-align: center;
}
.chakan:hover{color: #2bd8ed;}
.trunk-list{position: relative;min-height: 66vh;}
</style>
</block>
<block name="body">
<div class="page-search normal_list query-recharge-search">
<div class="trunk-title">
<div class="location">
<div class="location-container">当前位置:<span>数据管理></span><span>ARPU统计</span></div>
</div>
<img src="__IMG__/20180207/icon_normal_ARPU.png">
<span class="title_main">ARPU统计</span>
<span class="details">根据日期游戏推广员分析ARPU等相关数据信息排除绑币</span>
<div class="keywords_information" style="clear: both;">
<i class="keywords_mark"><span>关键词说明</span></i>
<ul class="keywords_content">
<li class="keywords_title">关键词说明<a href="javascript:;" class="keywords_close"><img src="__IMG__/20180207/btn_normal_close.png"/></a></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="">新增付费额</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="trunk-content article">
<div class="trunk-search clearfix">
<form action="{:U('Query/arpu_analysis')}" method="post" enctype="multipart/form-data">
<div class="form-group normal_space fr">
<input type="submit" class="submit" value="查询">
</div>
<div class="form-group normal_space fr">
<label class="form-title select-title">选择时间:</label>
<div class="select-time">
<input type="text" id="sdate" class="txt" autocomplete="off" name="time_start" placeholder="开始时间" value="{$Think.request.time_start}" >
</div>
<label class="form-title select-title zhi_color">&nbsp;&nbsp;</label>
<div class="select-time">
<input type="text" id="edate" class="txt" autocomplete="off" name="time_end" placeholder="结束时间" value="{$Think.request.time_end}">
</div>
</div>
<div class="form-group normal_space fr">
<label class="form-title select-title">推广员账号:</label>
<select id="promote_id" name="promote_id" class="reselect select_gallery" style="min-width:170px;">
<option game-id="0" value="0">推广员账号</option>
<option game-id="{:session('promote_auth.pid')}" value="{:session('promote_auth.pid')}">自己</option>
<volist name=":get_promote_chlid_account(PID)" id="vo">
<option game-id="{$vo.id}" value="{$vo.id}">{$vo.account}</option>
</volist>
</select>
<input type="hidden" id="promote_account" name="promote_account" value='{:I("promote_account")}'>
</div>
<div class="form-group normal_space fr">
<label class="form-title select-title">游戏名称:</label>
<select id="game_id" name="game_id" class="reselect select_gallery" style="width: 200px;">
<option game-id="0" value="0">请选择游戏</option>
<volist name=":get_game_list()" id="vo">
<option game-id="{$vo.id}" value="{$vo.id}">{$vo.game_name}</option>
</volist>
</select>
<input type="hidden" id="game_name" name="game_name" value='{:I("game_name")}'>
<input type="hidden" id="promote_arpu" name="promote_arpu" value='{$promote_arpu}'>
</div>
</form>
</div>
</div>
<div class="page-list query-recharge-list">
<div class="trunk-content article">
<div class="trunk-list">
<table class="table normal_table" id="datacontent">
<table class="table normal_table" id="datatable" style="<notempty name='list_data'>display:none;</notempty>"><thead>
<tr class="odd">
<th>日期</th>
<if condition='empty(I("game_id")) != true'>
<th>游戏名称</th>
<else/>
<th>付费游戏数</th>
</if>
<if condition='empty(I("promote_id")) != true'>
<th>所属渠道</th>
</if>
<th>活跃用户</th>
<th>新增用户</th>
<th>付费用户</th>
<th>新增付费用户</th>
<th>付费总额</th>
<th>付费率</th>
<th>新增付费额</th>
<th>累计付费用户</th>
<th>1日留存</th>
<th>ARPU</th>
<th>ARPPU</th>
<if condition='empty(I("game_id")) == true'>
<th>详情</th>
</if>
</tr></thead><tbody>
<empty name="list_data">
<tr><td colspan="12" style="text-align: center;height: 45vh;"><img src="__IMG__/20180207/icon_wushujv2.png"/><p style="line-height: 40px;color: #A5A5A5;">暂无数据</p></td></tr>
<else />
<volist name="list_data" id="vo" mod="2">
<tr name="rows" class="<eq name='mod' value='1'>odd</eq>">
<td>{$key}</td>
<if condition='empty(I("game_id")) != true'>
<th>{:I("game_name")}</th>
<else/>
<td>{$vo.payGame}</th>
</if>
<if condition='empty(I("promote_id")) != true'>
<th>{:I("promote_account")}</th>
</if>
<td>{$vo.activeUsers}</td>
<td>{$vo.newUsers}</td>
<td>{$vo.payUsers}</td>
<td>{$vo.newPayUsers}</td>
<td>{:number_format($vo['usersIncome'],2)}</td><!-- {:number_format(round($vo['usersIncome']),2)} -->
<td>{$vo.usersPayRate}</td>
<td>{:number_format($vo['newPaySum'],2)}</td>
<td>{$vo.totalPayUsers}</td>
<td>{$vo.ratentionRate1}</td>
<td>{:number_format(round($vo['usersArpu'],2),2)}</td>
<td>{:number_format(round($vo['usersArppu'],2),2)}</td>
<if condition='empty(I("game_id")) == true'>
<td>
<a onclick="chakan('{$key}')" style="cursor: pointer" class="chakan">查看</a>
</td>
</if>
</tr>
</volist>
</empty></tbody>
</table>
</table>
<notempty name="list_data">
<div class="pagenation clearfix">
<a class="sch-btn" id="export_data" href="{:U('Export/arpu_analysis',array(
'game_id'=>I('game_id'),
'promote_id'=>I('promote_id'),
'time_start'=>I('time_start'),
'time_end'=>I('time_end'),'game_name'=>I('post.game_name'),'promote_account'=>I('post.promote_account'),
'xlsname'=>'数据管理_ARPU统计'
))}" >导出</a>
<div>
<select id="pagechange" name="row" onchange="pagechange(this)">
<option value="10">每页10条</option><option value="25">每页25条</option><option value="50">每页50条</option><option value="100">每页100条</option></select>
<span id="pagenation">
</span>
</div>
</div>
</notempty>
</div>
</div>
</div>
</div>
</block>
<block name="script">
<link rel="stylesheet" type="text/css" href="__CSS__/p_jquery.datetimepicker.css">
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/jquery.datetimepicker.js"></script>
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script type="text/javascript" src="__JS__/20170831/pagination.js"></script>
<script type="text/javascript" src="__JS__/20170831/string.js"></script>
<script type="text/javascript" src="__JS__/20170831/tabpage.js"></script>
<eq name='timeout' value='1'>
<script>
layer.msg('时间间隔不能超过90天');
</script>
</eq>
<script>
layer.config({
extend: 'skin/myskin/style.css', //同样需要加载新皮肤
});
function chakan(key) {
var bangbi = $('#bangbi').val();
var promote_id = $('#promote_arpu').val();
url = "/index.php?s=/Home/Query/cha_userarpu/time/"+key+"/bangbi/"+bangbi+"/promote_id/"+promote_id;
timetitle = key;
console.log(url);
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 + '游戏数据',
skin: 'myskin', //只对该层采用myskin皮肤
shadeClose: true,
shade: [0.3,'#273142'],
scrollbar :false,
maxmin: true, //开启最大化最小化按钮
area: ['70%', '50%'],
content: url//iframe的url
});
}
});
}
</script>
<script type="text/javascript">
setValue('promote_id',{$Think.request.promote_id|default=0});
setValue('game_id','{$Think.request.game_id|default=0}');
function pagechange(that){
tablePage('datatable', 'datacontent', 'pagenation', [1, 2, 4, 5, 6, 10], false,that.value);
var export_data = $('#export_data');
var url = export_data.attr('href');
url = url.replace('.html','').replace(/(&|\/)row(=|\/)\d*/gi,'').replace(/\/p\/\d*/gi,'');
export_data.attr('href',url+'/row/'+that.value);
}
function pagenation_click() {
$('#pagenation a').click(function() {
var that = $(this),p = that.text();console.log(p);
var export_data = $('#export_data');
var url = export_data.attr('href');
url = url.replace('.html','').replace(/(&|\/)row(=|\/)\d*/gi,'').replace(/\/p\/\d*/gi,'');
export_data.attr('href',url+'/p/'+p+'/row/'+that.value);
return false;
});
}
$().ready(function(){
$("#pagehtml a").on("click",function(event){
event.preventDefault();//使a自带的方法失效即无法调整到href中的URL(http://www.baidu.com)
var geturl = $(this).attr('href');
$('#data_form').attr('action',geturl);
$('#data_form').submit();
});
pagenation_click();
$(".submit").click(function(){
var sdate =$('#sdate').val();
var edate =$('#edate').val();
if(Date.parse(sdate) > Date.parse(edate)){
layer.msg('开始时间必须小于等于结束时间');
return false;
}
})
$('#sdate').datetimepicker({
lang:'ch',
format:'Y-m-d',
formatDate:'Y-m-d',
scrollMonth:false,
scrollTime:false,
scrollInput:false,
timepicker:false
});
$(".select_gallery").select2();
$('#edate').datetimepicker({
lang:'ch',
format:'Y-m-d',
formatDate:'Y-m-d',
scrollMonth:false,
scrollTime:false,
scrollInput:false,
timepicker:false
});
tablePage('datatable', 'datacontent', 'pagenation', [1, 2, 4, 5, 6, 10], false);
$('.keywords_information .keywords_mark').click(function() {
var that = $(this).siblings().addClass('active');
console.log(that);
$(document).click(function(event) {
var e = event || window.event;
var target= $(e.target);
if (!target.hasClass('keywords_information') && target.closest('.keywords_information').length<1) {
that.removeClass('active');
}
});
that.find('.keywords_close').click(function() {
that.removeClass('active');
return false;
});
return false;
});
$("#game_id").change(function(){
var game_name = $('#game_id option:selected').text();
$("#game_name").val(game_name);
});
$("#promote_id").change(function(){
var account = $('#promote_id option:selected').text();
$("#promote_account").val(account);
})
});
</script>
</block>