|
|
<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">用户分析</h3>
|
|
|
<p class="description_text"></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="">DAU</span>
|
|
|
<span class="">(Daily Active User) 日活跃用户数量,即每日登录平台或游戏的用户数,同一用户去重</span>
|
|
|
</li>
|
|
|
<li class="keywords_list">
|
|
|
<span class="">WAU</span>
|
|
|
<span class="">(Week Active User) 周活跃用户数量,即截止当日,最近一周[含当日的7天]登录过平台或游戏的用户数,同一用户去重</span>
|
|
|
</li>
|
|
|
<li class="keywords_list">
|
|
|
<span class="">MAU</span>
|
|
|
<span class="">(Month Active User) 月活跃用户数量,即截止当日,最近一个月[含当日的30天]登录过平台或游戏的用户数,同一用户去重</span>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="cf jssearch top_nav_list">
|
|
|
<!-- 高级搜索 -->
|
|
|
<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')}" placeholder="选择开始时间" />
|
|
|
-
|
|
|
<input type="text" id="time-end" name="end" class="" value="{:I('end')}" 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/user','model='.$model['name'].'&row='.I('row'),false)}">搜索</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 数据列表 -->
|
|
|
<div class="data_list">
|
|
|
<div class="">
|
|
|
<table>
|
|
|
<!-- 表头 -->
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th>日期</th>
|
|
|
<th>来源游戏</th>
|
|
|
<th>推广员</th>
|
|
|
<th>新增用户</th>
|
|
|
<th>老用户</th>
|
|
|
<th>DAU</th>
|
|
|
<th>WAU</th>
|
|
|
<th>MAU</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<!-- 列表 -->
|
|
|
<tbody>
|
|
|
<empty name ="data">
|
|
|
<tr><td colspan="8" class="text-center">aOh! 暂时还没有内容!</td></tr>
|
|
|
<else/>
|
|
|
<volist name="data" id="vo">
|
|
|
<tr>
|
|
|
<td>{$vo.time}</td>
|
|
|
<td>{$game_source}</td>
|
|
|
<td>{$promote_account}</td>
|
|
|
<td>{$vo.news}</td>
|
|
|
<td>{$vo.old}</td>
|
|
|
<td>{$vo.dau}</td>
|
|
|
<td>{$vo.wau}</td>
|
|
|
<td>{$vo.mau}</td>
|
|
|
</tr>
|
|
|
</volist>
|
|
|
</empty>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="page">
|
|
|
<if condition="$role_export_check eq true ">
|
|
|
<a class="sch-btn" href="{:U('Export/user',array(
|
|
|
'start'=>I('start',date('Y-m-d',strtotime('-7 day'))),
|
|
|
'end'=>I('end',date('Y-m-d',strtotime('-1 day'))),
|
|
|
'game_id'=>$_GET['game_id'],
|
|
|
'promote_id'=>$_GET['promote_id'],
|
|
|
'xlsname'=>'数据分析_用户分析'
|
|
|
),false)}">导出</a>
|
|
|
</if>
|
|
|
{$_page|default=''}
|
|
|
</div>
|
|
|
</block>
|
|
|
|
|
|
<block name="script">
|
|
|
<script>
|
|
|
|
|
|
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/user')}');
|
|
|
$(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;
|
|
|
}
|
|
|
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:1,
|
|
|
});
|
|
|
|
|
|
$('#time-end').datetimepicker({
|
|
|
format: 'yyyy-mm-dd',
|
|
|
language:"zh-CN",
|
|
|
minView:2,
|
|
|
autoclose:1,endDate:new Date(new Date().getTime()),
|
|
|
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的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>
|