model()->with(['followRecordHasOne'])->orderByDesc('id'); $showInfo = AdminFollowShow::query()->where(['user_id' => Admin::user()['id']])->first(); $followList = UserFollowStatus::query()->pluck('name', 'id')->toArray(); $followList[0] = '未联系'; // 显示该显示的数据 $speciality_id = []; if ($showInfo) { if ($showInfo['type'] == '1') { $speciality_id = Speciality::query()->whereIn("secondary_college_id", $showInfo['secondary_college_id'])->pluck('id')->toArray();; } else { $speciality_id = $showInfo['speciality_id']; } } $grid->model()->whereIn('speciality_id', $speciality_id); $grid->column('id')->sortable(); $grid->column('identity', '学生类型')->display(function () { $iden = PublicServices::getInstance()->checkIsNewOldStudent($this->idcard); return $iden == 1 ? "新生" : "老生"; }); $grid->column('mobile', '手机'); $grid->column('unique_number', '用户唯一识别码'); $grid->column('name', '姓名'); $grid->column('idcard', '身份证'); $grid->column('sex', '性别')->display(function () { return $this->sex == 0 ? "未知" : ($this->sex == 1 ? "男" : "女"); }); $grid->column('secondary_college_id', '二级学院')->display(function () { $info = Speciality::query()->where("id", $this->speciality_id)->first(); if (!empty($info)) { $secondaryInfo = SecondaryCollege::query()->where("id", $info->secondary_college_id)->first(); if (!empty($secondaryInfo)) { return $secondaryInfo->name; } } })->help("未显示学院时请检查是否已经分配专业"); $grid->column('speciality_id', '专业')->display(function () { $info = Speciality::where("id", $this->speciality_id)->first(); if (!empty($info)) { return $info->speciality_name; } })->help("未显示专业时请检查是否已经分配专业"); $grid->column('status', '状态')->using([1 => "正常", 2 => "禁用"]); $grid->column('enroll_status', "录取状态")->using(['1' => '已录取', '2' => '取消录取']); $grid->column('followRecordHasOne.follow_id', "回访状态")->display(function ($val) { return (int)$val; })->using($followList)->expand(function () use ($followList) { $titles = ['ID', '回访状态', '回访状态', '回访时间', '用户ID']; $data = UserFollowRecord::query() ->where(['unique_number' => $this['unique_number']]) ->orderByDesc('id') ->get(['id', 'follow_id', 'theme', 'follow_time', 'user_id']) ->map(function ($val) use ($followList) { $val->follow_id = $followList[$val->follow_id] ?? ''; return $val; }) ->toArray(); return Table::make($titles, $data); }); $grid->column('is_test', " 测试账号 ")->display(function () { if ($this->is_test == UsersMember::IS_TEST_YES) { return "是"; } return ""; })->help("为测试账号时则不受系统开放时间限制"); $grid->column('create_time', '注册时间')->display(function () { if (!empty($this->create_time)) { return date("Y-m-d H:i:s", $this->create_time); } })->sortable(); $grid->filter(function (Grid\Filter $filter) use ($followList, $showInfo) { $filter->panel(); $filter->expand(); $filter->equal('id', 'ID')->width(2); $filter->equal('mobile', '手机')->width(2); $filter->equal('name', '姓名')->width(2); $filter->equal('idcard', '身份证')->width(2); $filter->equal('enroll_status', '录取状态')->select(['1' => '已录取', '2' => '取消录取'])->width(2); $filter->where('follow_status', function ($query) { $table1 = UsersMember::query()->getModel()->getTable(); $table2 = UserFollowRecord::query()->getModel()->getTable(); $all = DB::table("{$table1} as aa") ->leftJoin("{$table2} as bb", function ($join) { $join->on("aa.unique_number", "=", "bb.unique_number")->where(["bb.is_abandon" => "1"]); }) ->where(function ($query) { if ($this->input == 0) { $query->whereNull("bb.id"); } else { $query->where(["bb.follow_id" => $this->input]); } }) ->pluck('aa.unique_number') ->toArray(); $query->whereIn('unique_number', $all); }, '回访状态')->select($followList)->width(2); $filter->where("identity", function ($query) { $studentsIds = AdmissionNewStudents::query()->where([ "is_new_student" => $this->input ])->get()->toArray(); if (!empty($studentsIds)) { $studentsIds = array_column($studentsIds, "idCard"); } $query->whereIn('idcard', $studentsIds); }, '学生类型')->select([ "1" => "新生", "2" => "老生" ])->width(2); $filter->where("secondary_college_id", function ($query) { $specialityIds = Speciality::query()->where("secondary_college_id", $this->input)->get()->toArray(); if (!empty($specialityIds)) { $specialityIds = array_column($specialityIds, "id"); } $query->whereIn('speciality_id', $specialityIds); }, '二级学院')->select(function () use ($showInfo) { return SecondaryCollege::query()->whereIn('id', $showInfo['secondary_college_id'] ?? [])->pluck("name", "id")->toArray(); })->load('speciality_id', '/api/getSpecialityList')->width(3); $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); $filter->equal('is_test', '测试账号')->select(["1" => "否", "2" => "是"])->width(4); $filter->between('create_time', '注册时间')->datetime()->toTimestamp()->width(3); }); $grid->withBorder(); $grid->disableCreateButton(); $grid->disableEditButton(); $grid->disableViewButton(); $grid->disableDeleteButton(); $grid->actions(function (Grid\Displayers\Actions $actions) { if (Admin::user()->isRole('fuDaoYuan') || Admin::user()->isRole('administrator') || Admin::user()->isRole('System')) { $actions->append(Modal::make() ->xl() ->title('新增回访记录') ->button(' 新增回访记录    ') ->body(FollowRecordForm::make()->payload(['unique_number' => $actions->row['unique_number']]))); } if (Admin::user()->isRole('AdmissionOffice') || Admin::user()->isRole('administrator') || Admin::user()->isRole('System')) { $actions->append(Modal::make() ->xl() ->title('修改录取状态') ->button(' 修改录取状态    ') ->body(EditEnrollStatusForm::make()->payload(['unique_number' => $actions->row['unique_number'], 'enroll_status' => $this['enroll_status']]))); } }); }); } }