链街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.

133 lines
4.8 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
  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Actions\Grid\v3\DataReportOption;
  4. use App\Admin\Actions\Tools\GoodsReportExport;
  5. use App\Admin\Common\Auth;
  6. use App\Admin\Repositories\v3\OrderDeliveryReport;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Controllers\AdminController;
  9. use Dcat\Admin\Grid\Filter;
  10. use Illuminate\Http\Request;
  11. use Maatwebsite\Excel\Facades\Excel;
  12. use App\Models\v3\Market as MarketModel;
  13. use App\Models\ImsCjdcUser as UserModel;
  14. use App\Models\v3\LanzuEmployees as EmployeesModel;
  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){
  52. $item = MarketModel::getMarketInfo($marketId,'name');
  53. return $item->name ?? '';
  54. });
  55. $grid->column('total_number','配送单数')
  56. ->modal(function($modal){
  57. $name = $this->name;
  58. $modal->title($name.'的余额明细');
  59. $table = StoreBalance::make(['user_id'=>$this->user_id]);
  60. return $table;
  61. });
  62. $grid->column('total_delivery','总配送费');
  63. $grid->filter(function (Filter $filter) use($marketList) {
  64. // 更改为 panel 布局
  65. $filter->panel();
  66. $filter->equal('start_time','开始时间')->date()->width(2);
  67. $filter->equal('end_time','结束时间')->date()->width(2);
  68. $filter->equal('user_id','懒ID')->width(2);
  69. $filter->equal('name','姓名')->width(2);
  70. if(!$this->marketId){
  71. $filter->equal('market_id','市场')->select($marketList)->width(2);
  72. }
  73. });
  74. $grid->tools([
  75. new DataReportOption('today','delivery_report','今日'),
  76. new DataReportOption('yesterday','delivery_report','昨日'),
  77. new DataReportOption('this_week','delivery_report','本周'),
  78. new DataReportOption('last_week','delivery_report','上周'),
  79. new DataReportOption('this_month','delivery_report','本月'),
  80. new DataReportOption('last_month','delivery_report','上月'),
  81. new GoodsReportExport()
  82. ]);
  83. // 每页1条
  84. $grid->paginate(10);
  85. $grid->disableCreateButton();
  86. $grid->disableBatchActions();
  87. $grid->disableBatchDelete();
  88. $grid->toolsWithOutline();
  89. $grid->disableDeleteButton();
  90. $grid->disableEditButton();
  91. $grid->disableQuickEditButton();
  92. $grid->disableViewButton();
  93. $grid->disableActions();
  94. $grid->disableRowSelector();
  95. });
  96. }
  97. /**
  98. * 数据导出
  99. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  100. */
  101. public function export(Request $request)
  102. {
  103. $this->marketId = Auth::getMarket();
  104. $params = [
  105. 'name' => request()->input('name', ''),
  106. 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0),
  107. 'store_id' => request()->input('store_id',0),
  108. 'start_time' => request()->input('start_time',''),
  109. 'end_time' => request()->input('end_time',''),
  110. ];
  111. $name = date('Y-m-d-His',time());
  112. $data = new \App\Admin\Actions\Exporter\GoodsSales($params);
  113. if(empty($data)){
  114. return $this->error('没有数据!');
  115. }
  116. return Excel::download($data, $name.'.xlsx');
  117. }
  118. }