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.
265 lines
12 KiB
HTML
265 lines
12 KiB
HTML
5 years ago
|
<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>
|
||
|
<script src="__JS__/jquery.min.js"></script>
|
||
|
<script src="__JS__/common.js"></script>
|
||
|
<script src="__JS__/bootstrap.min.js"></script>
|
||
|
<script src="__JS__/bootstrap-datetimepicker.min.js"></script>
|
||
|
<script src="__JS__/bootstrap-datetimepicker.zh-CN.js"></script>
|
||
|
<script src="__JS__/bootstrap-select.min.js"></script>
|
||
|
<script src="__JS__/VMenu.js"></script>
|
||
|
<script src="__JS__/zh-cn.js"></script>
|
||
|
<script src="__JS__/echarts-all.js"></script>
|
||
|
<script src="__JS__/chart.js"></script>
|
||
|
<script src="__JS__/jquery.tablesorter.js"></script>
|
||
|
<script src="__JS__/string.js"></script>
|
||
|
<script src="__JS__/pagination.js"></script>
|
||
|
<script src="__JS__/datacommon.js"></script>
|
||
|
<script src="__JS__/retain.js"></script>
|
||
|
<link href="__CSS__/iconfont.css" rel="stylesheet">
|
||
|
<link href="__CSS__/pagination.css" rel="stylesheet">
|
||
|
<link href="__CSS__/common.css" rel="stylesheet">
|
||
|
<link href="__CSS__/datetimepicker.css" rel="stylesheet">
|
||
|
<link href="__CSS__/dropdown.css" rel="stylesheet">
|
||
|
<link href="__CSS__/icon.css" rel="stylesheet">
|
||
|
<link href="__CSS__/user.css" rel="stylesheet">
|
||
|
<!-- 标题栏 -->
|
||
|
<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;}
|
||
|
.matter_box2 {padding:0;}
|
||
|
.matter_mt-4 {margin:0;}
|
||
|
.button_list2 {
|
||
|
margin: 9px 0;
|
||
|
margin: 5px 0 32px;
|
||
|
margin-right: 15px;
|
||
|
}
|
||
|
</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="fl button_list2">
|
||
|
<ul class="nav nav-pills" role="tablist" id="generalTabs">
|
||
|
<li role="presentation" data-id="0" class="<empty name='Think.get.d'>active<else /><eq name='Think.get.d' value='0'>active</eq></empty>" data-toggle="tooltip" data-placement="bottom" data-original-title="玩家流失分析">
|
||
|
<a href="#lossPlayer" aria-controls="lossPlayer" role="tab" data-toggle="tab" data="lossPlayer">玩家流失</a>
|
||
|
</li>
|
||
|
<li role="presentation" data-id="1" class="<eq name='Think.get.d' value='1'>active</eq>" data-toggle="tooltip" data-placement="bottom" data-original-title="流失金额分析">
|
||
|
<a href="#lossMoney" aria-controls="lossMoney" role="tab" data-toggle="tab" data="lossMoney">流失金额分析</a>
|
||
|
</li>
|
||
|
<li role="presentation" data-id="2" class="<eq name='Think.get.d' value='2'>active</eq>" data-toggle="tooltip" data-placement="bottom" data-original-title="流失次数分析">
|
||
|
<a href="#lossTimes" aria-controls="lossTimes" role="tab" data-toggle="tab" data="lossTimes">流失次数分析</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<!-- 高级搜索 -->
|
||
|
<div class="jssearch fl cf search_list">
|
||
|
<div class="input-list search-title-box">
|
||
|
<label>搜索:</label>
|
||
|
</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>
|
||
|
<div class="input-list input-list-promote search_label_rehab">
|
||
|
<select id="channel_id" name="channel_id" class="select_gallery" style="width:120px;">
|
||
|
<option value="1">连续3天不登录</option>
|
||
|
<option value="2">连续7天不登录</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="input-list">
|
||
|
<input type="text" id="time-start" name="time_start" class="" value="{$start}" placeholder="流失开始时间" />
|
||
|
-
|
||
|
<div class="input-append date" id="datetimepicker" style="display:inline-block">
|
||
|
<input type="text" id="time-end" name="time_end" class="" value="{$end}" placeholder="流失结束时间" />
|
||
|
<span class="add-on"><i class="icon-th"></i></span>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="input-list">
|
||
|
<a class="sch-btn" href="javascript:;" id="search" url="{:U('stat/userloss',array('data_order'=>I('data_order'),'model'=>$model['name']),false)}">搜索</a>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- 数据列表 -->
|
||
|
|
||
|
<div class="matter_box matter_box2">
|
||
|
<div class="matter_mt-4">
|
||
|
<!-- <ul class="nav nav-pills" role="tablist" id="generalTabs">
|
||
|
<li role="presentation" class="active" data-toggle="tooltip" data-placement="bottom" data-original-title="玩家流失分析">
|
||
|
<a href="#lossPlayer" aria-controls="lossPlayer" role="tab" data-toggle="tab" data="lossPlayer">玩家流失</a>
|
||
|
</li>
|
||
|
<li role="presentation" data-toggle="tooltip" data-placement="bottom" data-original-title="流失金额分析">
|
||
|
<a href="#lossMoney" aria-controls="lossMoney" role="tab" data-toggle="tab" data="lossMoney">流失金额分析</a>
|
||
|
</li>
|
||
|
<li role="presentation" data-toggle="tooltip" data-placement="bottom" data-original-title="流失次数分析">
|
||
|
<a href="#lossTimes" aria-controls="lossTimes" role="tab" data-toggle="tab" data="lossTimes">流失次数分析</a>
|
||
|
</li>
|
||
|
</ul> -->
|
||
|
|
||
|
<div class="tab-content matter_mt">
|
||
|
<div role="tabpanel" class="tab-pane <empty name='Think.get.d'>active<else /><eq name='Think.get.d' value='0'>active</eq></empty>" id="lossPlayer">
|
||
|
<div class="row f-mlr-0">
|
||
|
<div id="lossPlayerChart" style="height: 350px; padding-top: 10px; -webkit-tap-highlight-color: transparent; user-select: none; background-color: rgba(0, 0, 0, 0); cursor: default;" >
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div role="tabpanel" class="tab-pane <eq name='Think.get.d' value='1'>active</eq>" id="lossMoney">
|
||
|
<div class="row f-mlr-0">
|
||
|
<div id="lossMoneyChart" style="height:350px;padding-top:10px;"></div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<div role="tabpanel" class="tab-pane <eq name='Think.get.d' value='2'>active</eq>" id="lossTimes">
|
||
|
<div class="row f-mlr-0">
|
||
|
<div id="lossTimesChart" style="height:350px;padding-top:10px;"></div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</block>
|
||
|
|
||
|
<block name="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 src="__STATIC__/layer/layer.js"></script>
|
||
|
<script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
|
||
|
<script src="__JS__/usersLost.js"></script>
|
||
|
<script>
|
||
|
<volist name=":I('get.')" id="vo">
|
||
|
Think.setValue('{$key}',"{$vo}");
|
||
|
</volist>
|
||
|
$(".select_gallery").select2();
|
||
|
</script>
|
||
|
<script type="text/javascript">
|
||
|
var dataJson = {"lossplayer":{"loss":{"2016-12-13":9,"2016-12-14":24,"2016-12-15":32,"2016-12-16":28,"2016-12-17":42,"2016-12-18":18,"2016-12-19":18},"lossrate":{"2016-12-13":9,"2016-12-14":35,"2016-12-15":67,"2016-12-16":59,"2016-12-17":45,"2016-12-18":55,"2016-12-19":23}},"lossmoney":{"2016-12-13":13,"2016-12-14":32,"2016-12-15":40,"2016-12-16":37,"2016-12-23":24,"2016-12-24":23,"2016-12-25":23},"losstimes":{"2016-12-13":4,"2016-12-14":8,"2016-12-15":8,"2016-12-16":9,"2016-12-17":4,"2016-12-18":2,"2016-12-26":4}};
|
||
|
var dataJson = {$json_data};
|
||
|
</script>
|
||
|
<switch name='Think.get.d'>
|
||
|
<case value='1'><script>
|
||
|
lossMoneyChart();
|
||
|
</script></case>
|
||
|
<case value='2'><script>
|
||
|
lossTimesChart();
|
||
|
</script></case>
|
||
|
<default />
|
||
|
<script>
|
||
|
lossPlayerChart();
|
||
|
</script>
|
||
|
</switch>
|
||
|
<script>
|
||
|
//导航高亮
|
||
|
highlight_subnav('{:U('stat/userloss')}');
|
||
|
$(function(){
|
||
|
//搜索功能
|
||
|
$("#search").click(function(){
|
||
|
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 == ''){
|
||
|
layer.msg('请选择搜索时间');
|
||
|
return false;
|
||
|
}
|
||
|
if (start !='' && end != ''){
|
||
|
if (Date.parse(start) > Date.parse(end)){
|
||
|
layer.msg('开始时间必须小于等于结束时间');
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
var index = $('#generalTabs li.active').attr('data-id');
|
||
|
window.location.href = url+'&d='+index;
|
||
|
});
|
||
|
$("#search1").click(function(){
|
||
|
var url = $(this).attr('url');
|
||
|
var query = $('.jssearch').find('input').serialize();
|
||
|
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
|
||
|
query = query.replace(/^&/g,'');
|
||
|
if( url.indexOf('?')>0 ){
|
||
|
url += '&' + query;
|
||
|
}else{
|
||
|
url += '?' + query;
|
||
|
}
|
||
|
window.location.href = url;
|
||
|
});
|
||
|
$("#search2").click(function(){
|
||
|
var url = $(this).attr('url');
|
||
|
var query = $('.jssearch').find('input').serialize();
|
||
|
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
|
||
|
query = query.replace(/^&/g,'');
|
||
|
if( url.indexOf('?')>0 ){
|
||
|
url += '&' + query;
|
||
|
}else{
|
||
|
url += '?' + query;
|
||
|
}
|
||
|
window.location.href = url;
|
||
|
});
|
||
|
//回车自动提交
|
||
|
$('.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
|
||
|
});
|
||
|
|
||
|
$('#datetimepicker').datetimepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
language:"zh-CN",
|
||
|
minView:2,
|
||
|
autoclose:true,
|
||
|
pickerPosition:'bottom-left'
|
||
|
})
|
||
|
})
|
||
|
</script>
|
||
|
</block>
|