header('数据概览') ->body(function ($row) { $row->column(12, function (Column $column) { $column->row(function (Row $row) { $row->column(6, Card::make('各学院新生录取统计', AllCollegesCharts::make())); $row->column(6, new AllColleges(['title' => '全校新生录取人数', 'collagesId' => 0])); }); }); }) ->body($this->grid()); } protected function grid(): Grid { return Grid::make(new UserFollowOverview(), function (Grid $grid) { $grid->disableCreateButton(); $grid->disableActions(); $grid->disableRefreshButton(); $grid->disableRowSelector(); $grid->disableToolbar(); $grid->paginate(10); $followStatus = UserFollowStatus::query()->get()->toArray(); $showInfo = AdminFollowShow::query()->where(['user_id' => Admin::user()['id']])->first(); $collegeAll = SecondaryCollege::query()->whereIn('id', $showInfo['secondary_college_id'] ?? [])->pluck("name", "id")->toArray(); $grid->combine('总录取', ['enroll_number', 'enroll_man_student', 'enroll_girl_student']); $grid->combine('未联系', ['out_number', 'out_man_student', 'out_girl_student']); foreach ($followStatus as $k => $v) { $grid->combine($v['name'], ["total_number{$v['id']}", "man_student{$v['id']}", "girl_student{$v['id']}"]); } $grid->column('secondary_college_id', '二级学院'); $grid->column('speciality_name', '专业'); $grid->column('enroll_number', '总人数'); $grid->column('enroll_man_student', '男生'); $grid->column('enroll_girl_student', '女生'); $grid->column('out_number', '总人数'); $grid->column('out_man_student', '男生'); $grid->column('out_girl_student', '女生'); foreach ($followStatus as $k => $v) { $grid->column("total_number{$v['id']}", '总人数'); $grid->column("man_student{$v['id']}", '男生'); $grid->column("girl_student{$v['id']}", '女生'); } $grid->filter(function (Grid\Filter $filter) use ($collegeAll, $showInfo) { $filter->panel(); $filter->expand(); $filter->equal('secondary_college_id', '二级学院') ->select($collegeAll) ->load('speciality_id', '/api/getSpecialityList') ->width(3) ->ignore(); $filter->equal('speciality_id', '专业') ->select(function () use ($showInfo) { $list = Speciality::query()->whereIn('id', $showInfo['speciality_id'] ?? [])->get()->toArray(); if (empty($list)) { return []; } $select = []; foreach ($list as $item) { $college = SecondaryCollege::query()->where("id", $item["secondary_college_id"])->first(); $select[$item["id"]] = $item["speciality_name"] . "({$college->name})"; } return $select; }) ->width(3) ->ignore(); }); }); } /** * @desc 二级联动:学院下面的专业数据 * @author 何鸠鸠 */ public function getSpecialityList(Request $request): array { $provinceId = $request->get('q'); $list = Speciality::query()->where("secondary_college_id", $provinceId)->get()->toArray(); $select = []; foreach ($list as $item) { $college = SecondaryCollege::query()->where("id", $item["secondary_college_id"])->first(); $select[] = ['id' => $item["id"], 'text' => $item["speciality_name"] . "({$college->name})"]; } return $select; } }