<?php namespace App\Admin\Controllers; use App\Models\LawyerCost as ModelLawyerCost; use App\Admin\Repositories\LawyerCommission; use App\Models\Lawyer as ModelsLawyer; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use App\Admin\Actions\LawyerCommissionCollectExcel; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; use App\Admin\Extensions\lawyerCommissionExportExten; class LawyerCommissionCollectController extends AdminController { /** * 律师提成汇总 * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new LawyerCommission(), function (Grid $grid) { $number = $grid->model()->filter()->input('no') ?? ''; //律师编号 $nowyear = date("Y"); $year = $grid->model()->filter()->input('year') ?? date('Y'); $monthNum = ($year && $year < $nowyear) ? 12 : date('m'); $grid->column('title', '项目名称')->width('10%'); for ($i = 1; $i <= $monthNum; $i++) { $grid->column($i, $i . '月'); } $grid->column('total', '合计')->display(function ($val) { return $val ? $val : ''; }); // $grid->disableViewButton(); // $grid->disableCreateButton(); $grid->filter(function (Grid\Filter $filter) use ($number) { // 更改为 panel 布局 $filter->panel(); $filter->like('year', '年份')->width(3)->default(date("Y")); }); $grid->disableRowSelector(); $grid->disableActions(); $grid->disableCreateButton(); $grid->disablePagination(); //文字信息 $grid->tools(function (Grid\Tools $tools) use ($grid, $number, $year) { $fullname = ''; if ($number) { $obj = ModelsLawyer::where('number', $number)->first(); $fullname = $obj->name; } // 导出按钮 获取筛选条件 $param = [ 'search' => ['number' => $number, 'year' => $year] ]; // 导出 $filename = $year . '年' . $fullname . '律师提成汇总表'; $tools->append(new LawyerCommissionCollectExcel($param, $filename, '导出')); $card_info = " 律师编号:{$number} 律师姓名:{$fullname}"; $tools->append($card_info); }); }); } /** * 导出 * * @param Request $request * @return \Symfony\Component\HttpFoundation\BinaryFileResponse */ public function lawyerCommissionExport(Request $request) { $filename = $request->get('filename'); $param = json_decode($request->get('param')); ob_end_clean(); return Excel::download(new lawyerCommissionExportExten($param), $filename . '.xlsx'); } }