Commit 450a6a25d59a5d4bba816bf8c0eb4a04c0d2c226

Authored by teemitop
1 parent e3276373

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

@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 namespace app\admin\controller; 2 namespace app\admin\controller;
3 use think\Db; 3 use think\Db;
4 use think\facade\Env; 4 use think\facade\Env;
  5 +use think\facade\Request;
5 class Index extends Common 6 class Index extends Common
6 { 7 {
7 public function initialize(){ 8 public function initialize(){
@@ -45,7 +46,45 @@ class Index extends Common @@ -45,7 +46,45 @@ class Index extends Common
45 $this->assign('menus',json_encode($menus,true)); 46 $this->assign('menus',json_encode($menus,true));
46 return $this->fetch(); 47 return $this->fetch();
47 } 48 }
  49 +
  50 + //获取最近7天的所有日期
  51 + public function GetDate($format='Y-m-d'){
  52 + //组合数据
  53 + $date = [];
  54 + for ($i=1; $i<=7; $i++){
  55 + $date[date($format ,strtotime( '+' . $i-7 .' days'))]['sta'] = strtotime(date($format,strtotime( '+' . $i-7 .' days'))." 00:00:00");
  56 + $date[date($format ,strtotime( '+' . $i-7 .' days'))]['end'] = strtotime(date($format,strtotime( '+' . $i-7 .' days'))." 23:59:59");
  57 + }
  58 + return $date;
  59 + }
48 public function main(){ 60 public function main(){
  61 +
  62 + if(Request::isAjax()) {
  63 + $arr = array();
  64 + $time = $this->GetDate();
  65 + foreach ($time as $key => $value) {
  66 + $time[$key]['list'] = array_column( Db::query("SELECT
  67 + type
  68 + FROM
  69 + `xt-member-two-LINE`.xt_dc_reserve AS r
  70 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS t ON r.sid = t.sid
  71 + WHERE
  72 + r.cdate BETWEEN ".$value['sta']."
  73 + AND ".$value['end']."
  74 + AND t.type_id = 1"), 'type');
  75 + }
  76 + foreach ($time as $key => $value) {
  77 + $arr['time'][] = $key; //日期
  78 + $arr['online'][] = array_sum($value['list']); //在线订单
  79 + $arr['unline'][] = count($value['list']) - array_sum($value['list']); //内部订单
  80 + }
  81 +
  82 + $arr['online_sum'] = array_sum($arr['online']);
  83 + $arr['unline_sum'] = array_sum($arr['unline']);
  84 +
  85 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$arr,'rel'=>1];
  86 + }
  87 +
49 $version = Db::query('SELECT VERSION() AS ver'); 88 $version = Db::query('SELECT VERSION() AS ver');
50 $config = [ 89 $config = [
51 'url' => $_SERVER['HTTP_HOST'], 90 'url' => $_SERVER['HTTP_HOST'],
@@ -58,6 +97,7 @@ class Index extends Common @@ -58,6 +97,7 @@ class Index extends Common
58 'mysql_version' => $version[0]['ver'], 97 'mysql_version' => $version[0]['ver'],
59 'max_upload_size' => ini_get('upload_max_filesize') 98 'max_upload_size' => ini_get('upload_max_filesize')
60 ]; 99 ];
  100 + //查询最近7天预订情况
61 $this->assign('config', $config); 101 $this->assign('config', $config);
62 return $this->fetch(); 102 return $this->fetch();
63 } 103 }
@@ -70,19 +70,19 @@ @@ -70,19 +70,19 @@
70 <cite>控制面板</cite> 70 <cite>控制面板</cite>
71 </li> 71 </li>
72 </ul> 72 </ul>
73 - {if session('username') eq "admin"} 73 + <!--{if session('username') eq "admin"}-->
74 <div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;"> 74 <div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;">
75 <div class="layui-tab-item layui-show"> 75 <div class="layui-tab-item layui-show">
76 <iframe src="{:url('main')}"></iframe> 76 <iframe src="{:url('main')}"></iframe>
77 </div> 77 </div>
78 </div> 78 </div>
79 - {else} 79 + <!--{else}
80 <div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;"> 80 <div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;">
81 <div class="layui-tab-item layui-show"> 81 <div class="layui-tab-item layui-show">
82 <iframe src="{:url('welcome')}"></iframe> 82 <iframe src="{:url('welcome')}"></iframe>
83 </div> 83 </div>
84 </div> 84 </div>
85 - {/if} 85 + {/if}-->
86 </div> 86 </div>
87 </div> 87 </div>
88 <div class="layui-footer footer footer-demo" id="admin-footer"> 88 <div class="layui-footer footer footer-demo" id="admin-footer">
@@ -6,10 +6,24 @@ @@ -6,10 +6,24 @@
6 <col width="40%"> 6 <col width="40%">
7 <col> 7 <col>
8 </colgroup> 8 </colgroup>
  9 + <fieldset class="layui-elem-field layui-field-title">
  10 + <legend>预订数据概览</legend>
  11 + </fieldset>
  12 +<div id="container" style="width: 60%;height:400px;float:left;"></div>
  13 +<div id="container1" style="width: 500px;height:400px;margin-left:65%"></div>
  14 +
  15 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
  16 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
  17 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script>
  18 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
  19 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
  20 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script>
  21 + <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=1iGjZaNqCgMp0vtQ8xB2ilbAcX9zTugj&__ec_v__=20190126"></script>
  22 + <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script>
  23 + <fieldset class="layui-elem-field layui-field-title">
  24 + <legend>系统信息</legend>
  25 + </fieldset>
9 <thead> 26 <thead>
10 - <tr>  
11 - <th class="text-center" colspan="2">{:lang('systemInfo')}</th>  
12 - </tr>  
13 </thead> 27 </thead>
14 <tbody> 28 <tbody>
15 <tr> 29 <tr>
@@ -33,10 +47,6 @@ @@ -33,10 +47,6 @@
33 <td>{$config.server_ip}</td> 47 <td>{$config.server_ip}</td>
34 </tr> 48 </tr>
35 <tr> 49 <tr>
36 - <td>WEB运行环境</td>  
37 - <td>{$config.server_soft}</td>  
38 - </tr>  
39 - <tr>  
40 <td>MySQL数据库版本</td> 50 <td>MySQL数据库版本</td>
41 <td>{$config.mysql_version}</td> 51 <td>{$config.mysql_version}</td>
42 </tr> 52 </tr>
@@ -49,19 +59,176 @@ @@ -49,19 +59,176 @@
49 <td>最大上传限制</td> 59 <td>最大上传限制</td>
50 <td>{$config.max_upload_size}</td> 60 <td>{$config.max_upload_size}</td>
51 </tr> 61 </tr>
52 - <tr>  
53 - <td>CLTPHP版本</td>  
54 - <td>{:config('version')}</td>  
55 - </tr>  
56 </tbody> 62 </tbody>
57 </table> 63 </table>
58 </div> 64 </div>
59 </div> 65 </div>
60 {include file="common/foot"/} 66 {include file="common/foot"/}
61 -<script>  
62 - layui.use('table', function() {  
63 - var table = layui.table; 67 +<script type="text/javascript">
  68 +layui.use(['table', 'layer'], function(){
  69 + var table = layui.table;
  70 + var layer = layui.layer;
  71 + var $ = layui.jquery;
  72 + var endworkdate = null;
  73 +
  74 + //页面一加载就发送ajax
  75 + $(function(){
  76 + loading = layer.load(1, {shade: [0.1, '#fff']});
  77 + $.ajax({
  78 + url: "/admin/Index/main",
  79 + type: "POST",
  80 + datType: "json",
  81 + success: function(data){
  82 + layer.close(loading);
  83 + var dom = document.getElementById("container");
  84 + var dom1 = document.getElementById("container1");
  85 + var myChart = echarts.init(dom);
  86 + var myChart1 = echarts.init(dom1);
  87 + var app = {};
  88 + option = null;
  89 + option = {
  90 + title: {
  91 + text: '一键订近一周预订来源',
  92 + subtext: '数据来源仅合作店铺',
  93 + left: 'center'
  94 + },
  95 + tooltip: {
  96 + trigger: 'axis',
  97 + axisPointer: {
  98 + type: 'cross',
  99 + label: {
  100 + backgroundColor: '#6a7985'
  101 + }
  102 + }
  103 + },
  104 + legend: {
  105 + data: ['在线订单', '内部订单'],
  106 + left: 'left',
  107 + },
  108 + toolbox: {
  109 + feature: {
  110 + saveAsImage: {}
  111 + }
  112 + },
  113 + grid: {
  114 + left: '3%',
  115 + right: '4%',
  116 + bottom: '3%',
  117 + containLabel: true
  118 + },
  119 + xAxis: [
  120 + {
  121 + type: 'category',
  122 + boundaryGap: false,
  123 + data: data.data.time
  124 + }
  125 + ],
  126 + yAxis: [
  127 + {
  128 + type: 'value',
  129 + }
  130 + ],
  131 + series: [
  132 + {
  133 + name: '在线订单',
  134 + type: 'line',
  135 + stack: '总量',
  136 + smooth: true,
  137 + areaStyle: {color: '#37a2da'},
  138 + lineStyle: {
  139 + color: '#2195ae',
  140 + width: 3
  141 + },
  142 + itemStyle: {color: '#2195ae',},
  143 + data: data.data.online
  144 + },
  145 +
  146 + {
  147 + name: '内部订单',
  148 + type: 'line',
  149 + smooth: true,
  150 + stack: '总量',
  151 + areaStyle: {color: '#46b1c3'},
  152 + lineStyle: {
  153 + color: '#66e0e3',
  154 + width: 3
  155 + },
  156 + itemStyle: {color: '#66e0e3',},
  157 + data: data.data.unline
  158 + }
  159 + ]
  160 + };
  161 + option1 = null;
  162 + option1 = {
  163 + toolbox: {
  164 + feature: {
  165 + saveAsImage: {}
  166 + }
  167 + },
  168 + title: {
  169 + text: '一键订近一周预订来源',
  170 + subtext: '数据来源仅合作店铺',
  171 + left: 'center'
  172 + },
  173 + tooltip: {
  174 + trigger: 'item',
  175 + formatter: '{a} <br/>{b} : {c} ({d}%)'
  176 + },
  177 + legend: {
  178 + orient: 'vertical',
  179 + left: 'left',
  180 + data: ['在线预订', '内部预订']
  181 + },
  182 + series: [
  183 + {
  184 + name: '数据概览',
  185 + type: 'pie',
  186 + radius: '55%',
  187 + center: ['50%', '55%'],
  188 + data: [
  189 + {
  190 + value:data.data.online_sum,
  191 + name:'在线预订',
  192 + itemStyle: {
  193 + color: '#37a2da'
  194 + }
  195 + },
  196 + {
  197 + value:data.data.unline_sum,
  198 + name:'内部预订',
  199 + itemStyle: {
  200 + color: '#46b1c3'
  201 + }
  202 + }
  203 + ],
  204 + clockwise: true,
  205 + label: {
  206 + normal: {
  207 + textStyle: {
  208 + fontSize: 18,
  209 + color: '#333333'
  210 + }
  211 + }
  212 + },
  213 + itemStyle: {
  214 + // 设置扇形的颜色
  215 + shadowBlur: 150,
  216 + shadowColor: 'rgba(5, 10, 243)'
  217 + }
  218 + }
  219 + ]
  220 + };
  221 + if (option1 && typeof option1 === "object") {
  222 + myChart1.setOption(option1, true);
  223 + }
  224 + if (option && typeof option === "object") {
  225 + myChart.setOption(option, true);
  226 + }
  227 + }
  228 + });
  229 +
64 }) 230 })
  231 +});
65 </script> 232 </script>
66 </body> 233 </body>
67 </html> 234 </html>