链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
5.1 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Actions\Grid\v3\DataReportOption;
  4. use App\Admin\Actions\Tools\OrderDeliveryExport;
  5. use App\Admin\Common\Auth;
  6. use App\Admin\Renderable\OrderDeliveryById;
  7. use App\Admin\Repositories\v3\OrderDeliveryReport;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Controllers\AdminController;
  10. use Dcat\Admin\Grid\Filter;
  11. use Illuminate\Http\Request;
  12. use Maatwebsite\Excel\Facades\Excel;
  13. use App\Models\v3\Market as MarketModel;
  14. use App\Models\ImsCjdcUser as UserModel;
  15. class OrderDeliveryReportController extends AdminController
  16. {
  17. /**
  18. * 订单的配送统计
  19. */
  20. protected $GoodsActivityReport = null;
  21. public $marketId = 0;
  22. public $newParams = [];
  23. public $marketList = [];
  24. public $storeList = [];
  25. /**
  26. * Make a grid builder.
  27. *
  28. * @return Grid
  29. */
  30. protected function grid()
  31. {
  32. $this->marketId = Auth::getMarket();
  33. if($this->marketId){
  34. $this->newParams = ['market_id'=>$this->marketId];
  35. $builder = new OrderDeliveryReport($this->newParams);
  36. $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]);
  37. }else{
  38. $builder = new OrderDeliveryReport();
  39. $this->marketList = MarketModel::getMarketArray();
  40. }
  41. return Grid::make($builder, function (Grid $grid) {
  42. $marketList = $this->marketList;
  43. $grid->column('horseman_id','ID');
  44. $grid->column('user_id','懒ID');
  45. $grid->column('avatar','微信头像')->display(function(){
  46. $userId = $this->user_id ?? 0;
  47. $item = UserModel::select('avatar')->find($userId);
  48. return $item['avatar'] ?? '';
  49. })->image('',50);
  50. $grid->column('name','姓名');
  51. $grid->column('market_id','市场')->display(function($marketId) use($marketList){
  52. return $marketList[$marketId] ?? '';
  53. });
  54. $grid->column('total_number','配送单数')
  55. ->modal(function($modal){
  56. $name = $this->name;
  57. $modal->title($name.'的配送明细');
  58. $startTime = request()->input('start_time') ?? null;
  59. $endTime = request()->input('end_time') ?? null;
  60. $table = OrderDeliveryById::make(['horseman_id'=>$this->horseman_id,'start_time'=>$startTime, 'end_time'=>$endTime]);
  61. return $table;
  62. })->help('只统计2020年10月01日之后(包括10月01日)的数据');
  63. $grid->column('total_delivery','总配送费');
  64. $grid->filter(function (Filter $filter) use($marketList) {
  65. // 更改为 panel 布局
  66. $filter->panel();
  67. $filter->equal('start_time','开始时间')->date()->width(2);
  68. $filter->equal('end_time','结束时间')->date()->width(2);
  69. $filter->equal('horseman_id','配送员ID')->width(2);
  70. $filter->equal('user_id','懒ID')->width(2);
  71. $filter->equal('name','姓名')->width(2);
  72. if(!$this->marketId){
  73. $filter->equal('market_id','市场')->select($marketList)->width(2);
  74. }
  75. });
  76. $grid->tools([
  77. new DataReportOption('today','delivery_report','今日'),
  78. new DataReportOption('yesterday','delivery_report','昨日'),
  79. new DataReportOption('this_week','delivery_report','本周'),
  80. new DataReportOption('last_week','delivery_report','上周'),
  81. new DataReportOption('this_month','delivery_report','本月'),
  82. new DataReportOption('last_month','delivery_report','上月'),
  83. new OrderDeliveryExport()
  84. ]);
  85. // 每页1条
  86. $grid->paginate(10);
  87. $grid->disableCreateButton();
  88. $grid->disableBatchActions();
  89. $grid->disableBatchDelete();
  90. $grid->toolsWithOutline();
  91. $grid->disableDeleteButton();
  92. $grid->disableEditButton();
  93. $grid->disableQuickEditButton();
  94. $grid->disableViewButton();
  95. $grid->disableActions();
  96. $grid->disableRowSelector();
  97. });
  98. }
  99. /**
  100. * 数据导出
  101. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  102. */
  103. public function export(Request $request)
  104. {
  105. $this->marketId = Auth::getMarket();
  106. $params = [
  107. 'horseman_id' => request()->input('horseman_id', 0),
  108. 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0),
  109. 'user_id' => request()->input('user_id',0),
  110. 'start_time' => request()->input('start_time',''),
  111. 'end_time' => request()->input('end_time',''),
  112. ];
  113. $name = date('Y-m-d-His',time());
  114. $data = new \App\Admin\Actions\Exporter\OrderDelivery($params);
  115. if(empty($data)){
  116. return $this->error('没有数据!');
  117. }
  118. return Excel::download($data, $name.'.xlsx');
  119. }
  120. }