Browse Source

数据统计

master
lanzu_qinsheng 5 years ago
parent
commit
e959a701be
  1. 72
      app/Admin/Actions/Tools/DataReportDate.php
  2. 62
      app/Admin/Actions/Tools/DataReportOption.php
  3. 62
      app/Admin/Actions/Tools/DataReportTime.php
  4. 37
      app/Admin/Controllers/v3/DataReport.php
  5. 1
      app/Admin/routes.php
  6. 3
      public/css/data_report.css
  7. 14765
      public/js/moment-with-locales.js
  8. 18
      resources/views/admin/tools/data_report_date.blade.php
  9. 10
      resources/views/admin/tools/data_report_option.blade.php
  10. 7
      resources/views/admin/tools/data_report_time.blade.php

72
app/Admin/Actions/Tools/DataReportDate.php

@ -0,0 +1,72 @@
<?php
namespace App\Admin\Actions\Tools;
use App\Admin\Common\LinkUrl;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\Tools\AbstractTool;
class DataReportDate extends AbstractTool
{
protected $route;
public function __construct($route)
{
$this->route = $route;
parent::__construct();
}
protected function script()
{
return <<<JS
var app= new Vue({
el:"#date_time",
data:{
value1: '',
value2: '',
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
shortcuts: [{
text: '今天',
onClick(picker) {
picker.\$emit('pick', new Date());
}
}, {
text: '昨天',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
picker.\$emit('pick', date);
}
}, {
text: '一周前',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
picker.\$emit('pick', date);
}
}]
},
},
});
JS;
}
public function render()
{
Admin::js(LinkUrl::VUE_JS);
Admin::js(LinkUrl::ELEMENT_UI_JS);
Admin::css(LinkUrl::ELEMENT_UI_CSS);
Admin::css('css/data_report.css');
Admin::script($this->script());
return view('admin.tools.data_report_date');
}
}

62
app/Admin/Actions/Tools/DataReportOption.php

@ -0,0 +1,62 @@
<?php
namespace App\Admin\Actions\Tools;
use App\Admin\Common\LinkUrl;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\Tools\AbstractTool;
class DataReportOption extends AbstractTool
{
protected $route;
public function __construct($route)
{
$this->route = $route;
parent::__construct();
}
protected function script()
{
return <<<JS
var app= new Vue({
el:"#option",
data:{
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: ''
},
});
JS;
}
public function render()
{
Admin::js(LinkUrl::VUE_JS);
Admin::js(LinkUrl::ELEMENT_UI_JS);
Admin::css(LinkUrl::ELEMENT_UI_CSS);
Admin::css('css/data_report.css');
Admin::script($this->script());
return view('admin.tools.data_report_option');
}
}

62
app/Admin/Actions/Tools/DataReportTime.php

@ -0,0 +1,62 @@
<?php
namespace App\Admin\Actions\Tools;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\Tools\AbstractTool;
class DataReportTime extends AbstractTool
{
protected $url;
protected $option;
protected $route;
public function __construct($route)
{
$this->route = $route;
parent::__construct();
}
protected function script()
{
return <<<JS
$("#{$this->option}").change(function () {
var url = "{$this->url}"
Dcat.reload(url)
});
JS;
}
public function render()
{
$options = [
'all'=>'全部',
'today' => '今日',
'yesterday' => '昨日',
'week' => '本周',
'last_week' => '上周',
'month' => '本月',
'last_month' => '上月',
];
$data = [
'all'=>'0',
'today' => '1',
'yesterday' => '-1',
'week' => 'w',
'last_week' => 'lw',
'month' => '30',
'last_month' => '-30',
];
foreach ($data as $key=>$value){
$this->url = "{$this->route}?type={$key}&option={$value}&&name={$options[$key]}";
$this->option = $key;
Admin::script($this->script());
}
return view('admin.tools.data_report_time', compact('options'));
}
}

37
app/Admin/Controllers/v3/DataReport.php

@ -0,0 +1,37 @@
<?php
namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Tools\DataReportDate;
use App\Admin\Actions\Tools\DataReportOption;
use App\Models\LanzuStore;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
class DataReport
{
public function index(Content $content)
{
return $content
->header('数据统计')
->body(function (Row $row){
$row->column(4,function (Column $column){
$column->row(new \App\Admin\Actions\Tools\DataReportTime('data_report'));
});
$row->column(2,function (Column $column){
$column->row(new DataReportOption('data_report'));
});
$row->column(6,function (Column $column){
$column->row(new DataReportDate('data_report'));
});
})->body('<hr />');
}
}

1
app/Admin/routes.php

@ -18,6 +18,7 @@ Route::group([
$router->resource('/mp', 'LanzuMpInfoController'); $router->resource('/mp', 'LanzuMpInfoController');
$router->resource('/salesman', 'v3\Salesman'); $router->resource('/salesman', 'v3\Salesman');
$router->any('/salesman_export', 'v3\Salesman@export'); $router->any('/salesman_export', 'v3\Salesman@export');
$router->any('/data_report', 'v3\DataReport@index');
$router->any('/mp_data', 'LanzuMpInfoController@showData'); $router->any('/mp_data', 'LanzuMpInfoController@showData');
$router->resource('/mm', 'LanzuMmInfoController'); $router->resource('/mm', 'LanzuMmInfoController');
$router->resource('/market', 'ImsCjdcMarketController'); $router->resource('/market', 'ImsCjdcMarketController');

3
public/css/data_report.css

@ -0,0 +1,3 @@
.el-input__inner {
height: 37px;
}

14765
public/js/moment-with-locales.js
File diff suppressed because it is too large
View File

18
resources/views/admin/tools/data_report_date.blade.php

@ -0,0 +1,18 @@
<div id="date_time">
<div class="block">
<el-date-picker
class="v1"
v-model="value1"
type="date"
placeholder="选择日期">
</el-date-picker>
-
<el-date-picker
v-model="value2"
type="date"
placeholder="选择日期">
</el-date-picker>
<button type="button" class="btn btn-primary">查询</button>
</div>
</div>

10
resources/views/admin/tools/data_report_option.blade.php

@ -0,0 +1,10 @@
<div id="option">
<el-select v-model="value" filterable placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>

7
resources/views/admin/tools/data_report_time.blade.php

@ -0,0 +1,7 @@
<div class="btn-group btn-group-toggle" data-toggle="buttons">
@foreach($options as $option => $label)
<label class="btn btn-primary {{request()->get('type','all')==$option? 'active':''}}">
<input type="radio" name="options" id="{{$option}}"> {{$label}}
</label>
@endforeach
</div>
Loading…
Cancel
Save