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

156 lines
5.7 KiB

  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Actions\Grid\v3\DataReportOption;
  4. use App\Admin\Actions\Tools\ReportCommunityExport;
  5. use App\Admin\Common\Auth;
  6. use App\Admin\Repositories\v3\ReportCommunity;
  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. use Dcat\Admin\Layout\Content;
  16. use Dcat\Admin\Layout\Row;
  17. use Dcat\Admin\Widgets\Alert;
  18. class ReportCommunityController extends AdminController
  19. {
  20. /**
  21. * 社区代理点统计
  22. */
  23. protected $GoodsActivityReport = null;
  24. public $marketId = 0;
  25. public $newParams = ['status' => 1];
  26. public $marketList = [];
  27. public $storeList = [];
  28. protected $reportDate = '';
  29. /**
  30. * Make a grid builder.
  31. *
  32. * @return Grid
  33. */
  34. protected function grid()
  35. {
  36. $this->marketId = Auth::getMarket();
  37. if($this->marketId){
  38. $this->newParams['market_id'] = $this->marketId;
  39. $builder = new ReportCommunity($this->newParams);
  40. $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]);
  41. }else{
  42. $builder = new ReportCommunity($this->newParams);
  43. $this->marketList = MarketModel::getMarketArray();
  44. }
  45. return Grid::make($builder, function (Grid $grid) {
  46. $marketList = $this->marketList;
  47. $grid->column('market_id','市场')->display(function($marketId) use($marketList){
  48. return $marketList[$marketId] ?? '';
  49. });
  50. $grid->column('user_id','懒ID');
  51. $grid->column('avatar','微信头像')->display(function(){
  52. $userId = $this->user_id ?? 0;
  53. $item = UserModel::select('avatar')->find($userId);
  54. return $item['avatar'] ?? '';
  55. })->image('',50);
  56. $grid->column('name','姓名');
  57. $grid->column('new_cs_count','新拓展代理点数');
  58. $grid->column('new_bind_user_count','新增绑定用户数');
  59. $grid->column('plat_new_user_count','平台新增用户数');
  60. $grid->column('bound_order_online_count','绑定用户线上订单总数');
  61. $grid->column('plat_new_user_order_online_count','平台新增用户线上订单数');
  62. $grid->filter(function (Filter $filter) use($marketList) {
  63. // 更改为 panel 布局
  64. $filter->panel();
  65. $filter->where('start_time',function(){
  66. $this->newParams['start_time'] = $this->input['start_time'];
  67. },'开始时间',)->date()->width(2);
  68. $filter->equal('end_time','结束时间')->date()->width(2);
  69. $filter->equal('user_id','懒ID')->width(2);
  70. $filter->equal('name','姓名')->width(2);
  71. if(!$this->marketId){
  72. $filter->equal('market_id','市场')->select($marketList)->width(2);
  73. }
  74. $filter->equal('status','状态')->select(EmployeesModel::$_STATUS)->width(2);
  75. });
  76. $grid->tools([
  77. new DataReportOption('today','report_community','今日', $this->newParams),
  78. new DataReportOption('yesterday','report_community','昨日', $this->newParams),
  79. new DataReportOption('this_week','report_community','本周', $this->newParams),
  80. new DataReportOption('last_week','report_community','上周', $this->newParams),
  81. new DataReportOption('this_month','report_community','本月', $this->newParams),
  82. new DataReportOption('last_month','report_community','上月', $this->newParams),
  83. new ReportCommunityExport()
  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. */
  102. public function index(Content $content)
  103. {
  104. $startTime = request()->get('start_time');
  105. $endTime = request()->get('end_time');
  106. if(empty($startTime) && empty($endTime)){
  107. $content->row(Alert::make('请先选择时间查询!','')->removable());
  108. }
  109. return $content->title('社区代理点统计报表')
  110. ->body(function(Row $row){
  111. $row->column(12,$this->grid());
  112. });
  113. }
  114. /**
  115. * 数据导出
  116. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  117. */
  118. public function export(Request $request)
  119. {
  120. $this->marketId = Auth::getMarket();
  121. $params = [
  122. 'status' => $request->input('status',null),
  123. 'name' => $request->input('name',false),
  124. 'market_id' => $this->marketId ? $this->marketId : $request->input('market_id',null),
  125. 'user_id' => $request->input('user_id',null),
  126. 'start_time' => $request->input('start_time',null),
  127. 'end_time' => $request->input('end_time',null),
  128. ];
  129. $name = date('Y-m-d-His',time());
  130. $data = new \App\Admin\Actions\Exporter\ReportCommunity($params);
  131. return Excel::download($data, $name.'.xlsx');
  132. }
  133. }