海工商新版后台
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.
 
 

121 lines
4.8 KiB

<?php
namespace App\Admin\Controllers;
use App\Admin\Metrics\Examples\Follow\AllColleges;
use App\Admin\Metrics\Examples\Follow\AllCollegesCharts;
use App\Admin\Repositories\UserFollowOverview;
use App\Models\AdminFollowShow;
use App\Models\SecondaryCollege;
use App\Models\Speciality;
use App\Models\UserFollowStatus;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Widgets\Card;
use Illuminate\Http\Request;
class UserFollowOverviewController extends AdminController
{
public $title = '回访统计';
public function index(Content $content): Content
{
return $content
->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;
}
}