Commit 450a6a25d59a5d4bba816bf8c0eb4a04c0d2c226

Authored by teemitop
1 parent e3276373

首页增加最近7天数据统计

... ... @@ -2,6 +2,7 @@
namespace app\admin\controller;
use think\Db;
use think\facade\Env;
use think\facade\Request;
class Index extends Common
{
public function initialize(){
... ... @@ -45,7 +46,45 @@ class Index extends Common
$this->assign('menus',json_encode($menus,true));
return $this->fetch();
}
//获取最近7天的所有日期
public function GetDate($format='Y-m-d'){
//组合数据
$date = [];
for ($i=1; $i<=7; $i++){
$date[date($format ,strtotime( '+' . $i-7 .' days'))]['sta'] = strtotime(date($format,strtotime( '+' . $i-7 .' days'))." 00:00:00");
$date[date($format ,strtotime( '+' . $i-7 .' days'))]['end'] = strtotime(date($format,strtotime( '+' . $i-7 .' days'))." 23:59:59");
}
return $date;
}
public function main(){
if(Request::isAjax()) {
$arr = array();
$time = $this->GetDate();
foreach ($time as $key => $value) {
$time[$key]['list'] = array_column( Db::query("SELECT
type
FROM
`xt-member-two-LINE`.xt_dc_reserve AS r
LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS t ON r.sid = t.sid
WHERE
r.cdate BETWEEN ".$value['sta']."
AND ".$value['end']."
AND t.type_id = 1"), 'type');
}
foreach ($time as $key => $value) {
$arr['time'][] = $key; //日期
$arr['online'][] = array_sum($value['list']); //在线订单
$arr['unline'][] = count($value['list']) - array_sum($value['list']); //内部订单
}
$arr['online_sum'] = array_sum($arr['online']);
$arr['unline_sum'] = array_sum($arr['unline']);
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$arr,'rel'=>1];
}
$version = Db::query('SELECT VERSION() AS ver');
$config = [
'url' => $_SERVER['HTTP_HOST'],
... ... @@ -58,6 +97,7 @@ class Index extends Common
'mysql_version' => $version[0]['ver'],
'max_upload_size' => ini_get('upload_max_filesize')
];
//查询最近7天预订情况
$this->assign('config', $config);
return $this->fetch();
}
... ...
... ... @@ -70,19 +70,19 @@
<cite>控制面板</cite>
</li>
</ul>
{if session('username') eq "admin"}
<!--{if session('username') eq "admin"}-->
<div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;">
<div class="layui-tab-item layui-show">
<iframe src="{:url('main')}"></iframe>
</div>
</div>
{else}
<!--{else}
<div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;">
<div class="layui-tab-item layui-show">
<iframe src="{:url('welcome')}"></iframe>
</div>
</div>
{/if}
{/if}-->
</div>
</div>
<div class="layui-footer footer footer-demo" id="admin-footer">
... ...
... ... @@ -6,10 +6,24 @@
<col width="40%">
<col>
</colgroup>
<fieldset class="layui-elem-field layui-field-title">
<legend>预订数据概览</legend>
</fieldset>
<div id="container" style="width: 60%;height:400px;float:left;"></div>
<div id="container1" style="width: 500px;height:400px;margin-left:65%"></div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script>
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=1iGjZaNqCgMp0vtQ8xB2ilbAcX9zTugj&__ec_v__=20190126"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script>
<fieldset class="layui-elem-field layui-field-title">
<legend>系统信息</legend>
</fieldset>
<thead>
<tr>
<th class="text-center" colspan="2">{:lang('systemInfo')}</th>
</tr>
</thead>
<tbody>
<tr>
... ... @@ -33,10 +47,6 @@
<td>{$config.server_ip}</td>
</tr>
<tr>
<td>WEB运行环境</td>
<td>{$config.server_soft}</td>
</tr>
<tr>
<td>MySQL数据库版本</td>
<td>{$config.mysql_version}</td>
</tr>
... ... @@ -49,19 +59,176 @@
<td>最大上传限制</td>
<td>{$config.max_upload_size}</td>
</tr>
<tr>
<td>CLTPHP版本</td>
<td>{:config('version')}</td>
</tr>
</tbody>
</table>
</div>
</div>
{include file="common/foot"/}
<script>
layui.use('table', function() {
var table = layui.table;
<script type="text/javascript">
layui.use(['table', 'layer'], function(){
var table = layui.table;
var layer = layui.layer;
var $ = layui.jquery;
var endworkdate = null;
//页面一加载就发送ajax
$(function(){
loading = layer.load(1, {shade: [0.1, '#fff']});
$.ajax({
url: "/admin/Index/main",
type: "POST",
datType: "json",
success: function(data){
layer.close(loading);
var dom = document.getElementById("container");
var dom1 = document.getElementById("container1");
var myChart = echarts.init(dom);
var myChart1 = echarts.init(dom1);
var app = {};
option = null;
option = {
title: {
text: '一键订近一周预订来源',
subtext: '数据来源仅合作店铺',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
legend: {
data: ['在线订单', '内部订单'],
left: 'left',
},
toolbox: {
feature: {
saveAsImage: {}
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
boundaryGap: false,
data: data.data.time
}
],
yAxis: [
{
type: 'value',
}
],
series: [
{
name: '在线订单',
type: 'line',
stack: '总量',
smooth: true,
areaStyle: {color: '#37a2da'},
lineStyle: {
color: '#2195ae',
width: 3
},
itemStyle: {color: '#2195ae',},
data: data.data.online
},
{
name: '内部订单',
type: 'line',
smooth: true,
stack: '总量',
areaStyle: {color: '#46b1c3'},
lineStyle: {
color: '#66e0e3',
width: 3
},
itemStyle: {color: '#66e0e3',},
data: data.data.unline
}
]
};
option1 = null;
option1 = {
toolbox: {
feature: {
saveAsImage: {}
}
},
title: {
text: '一键订近一周预订来源',
subtext: '数据来源仅合作店铺',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 'left',
data: ['在线预订', '内部预订']
},
series: [
{
name: '数据概览',
type: 'pie',
radius: '55%',
center: ['50%', '55%'],
data: [
{
value:data.data.online_sum,
name:'在线预订',
itemStyle: {
color: '#37a2da'
}
},
{
value:data.data.unline_sum,
name:'内部预订',
itemStyle: {
color: '#46b1c3'
}
}
],
clockwise: true,
label: {
normal: {
textStyle: {
fontSize: 18,
color: '#333333'
}
}
},
itemStyle: {
// 设置扇形的颜色
shadowBlur: 150,
shadowColor: 'rgba(5, 10, 243)'
}
}
]
};
if (option1 && typeof option1 === "object") {
myChart1.setOption(option1, true);
}
if (option && typeof option === "object") {
myChart.setOption(option, true);
}
}
});
})
});
</script>
</body>
</html>
\ No newline at end of file
... ...