@ -14,6 +14,9 @@ use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel ;
use App\Models\v3\Market as MarketModel ;
use App\Models\ImsCjdcUser as UserModel ;
use Dcat\Admin\Layout\Content ;
use Dcat\Admin\Layout\Row ;
use Dcat\Admin\Widgets\Alert ;
class OrderDeliveryReportController extends AdminController
{
@ -24,12 +27,7 @@ class OrderDeliveryReportController extends AdminController
protected $marketId = 0 ;
protected $newParams = [];
protected $marketList = [];
protected $storeList = [];
public function __construct ()
{
$this -> newParams [ 'start_time' ] = date ( 'Y-m-d' , time ());
$this -> newParams [ 'end_time' ] = date ( 'Y-m-d' , time ());
}
protected $tools = [];
/**
* Make a grid builder .
@ -38,17 +36,16 @@ class OrderDeliveryReportController extends AdminController
*/
protected function grid ()
{
$this -> marketId = Auth :: getMarket ();
if ( $this -> marketId ){
$this -> newParams = [ 'market_id' => $this -> marketId ];
$marketId = $this -> marketId ;
if ( $marketId ){
$this -> newParams = [ 'market_id' => $marketId ];
$builder = new OrderDeliveryReport ( $this -> newParams );
$this -> marketList = MarketModel :: getMarketArray ([[ 'id' , '=' , $this -> marketId ]]);
$this -> marketList = MarketModel :: getMarketArray ([[ 'id' , '=' , $marketId ]]);
} else {
$builder = new OrderDeliveryReport ( $this -> newParams );
$this -> marketList = MarketModel :: getMarketArray ();
}
return Grid :: make ( $builder , function ( Grid $grid ) {
return Grid :: make ( $builder , function ( Grid $grid ) use ( $marketId ) {
$marketList = $this -> marketList ;
$grid -> column ( 'horseman_id' , '配送员ID' );
$grid -> column ( 'user_id' , '懒ID' );
@ -59,49 +56,41 @@ class OrderDeliveryReportController extends AdminController
}) -> image ( '' , 50 );
$grid -> column ( 'name' , '姓名' );
$grid -> column ( 'market_id' , '市场' ) -> display ( function ( $marketI d ) use ( $marketList ){
return $marketList [ $marketI d ] ? ? '' ;
$grid -> column ( 'market_id' , '市场' ) -> display ( function ( $market_i d ) use ( $marketList ){
return $marketList [ $market_i d ] ? ? '' ;
});
$grid -> column ( 'total_number' , '配送单数' )
-> modal ( function ( $modal ) {
$name = $this -> name ;
$modal -> title ( $name . '的配送明细' );
-> modal ( function ( $modal ) use ( $marketId ) {
$modal -> title ( $this -> name . '的配送明细' );
$params = [
'horseman_id' => $this -> horseman_id ,
'market_id' => $this -> marketId ? $this -> marketId : request () -> input ( 'market_id' , 0 ) ,
'market_id' => $marketId ,
'user_id' => request () -> input ( 'user_id' , 0 ),
'start_time' => request () -> input ( 'start_time' , '' ),
'end_time' => request () -> input ( 'end_time' , '' ),
];
// dd($params);
$table = OrderDeliveryById :: make ( $params );
return $table ;
}) -> help ( '只统计2020年10月01日之后(包括10月01日)的数据' );
$grid -> column ( 'total_delivery' , '总配送费' );
$grid -> filter ( function ( Filter $filter ) use ( $marketList ) {
$grid -> filter ( function ( Filter $filter ) use ( $marketList , $marketId ) {
// 更改为 panel 布局
$filter -> panel ();
$filter -> equal ( 'start_time' , '开始时间' ) -> date () -> width ( 2 );
$filter -> equal ( 'end_time' , '结束时间' ) -> date () -> width ( 2 );
$filter -> equal ( 'horseman_id' , '配送员ID' ) -> width ( 2 );
// $filter->equal('horseman_id','配送员ID')->width(2);
$filter -> equal ( 'user_id' , '懒ID' ) -> width ( 2 );
$filter -> equal ( 'name' , '姓名' ) -> width ( 2 );
if ( ! $this -> marketId ){
if ( ! $marketId ){
$filter -> equal ( 'market_id' , '市场' ) -> select ( $marketList ) -> width ( 2 );
}
});
$grid -> tools ([
new DataReportOption ( 'today' , 'delivery_report' , '今日' ),
new DataReportOption ( 'yesterday' , 'delivery_report' , '昨日' ),
new DataReportOption ( 'this_week' , 'delivery_report' , '本周' ),
new DataReportOption ( 'last_week' , 'delivery_report' , '上周' ),
new DataReportOption ( 'this_month' , 'delivery_report' , '本月' ),
new DataReportOption ( 'last_month' , 'delivery_report' , '上月' ),
new OrderDeliveryExport ()
]);
$grid -> tools ( $this -> tools );
// 每页1条
$grid -> paginate ( 10 );
@ -121,6 +110,45 @@ class OrderDeliveryReportController extends AdminController
});
}
/**
* 统计列表
*/
/**
* 页面
*/
public function index ( Content $content )
{
$this -> marketId = Auth :: getMarket ();
$this -> tools = [
new DataReportOption ( 'today' , 'delivery_report' , '今日' ),
new DataReportOption ( 'yesterday' , 'delivery_report' , '昨日' ),
new DataReportOption ( 'this_week' , 'delivery_report' , '本周' ),
new DataReportOption ( 'last_week' , 'delivery_report' , '上周' ),
new DataReportOption ( 'this_month' , 'delivery_report' , '本月' ),
new DataReportOption ( 'last_month' , 'delivery_report' , '上月' )
];
$startTime = request () -> get ( 'start_time' );
$endTime = request () -> get ( 'end_time' );
$user_id = request () -> get ( 'user_id' );
$name = request () -> get ( 'name' );
$marketId = request () -> get ( 'market_id' );
if (
( $this -> marketId && ( empty ( $startTime ) && empty ( $endTime ) && empty ( $user_id ) && empty ( $name ))
||
( empty ( $startTime ) && empty ( $endTime ) && empty ( $user_id ) && empty ( $name ) && empty ( $marketId ))
)){
$content -> row ( Alert :: make ( '请选择筛选条件查询!' , '' ) -> removable ());
} else {
$this -> tools [] = new OrderDeliveryExport ();
}
return $content -> title ( '订单配送统计报表' )
-> body ( function ( Row $row ){
$row -> column ( 12 , $this -> grid ());
});
}
/**
* 数据导出
* @ return \Symfony\Component\HttpFoundation\BinaryFileResponse
@ -135,16 +163,10 @@ class OrderDeliveryReportController extends AdminController
'start_time' => request () -> input ( 'start_time' , '' ),
'end_time' => request () -> input ( 'end_time' , '' ),
];
if ( empty ( $params [ 'start_time' ]) && empty ( $params [ 'end_time' ])){
$params [ 'start_time' ] = $this -> newParams [ 'start_time' ];
$params [ 'end_time' ] = $this -> newParams [ 'end_time' ];
}
$name = date ( 'Y-m-d-His' , time ());
$data = new \App\Admin\Actions\Exporter\OrderDelivery ( $params );
if ( empty ( $data )){
return $this -> error ( '没有数据!' );
}
return Excel :: download ( $data , $name . '.xlsx' );
}
}