320 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
		
		
			
		
	
	
			320 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
| 
								 | 
							
								{layout name="layout1" /}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<div class="wrapper">
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    <div class="layui-form">
							 | 
						|||
| 
								 | 
							
								        <div class="layui-card">
							 | 
						|||
| 
								 | 
							
								            <div class="layui-card-body">
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                <div class="layui-inline">
							 | 
						|||
| 
								 | 
							
								                    <label class="layui-form-label">汇总时间:</label>
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-input-inline">
							 | 
						|||
| 
								 | 
							
								                        <div class="layui-input-inline">
							 | 
						|||
| 
								 | 
							
								                            <input type="text" name="start_time" class="layui-input" id="start_time"
							 | 
						|||
| 
								 | 
							
								                                   placeholder="" autocomplete="off">
							 | 
						|||
| 
								 | 
							
								                        </div>
							 | 
						|||
| 
								 | 
							
								                    </div>
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-input-inline" style="margin-right: 5px;width: 20px;">
							 | 
						|||
| 
								 | 
							
								                        <label class="layui-form-mid">至</label>
							 | 
						|||
| 
								 | 
							
								                    </div>
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-input-inline">
							 | 
						|||
| 
								 | 
							
								                        <input type="text" name="end_time" class="layui-input" id="end_time"
							 | 
						|||
| 
								 | 
							
								                               placeholder="" autocomplete="off">
							 | 
						|||
| 
								 | 
							
								                    </div>
							 | 
						|||
| 
								 | 
							
								                </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                <div class="layui-inline">
							 | 
						|||
| 
								 | 
							
								                    <button class="layui-btn layui-btn-sm layuiadmin-btn-ad {$view_theme_color}" lay-submit
							 | 
						|||
| 
								 | 
							
								                            lay-filter="menber-search">查询
							 | 
						|||
| 
								 | 
							
								                    </button>
							 | 
						|||
| 
								 | 
							
								                    <button class="layui-btn layui-btn-sm layuiadmin-btn-ad layui-btn-primary " lay-submit
							 | 
						|||
| 
								 | 
							
								                            lay-filter="menber-clear-search">重置
							 | 
						|||
| 
								 | 
							
								                    </button>
							 | 
						|||
| 
								 | 
							
								                </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            </div>
							 | 
						|||
| 
								 | 
							
								        </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        <div class="layui-row layui-col-space15">
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            <div class="layui-col-sm6 layui-col-md3">
							 | 
						|||
| 
								 | 
							
								                <div class="layui-card">
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-card-header">
							 | 
						|||
| 
								 | 
							
								                        会员访问量(人)
							 | 
						|||
| 
								 | 
							
								                    </div>
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-card-body layuiadmin-card-list">
							 | 
						|||
| 
								 | 
							
								                        <p class="layuiadmin-big-font" id="user_count">0</p>
							 | 
						|||
| 
								 | 
							
								                    </div>
							 | 
						|||
| 
								 | 
							
								                </div>
							 | 
						|||
| 
								 | 
							
								            </div>
							 | 
						|||
| 
								 | 
							
								        </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        <!--会员访问量分析图-->
							 | 
						|||
| 
								 | 
							
								        <div class="layui-card" style="margin-top:20px">
							 | 
						|||
| 
								 | 
							
								            <div class="layui-card-body">
							 | 
						|||
| 
								 | 
							
								                <div class="layui-form-item">
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-input-inline layui-card-header" style="">近15天会员访问量(人)</div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                <div class="layui-form-item">
							 | 
						|||
| 
								 | 
							
								                    <div id="memberCharts" style="width: 100%;height: 80vh;"></div>
							 | 
						|||
| 
								 | 
							
								                </div>
							 | 
						|||
| 
								 | 
							
								            </div>
							 | 
						|||
| 
								 | 
							
								        </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    </div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								</div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<script>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    layui.config({
							 | 
						|||
| 
								 | 
							
								        version: "{$front_version}",
							 | 
						|||
| 
								 | 
							
								        base: '/static/plug/layui-admin/dist/layuiadmin/' //静态资源所在路径
							 | 
						|||
| 
								 | 
							
								    }).extend({
							 | 
						|||
| 
								 | 
							
								        index: 'lib/index' //主入口模块
							 | 
						|||
| 
								 | 
							
								    }).use(['index', 'table', 'like', 'echarts', 'form'], function () {
							 | 
						|||
| 
								 | 
							
								        var $ = layui.$
							 | 
						|||
| 
								 | 
							
								            , form = layui.form
							 | 
						|||
| 
								 | 
							
								            , like = layui.like
							 | 
						|||
| 
								 | 
							
								            , echarts = layui.echarts
							 | 
						|||
| 
								 | 
							
								            , laydate = layui.laydate;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //日期时间范围
							 | 
						|||
| 
								 | 
							
								        laydate.render({
							 | 
						|||
| 
								 | 
							
								            elem: '#start_time'
							 | 
						|||
| 
								 | 
							
								            , type: 'datetime'
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        laydate.render({
							 | 
						|||
| 
								 | 
							
								            elem: '#end_time'
							 | 
						|||
| 
								 | 
							
								            , type: 'datetime'
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //监听搜索
							 | 
						|||
| 
								 | 
							
								        form.on('submit(menber-search)', function (data) {
							 | 
						|||
| 
								 | 
							
								            graphData();
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //清空查询
							 | 
						|||
| 
								 | 
							
								        form.on('submit(menber-clear-search)', function () {
							 | 
						|||
| 
								 | 
							
								            $('#start_time').val('');
							 | 
						|||
| 
								 | 
							
								            $('#end_time').val('');
							 | 
						|||
| 
								 | 
							
								            graphData();
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        graphData();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        function graphData() {
							 | 
						|||
| 
								 | 
							
								            var start_time = $('#start_time').val();
							 | 
						|||
| 
								 | 
							
								            var end_time = $('#end_time').val();
							 | 
						|||
| 
								 | 
							
								            like.ajax({
							 | 
						|||
| 
								 | 
							
								                url: '{:url("statistics/visit")}',
							 | 
						|||
| 
								 | 
							
								                data: {'start_time': start_time, 'end_time': end_time},
							 | 
						|||
| 
								 | 
							
								                type: "post",
							 | 
						|||
| 
								 | 
							
								                success: function (res) {
							 | 
						|||
| 
								 | 
							
								                    $('#user_count').text(res.data.user_count);
							 | 
						|||
| 
								 | 
							
								                    // 默认选中7天内时间
							 | 
						|||
| 
								 | 
							
								                    $('#start_time').val(res.data.start_time);
							 | 
						|||
| 
								 | 
							
								                    $('#end_time').val(res.data.end_time);
							 | 
						|||
| 
								 | 
							
								                    start_time = res.data.start_time;
							 | 
						|||
| 
								 | 
							
								                    end_time = res.data.end_time;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    var memberNum = res.data.echarts_count;
							 | 
						|||
| 
								 | 
							
								                    var newMember = res.data.echarts_add;
							 | 
						|||
| 
								 | 
							
								                    var xData = res.data.days;
							 | 
						|||
| 
								 | 
							
								                    var option = setOption(memberNum, newMember, xData);
							 | 
						|||
| 
								 | 
							
								                    let chart = document.getElementById('memberCharts');
							 | 
						|||
| 
								 | 
							
								                    let memberChart = echarts.init(chart);
							 | 
						|||
| 
								 | 
							
								                    memberChart.setOption(option, true);
							 | 
						|||
| 
								 | 
							
								                    window.addEventListener('resize', function () {
							 | 
						|||
| 
								 | 
							
								                        memberChart.resize()
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //会员访问量-图标设置
							 | 
						|||
| 
								 | 
							
								        function setOption(memberNum, newMember, xData) {
							 | 
						|||
| 
								 | 
							
								            option = {
							 | 
						|||
| 
								 | 
							
								                backgroundColor: '#fff',
							 | 
						|||
| 
								 | 
							
								                legend: {
							 | 
						|||
| 
								 | 
							
								                    icon: 'circle',
							 | 
						|||
| 
								 | 
							
								                    top: '5%',
							 | 
						|||
| 
								 | 
							
								                    right: '5%',
							 | 
						|||
| 
								 | 
							
								                    itemWidth: 6,
							 | 
						|||
| 
								 | 
							
								                    itemGap: 20,
							 | 
						|||
| 
								 | 
							
								                    textStyle: {
							 | 
						|||
| 
								 | 
							
								                        color: '#556677'
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                },
							 | 
						|||
| 
								 | 
							
								                tooltip: {
							 | 
						|||
| 
								 | 
							
								                    trigger: 'axis',
							 | 
						|||
| 
								 | 
							
								                    backgroundColor: '#fff',
							 | 
						|||
| 
								 | 
							
								                    textStyle: {
							 | 
						|||
| 
								 | 
							
								                        color: '#5c6c7c'
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    padding: [10, 10],
							 | 
						|||
| 
								 | 
							
								                    extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)'
							 | 
						|||
| 
								 | 
							
								                },
							 | 
						|||
| 
								 | 
							
								                grid: {
							 | 
						|||
| 
								 | 
							
								                    top: '15%'
							 | 
						|||
| 
								 | 
							
								                },
							 | 
						|||
| 
								 | 
							
								                xAxis: [{
							 | 
						|||
| 
								 | 
							
								                    type: 'category',
							 | 
						|||
| 
								 | 
							
								                    name: '(日期)',
							 | 
						|||
| 
								 | 
							
								                    data: xData,
							 | 
						|||
| 
								 | 
							
								                    axisLine: {
							 | 
						|||
| 
								 | 
							
								                        lineStyle: {
							 | 
						|||
| 
								 | 
							
								                            color: 'rgba(107,107,107,0.37)', //x轴颜色
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    axisTick: {
							 | 
						|||
| 
								 | 
							
								                        show: false
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    axisLabel: {
							 | 
						|||
| 
								 | 
							
								                        interval: 0,
							 | 
						|||
| 
								 | 
							
								                        textStyle: {
							 | 
						|||
| 
								 | 
							
								                            color: '#999' //坐标轴字颜色
							 | 
						|||
| 
								 | 
							
								                        },
							 | 
						|||
| 
								 | 
							
								                        margin: 15
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    axisPointer: {
							 | 
						|||
| 
								 | 
							
								                        label: {
							 | 
						|||
| 
								 | 
							
								                            padding: [11, 5, 7],
							 | 
						|||
| 
								 | 
							
								                            backgroundColor: {
							 | 
						|||
| 
								 | 
							
								                                type: 'linear',
							 | 
						|||
| 
								 | 
							
								                                x: 0,
							 | 
						|||
| 
								 | 
							
								                                y: 0,
							 | 
						|||
| 
								 | 
							
								                                x2: 0,
							 | 
						|||
| 
								 | 
							
								                                y2: 1,
							 | 
						|||
| 
								 | 
							
								                                colorStops: [{
							 | 
						|||
| 
								 | 
							
								                                    offset: 0,
							 | 
						|||
| 
								 | 
							
								                                    color: '#fff' // 0% 处的颜色
							 | 
						|||
| 
								 | 
							
								                                }, {
							 | 
						|||
| 
								 | 
							
								                                    offset: 0.9,
							 | 
						|||
| 
								 | 
							
								                                    color: '#fff' // 0% 处的颜色
							 | 
						|||
| 
								 | 
							
								                                }, {
							 | 
						|||
| 
								 | 
							
								                                    offset: 0.9,
							 | 
						|||
| 
								 | 
							
								                                    color: '#33c0cd' // 0% 处的颜色
							 | 
						|||
| 
								 | 
							
								                                }, {
							 | 
						|||
| 
								 | 
							
								                                    offset: 1,
							 | 
						|||
| 
								 | 
							
								                                    color: '#33c0cd' // 100% 处的颜色
							 | 
						|||
| 
								 | 
							
								                                }],
							 | 
						|||
| 
								 | 
							
								                                global: false // 缺省为 false
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    boundaryGap: false
							 | 
						|||
| 
								 | 
							
								                }],
							 | 
						|||
| 
								 | 
							
								                yAxis: [{
							 | 
						|||
| 
								 | 
							
								                    type: 'value',
							 | 
						|||
| 
								 | 
							
								                    name: '(人)',
							 | 
						|||
| 
								 | 
							
								                    axisTick: {
							 | 
						|||
| 
								 | 
							
								                        show: false
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    axisLine: {
							 | 
						|||
| 
								 | 
							
								                        show: true,
							 | 
						|||
| 
								 | 
							
								                        lineStyle: {
							 | 
						|||
| 
								 | 
							
								                            color: 'rgba(107,107,107,0.37)', //y轴颜色
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    axisLabel: {
							 | 
						|||
| 
								 | 
							
								                        textStyle: {
							 | 
						|||
| 
								 | 
							
								                            color: '#999'
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    splitLine: {
							 | 
						|||
| 
								 | 
							
								                        show: false
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }],
							 | 
						|||
| 
								 | 
							
								                series: [{
							 | 
						|||
| 
								 | 
							
								                    name: '会员访问量',
							 | 
						|||
| 
								 | 
							
								                    type: 'line',
							 | 
						|||
| 
								 | 
							
								                    data: newMember,
							 | 
						|||
| 
								 | 
							
								                    symbolSize: 1,
							 | 
						|||
| 
								 | 
							
								                    symbol: 'circle',
							 | 
						|||
| 
								 | 
							
								                    smooth: true,
							 | 
						|||
| 
								 | 
							
								                    yAxisIndex: 0,
							 | 
						|||
| 
								 | 
							
								                    showSymbol: false,
							 | 
						|||
| 
								 | 
							
								                    lineStyle: {
							 | 
						|||
| 
								 | 
							
								                        width: 5,
							 | 
						|||
| 
								 | 
							
								                        color: new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
							 | 
						|||
| 
								 | 
							
								                            offset: 0,
							 | 
						|||
| 
								 | 
							
								                            color: '#73DD39'
							 | 
						|||
| 
								 | 
							
								                        },
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                offset: 1,
							 | 
						|||
| 
								 | 
							
								                                color: '#73DDFF'
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        ]),
							 | 
						|||
| 
								 | 
							
								                        shadowColor: 'rgba(115,221,255, 0.3)',
							 | 
						|||
| 
								 | 
							
								                        shadowBlur: 10,
							 | 
						|||
| 
								 | 
							
								                        shadowOffsetY: 20
							 | 
						|||
| 
								 | 
							
								                    },
							 | 
						|||
| 
								 | 
							
								                    itemStyle: {
							 | 
						|||
| 
								 | 
							
								                        normal: {
							 | 
						|||
| 
								 | 
							
								                            color: colorList[1],
							 | 
						|||
| 
								 | 
							
								                            borderColor: colorList[1]
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }]
							 | 
						|||
| 
								 | 
							
								            };
							 | 
						|||
| 
								 | 
							
								            return option;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								</script>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<script type="text/javascript">
							 | 
						|||
| 
								 | 
							
								    (function () {
							 | 
						|||
| 
								 | 
							
								        var tab_tit = document.getElementById('think_page_trace_tab_tit').getElementsByTagName('span');
							 | 
						|||
| 
								 | 
							
								        var tab_cont = document.getElementById('think_page_trace_tab_cont').getElementsByTagName('div');
							 | 
						|||
| 
								 | 
							
								        var open = document.getElementById('think_page_trace_open');
							 | 
						|||
| 
								 | 
							
								        var close = document.getElementById('think_page_trace_close').children[0];
							 | 
						|||
| 
								 | 
							
								        var trace = document.getElementById('think_page_trace_tab');
							 | 
						|||
| 
								 | 
							
								        var cookie = document.cookie.match(/thinkphp_show_page_trace=(\d\|\d)/);
							 | 
						|||
| 
								 | 
							
								        var history = (cookie && typeof cookie[1] != 'undefined' && cookie[1].split('|')) || [0, 0];
							 | 
						|||
| 
								 | 
							
								        open.onclick = function () {
							 | 
						|||
| 
								 | 
							
								            trace.style.display = 'block';
							 | 
						|||
| 
								 | 
							
								            this.style.display = 'none';
							 | 
						|||
| 
								 | 
							
								            close.parentNode.style.display = 'block';
							 | 
						|||
| 
								 | 
							
								            history[0] = 1;
							 | 
						|||
| 
								 | 
							
								            document.cookie = 'thinkphp_show_page_trace=' + history.join('|')
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        close.onclick = function () {
							 | 
						|||
| 
								 | 
							
								            trace.style.display = 'none';
							 | 
						|||
| 
								 | 
							
								            this.parentNode.style.display = 'none';
							 | 
						|||
| 
								 | 
							
								            open.style.display = 'block';
							 | 
						|||
| 
								 | 
							
								            history[0] = 0;
							 | 
						|||
| 
								 | 
							
								            document.cookie = 'thinkphp_show_page_trace=' + history.join('|')
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        for (var i = 0; i < tab_tit.length; i++) {
							 | 
						|||
| 
								 | 
							
								            tab_tit[i].onclick = (function (i) {
							 | 
						|||
| 
								 | 
							
								                return function () {
							 | 
						|||
| 
								 | 
							
								                    for (var j = 0; j < tab_cont.length; j++) {
							 | 
						|||
| 
								 | 
							
								                        tab_cont[j].style.display = 'none';
							 | 
						|||
| 
								 | 
							
								                        tab_tit[j].style.color = '#999';
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    tab_cont[i].style.display = 'block';
							 | 
						|||
| 
								 | 
							
								                    tab_tit[i].style.color = '#000';
							 | 
						|||
| 
								 | 
							
								                    history[1] = i;
							 | 
						|||
| 
								 | 
							
								                    document.cookie = 'thinkphp_show_page_trace=' + history.join('|')
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            })(i)
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        parseInt(history[0]) && open.click();
							 | 
						|||
| 
								 | 
							
								        tab_tit[history[1]].click();
							 | 
						|||
| 
								 | 
							
								    })();
							 | 
						|||
| 
								 | 
							
								</script>
							 | 
						|||
| 
								 | 
							
								</body>
							 | 
						|||
| 
								 | 
							
								</html>
							 |