dever 3 lat temu
rodzic
commit
fbfe8a24e9

+ 33 - 7
assets/layadmin/html/project/database/list.html

@@ -41,6 +41,10 @@
     left: -3px;
     margin: 0px 0px 0px 0px;
 }
+.chart {
+  width: 100%;
+  height:300px;
+}
 </style>
 <div id="load_style" style="display:none;">
 </div>
@@ -55,6 +59,26 @@
 <div id="content_1" style="display:none;"></div>
 <div id="content_2">
   <div class="layui-fluid">
+
+    <div class="layui-card" id="stat_data_card">
+      <div class="layui-card-header">数据概览</div>
+      <div class="layui-card-body">
+
+        <div class="layui-carousel layadmin-carousel layadmin-backlog">
+          <div carousel-item>
+            <ul class="layui-row layui-col-space10" id="stat_data">
+              <li class="layui-col-xs3">
+                <a class="layadmin-backlog-body">
+                  <h3>待审评论</h3>
+                  <p><cite>66</cite></p>
+                </a>
+              </li>
+              
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
     <div class="layui-card">
       <input type="hidden" name="url1" id="url" value=""/>
 
@@ -70,15 +94,15 @@
       <input type="hidden" name="method" id="method" value="search"/>
       <div id="search_param"></div> 
       <iframe id="f1" name="f1" style="display:none;"></iframe>
-      <div class="layui-card-header" style="display:none;"><span id="list-name">网站设置</span> > <span id="list-project"></span></div>
-        <div class="layui-card-body" id="search_content">
+      <div class="layui-card-header" style="display: none;"><span id="list-project">网站设置</span> > <span id="list-name"></span></div>
+      <div class="layui-card-body" id="search_content">
 
-          <div class="layui-form layui-card-header layuiadmin-card-header-auto">
-            <div class="layui-form-item">
-              <div id="search"></div>
-            </div>
+        <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+          <div class="layui-form-item">
+            <div id="search"></div>
           </div>
         </div>
+      </div>
       <div class="layui-card-body">
         <div style="padding-bottom: 10px;">
           <a class="layui-btn layuiadmin-btn-list" data-type="add" id="list-parent" style="display:none;">返回上一页</a>
@@ -86,9 +110,11 @@
           <a class="layui-btn layuiadmin-btn-list" data-type="add" id="list-add">新增</a>
 
           <span id="list-button"></span>
+
         </div>
         <div id="table_1" style="display:none;"></div>
         <div id="table_2"> 
+          <div id="chart" class="chart"></div>
           <table class="table layui-table layui-table-body" id="table">
           <thead id="list-thead">
               <tr>
@@ -131,7 +157,7 @@
   }).extend({
     formSelects: 'plugin/formselects/formselects',
     index: 'lib/index' //主入口模块
-  }).use(['index', 'contlist', 'table', 'form', 'formSelects'], function(){
+  }).use(['index', 'contlist', 'table', 'form', 'formSelects', 'console'], function(){
     var table = layui.table;
     var form = layui.form; 
     var formSelects = layui.formSelects;

+ 162 - 1
src/Database.php

@@ -58,6 +58,13 @@ class Database
      */
     private $search = false;
 
+    /**
+     * chart
+     *
+     * @var array
+     */
+    private $chart = false;
+
     /**
      * __construct
      *
@@ -628,6 +635,9 @@ class Database
                     $config['end']['insert'] = $v['value'];
                 }
                 */
+                if (isset($v['search_button'])) {
+                    $config['manage']['search']['button'][$k] = $v['search_button'];
+                }
 
                 if (isset($v['update'])) {
                     if (!isset($config['manage']['insert'])) {
@@ -1109,7 +1119,30 @@ class Database
             $search = Dever::preInput('search_');
 
             $node = Html::node(array(' style="margin-top:0px;"', ''));
-            $btn = '<div class="layui-inline"><input type="hidden" value="2" name="excel" id="excel"><button class="btn btn-primary layui-btn layuiadmin-btn-list" onclick="$(\'#form1\').attr(\'action\', \'' . $this->url('search') . '\');list_search($(this))" type="button" style="height: 38px;margin-left:0px;margin-top:-2px;">搜索</button></div>';
+
+            $btn = '<div class="layui-inline"><input type="hidden" value="2" name="excel" id="excel">';
+
+            if (isset($config['manage']['search']['button'])) {
+                foreach ($config['manage']['search']['button'] as $k => $v) {
+                    $i = 0;
+                    foreach ($v['option'] as $k1 => $v1) {
+                        $value = $k . '_' . $v['sum'] . '_' . $k1;
+                        if (!isset($search['search_button']) && $i == 0) {
+                            $search['search_button'] = $value;
+                        }
+                        if (isset($search['search_button']) && $search['search_button'] == $value) {
+                            $class = 'layui-btn-normal';
+                        } else {
+                            $class = 'layui-btn-primary';
+                        }
+
+                        $url = $this->url('list', 0, false, '&search_button=' . $k . '_' . $v['sum'] . '_' . $k1);
+                        $btn .= '<a class="btn btn-primary layui-btn layuiadmin-btn-list '.$class.'" href="'.$url.'" type="button" style="height: 38px;margin-left:0px;margin-top:-2px;">'.$v1.'</a>&nbsp;&nbsp;';
+                    }
+                }
+            }
+
+            $btn .= '<button class="btn btn-primary layui-btn layuiadmin-btn-list" onclick="$(\'#form1\').attr(\'action\', \'' . $this->url('search') . '\');list_search($(this))" type="button" style="height: 38px;margin-left:0px;margin-top:-2px;">搜索</button></div>';
 
             //$result .= '<form id="f1" action="'.$this->url('list').'" method="post">';
 
@@ -2254,6 +2287,10 @@ class Database
                             $return[$i][$ki] = $text;
 
                         }
+
+                        if (isset($config['manage']['chart'])) {
+                            $this->chart($config['manage']['chart'], $ki, $return[$i][$ki], $vi);
+                        }
                     }
                 }
 
@@ -3350,6 +3387,130 @@ class Database
         return 'reload';
     }
 
+    /**
+     * list_data
+     *
+     * @return array
+     */
+    public function list_data()
+    {
+        $config = $this->config();
+        $data = array();
+        if (isset($config['manage']['data'])) {
+            foreach ($config['manage']['data'] as $k => $v) {
+                if (is_object($v[1])) {
+                    $function = $v[1];
+                    $v[1] = $function();
+                }
+                $data[] = '<li class="layui-col-xs3">
+                <a class="layadmin-backlog-body"><h3>'.$v[0].'</h3>
+                  <p><cite>'.$v[1].'</cite></p></a></li>';
+            }
+        }
+        
+        return $data;
+    }
+
+    /**
+     * list_data
+     *
+     * @return array
+     */
+    public function list_data_show()
+    {
+        $config = $this->config();
+        if (isset($config['manage']['data'])) {
+            return 'display:block';
+        }
+        
+        return 'display:none';
+    }
+
+    /**
+     * chart
+     *
+     * @return array
+     */
+    public function chart($config, $key, $data, $struct)
+    {
+        if (!$this->chart) {
+            $this->chart = array();
+            $this->chart['x'] = array();
+            $this->chart['data'] = array();
+        }
+
+        if ($config['x'] == $key) {
+            $this->chart['x'][] = $data;
+        } elseif (in_array($key, $config['data'])) {
+            if (!isset($this->chart['data'][$key])) {
+                $this->chart['data'][$key] = array
+                (
+                    'name' => $struct['name'],
+                    'type' => 'line',
+                    'stack' => 'Total',
+                    'data' => array(),
+                );
+            }
+
+            $this->chart['data'][$key]['data'][] = $data;
+        }
+    }
+
+    /**
+     * chart_data
+     *
+     * @return array
+     */
+    public function list_chart()
+    {
+        $config = $this->config();
+        $chart = '';
+        if (isset($config['manage']['chart']) && $this->chart) {
+            $x = Dever::json_encode($this->chart['x']);
+            $this->chart['data'] = array_values($this->chart['data']);
+            $data = Dever::json_encode($this->chart['data']);
+            $echarts = Dever::assets('lib/echarts/echarts.common.min.js', 'script');
+            $chart = '<script type="text/javascript" src="'.$echarts.'"></script><script>var chartDom = document.getElementById("chart");var myChart = echarts.init(chartDom);';
+            $chart .= "var option = {
+              tooltip: {
+                trigger: 'axis'
+              },
+             
+              toolbox: {
+                feature: {
+                  saveAsImage: {}
+                }
+              },
+              xAxis: {
+                type: 'category',
+                boundaryGap: false,
+                data: ".$x."
+              },
+              yAxis: {
+                type: 'value'
+              },
+              series: ".$data."
+            };option && myChart.setOption(option);</script>";
+        }
+        
+        return $chart;
+    }
+
+    /**
+     * chart_data
+     *
+     * @return array
+     */
+    public function list_chart_show()
+    {
+        $config = $this->config();
+        if (isset($config['manage']['chart'])) {
+            return 'display:block';
+        }
+        
+        return 'display:none';
+    }
+
     /**
      * stat 为主动统计提供相关数据
      *

+ 9 - 0
template/layadmin/project/database/list.php

@@ -45,6 +45,15 @@ $view
 # 数据列表 
 ->loop('#list-tbody','manage/database.list_tbody')  
 
+# 统计数据 
+->loop('#stat_data','manage/database.list_data')  
+->loop('#stat_data_card@style','manage/database.list_data_show')  
+
+
+# 统计图表
+->loop('#chart','manage/database.list_chart')  
+->loop('#chart@style','manage/database.list_chart_show') 
+
 
 # 数据列表
 ->fetch('#list-button','manage/database.list_button')