header('录入名单') ->description('数据统计') ->body(function (Row $row) { $row->column(3, new AdmissionExcelUsers()); $row->column(3, new AdmissionRegisterUsers()); $row->column(3, new AdmissionOnLineUser()); $row->column(3, new AdmissionStepUsers()); }) ->body($this->grid()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new AdmissionNewStudents(), function (Grid $grid) { //开启边框模式 $grid->withBorder(); // 开启字段选择器功能 $grid->showColumnSelector(); //开启导出功能 $grid->export(new ImportStudentExporter()); $grid->column('id')->sortable(); $grid->column('is_new_student')->display(function () { return $this->is_new_student == 1 ? "新生" : "老生"; }); $grid->column('day_student')->display(function () { return $this->day_student == 1 ? "否" : "是"; }); $grid->column('mobile'); $grid->column('name'); $grid->column('idCard'); $grid->column('admission_code'); $grid->column('admission_college'); $grid->column('admitted_major'); $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("student_info")->display('详细信息')->expand( function (){ return StudentInfoTable::make()->payload(["id"=>$this->id]); })->help("对应收费系统相应代码"); $grid->column('sex')->display(function () { return $this->sex == 0 ? "未知" : ($this->sex == 1 ? "男" : "女"); }); $grid->column('is_register')->display(function () { if($this->is_register == 2){ return "已注册"; } return "未注册"; })->help("此注册指是否已使用该身份证在迎新小程序上注册登录"); $grid->column('annual_session'); $grid->column('is_push')->display(function (){ if($this->is_push == AdmissionNewStudents::IS_PUSH_NO) return "未推送"; if($this->is_push == AdmissionNewStudents::IS_PUSH_YES) return "已推送"; })->help("是否已推送到收费系统");; $grid->column('is_test')->display(function (){ if($this->is_test == UsersMember::IS_TEST_YES){ return "是"; } })->help("为测试账号时则不受系统开放时间限制");; $grid->column('status')->select([1=>"正常", 2=>"禁用"]); $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) { $filter->equal('mobile'); $filter->equal('name'); $filter->equal('idCard'); $filter->equal('annual_session'); $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(){ return SecondaryCollege::query()->pluck("name", "id"); }); $filter->equal('speciality_id')->select(function (){ $list = Speciality::query()->where("status", Speciality::STATUS_YES)->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; }); $filter->equal('is_test')->select(function (){ return [ "1" => "否", "2" => "是" ]; }); $filter->equal('sex')->select(function (){ return [ "1" => "男", "2" => "女" ]; }); $filter->equal('is_register')->select(function (){ return [ "1" => "未注册", "2" => "已注册" ]; }); $filter->equal('is_new_student')->select([1 => "新生", 2 => "老生"]); $filter->equal('day_student')->select([1 => "否", 2 => "是"]); $filter->equal('is_push')->select([1 => "否", 2 => "是"]); $filter->equal('status')->select([1 => "正常", 2 => "禁用"]); $filter->between('create_time')->datetime()->toTimestamp(); }); // 禁用删除按钮 $grid->disableDeleteButton(); //禁用批量操作按钮 $grid->disableBatchDelete(); // 禁用详情按钮 $grid->disableViewButton(); $grid->tools(function (Grid\Tools $tools) { // excle 导入 $tools->append(new ImportExcelStudent()); $tools->append(new ImportExcelOldStudent()); $tools->append(new CompletedOnLineStepButton()); $tools->append(new CompletedOffLineStepButton()); $tools->append(new UserBaseInfoButton()); $tools->append(new UpdateStudentYear()); }); //下载模版 $grid->tools(''); $grid->tools(''); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new AdmissionNewStudents(), function (Show $show) { $show->field('id'); $show->field('mobile'); $show->field('name'); $show->field('idCard'); $show->field('admission_code'); $show->field('admission_college'); $show->field('admitted_major'); $show->field('sex'); $show->field('status'); $show->field('create_time'); $show->field('update_time'); $show->field('is_register'); $show->field('speciality_id'); $show->field('is_test'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new AdmissionNewStudents(), function (Form $form) { $form->display('id'); $form->text('mobile'); $form->text('name')->required(); $form->text('idCard')->required(); $form->text('admission_code')->required(); $form->select('sex')->options([0 => "未知", 1 => '男', 2 => '女'])->required(); $form->select("speciality_id")->options(function () { $list = Speciality::query()->where("status", Speciality::STATUS_YES)->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; })->required(); $form->select('status', '状态')->options([1 => '正常', 2 => '禁用'])->required(); $form->select('is_test', '测试账号')->options([1 => '否', 2 => '是'])->required(); $form->select('is_push')->options([1 => "否", 2 => "是"])->required(); $form->select('day_student')->options([1 => '否', 2 => '是'])->required(); $form->select('is_new_student') ->when(1, function (Form $form) { // 值为1时显示 $form->text('nj', "年级")->rules('required_if:is_new_student,1', ['required_if' => '年级字段不能为空']); $form->text('xydm', "学院代码")->rules('required_if:is_new_student,1', ['required_if' => '学院代码字段不能为空']); $form->text('zydm',"专业代码")->rules('required_if:is_new_student,1', ['required_if' => '专业代码字段不能为空']); $form->text('bjdm', "班级代码"); $form->text('xz', "学制代码")->rules('required_if:is_new_student,1', ['required_if' => '学制代码字段不能为空']); $form->text('xslbdm', "学生类别代码")->rules('required_if:is_new_student,1', ['required_if' => '学生类别代码字段不能为空']); $form->text('xjztdm', "学籍状态代码")->rules('required_if:is_new_student,1', ['required_if' => '学籍状态代码字段不能为空']); $form->select('sfzx', "是否在校代码")->options([ 0 => "否", 1 => "是" ])->rules('required_if:is_new_student,1', ['required_if' => '是否在校代码字段不能为空']); $form->select('is_equivalent', "考生类型")->options([ 1 => "统招生", 2 => "单招生", ])->rules('required_if:is_new_student,1', ['required_if' => '考生类型字段不能为空']); $form->select('is_four_type', "考生分类")->options([ 1 => "高职本科3+2", 2 => "四类人员", 3 => "普通考生", 4 => "中职3+2", ])->rules('required_if:is_new_student,1', ['required_if' => '考生分类字段不能为空']); $form->text('province', "招生省份")->rules('required_if:is_new_student,1', ['required_if' => '招生省份字段不能为空']); })->when(2, function (Form $form) { $form->text('old_student_bed_info', "床位信息(老生)")->rules('required_if:is_new_student,2', ['required_if' => '床位信息(老生)字段不能为空']); })->options([1 => '新生', 2 => '老生'])->required(); $form->select('is_five_year', "是否为五年制一贯制")->options([ 1 => "否", 2 => "是", ])->required(); $form->hidden("annual_session"); $form->hidden("create_time"); $form->hidden("update_time"); $form->hidden("admission_college"); $form->hidden("admitted_major"); // 去除删除按钮 $form->disableDeleteButton(); // 去除跳转详情按钮 $form->disableViewButton(); $form->footer(function ($footer) { // 去掉`查看`checkbox $footer->disableViewCheck(); // 去掉`继续编辑`checkbox $footer->disableEditingCheck(); // 去掉`继续创建`checkbox $footer->disableCreatingCheck(); }); //保存前回调 $form->saving(function (Form $form) { if ($form->isCreating()) { $config = Config::query()->where([ "unique_identification" => "annual_session" ])->first(); $form->annual_session = $config->data; $form->create_time =time(); // 删除用户提交的数据 $form->deleteInput('update_time'); if(!$form->mobile){ // 删除用户提交的数据 $form->deleteInput('mobile'); } if(!$form->admission_code){ // 删除用户提交的数据 $form->deleteInput('admission_code'); } }else{ $form->update_time =time(); if(!$form->mobile){ //因库中设置了该字段不能为空 $form->mobile = ""; } if(!$form->admission_code){ //因库中设置了该字段不能为空 $form->admission_code = ""; } } //检测是新生或老生 if($form->is_new_student == AdmissionNewStudents::IS_NEW_STUDENT_YES){ //新生时 // 删除用户提交的数据 $form->deleteInput('old_student_bed_info'); if(!$form->bjdm){ $form->deleteInput('bjdm'); } } if($form->is_new_student == AdmissionNewStudents::IS_NEW_STUDENT_NO){ //老生时 // 删除用户提交的数据 $form->deleteInput('nj'); $form->deleteInput('xydm'); $form->deleteInput('zydm'); $form->deleteInput('bjdm'); $form->deleteInput('xz'); $form->deleteInput('xslbdm'); $form->deleteInput('xjztdm'); $form->deleteInput('sfzx'); $form->deleteInput('is_equivalent'); $form->deleteInput('is_four_type'); $form->deleteInput('province'); } //初始化专业名及二级学院名 $specialityName = ""; $collegeName = ""; //取出专业信息 $specialityInfo = Speciality::query()->where("id", $form->speciality_id)->first(); if(!empty($specialityInfo)){ $specialityName = $specialityInfo->speciality_name; //取出二级学院名称 $college = SecondaryCollege::query()->where("id", $specialityInfo->secondary_college_id)->first(); if(!empty($college)){ $collegeName = $college->name; } } $form->admission_college = $collegeName; $form->admitted_major = $specialityName; }); //保存后回调 $form->saved(function (Form $form) { DB::beginTransaction(); try { //同步修改用户列表里的专业 $info = UsersMember::query()->where("idcard", $form->idCard)->first(); if(!empty($info)){ $update = UsersMember::query()->where("idcard", $form->idCard)->update([ "speciality_id" => $form->speciality_id, "is_test" => $form->is_test, "name" => $form->name, "idcard" => $form->idCard, "sex" => $form->sex, "update_time" => time() ]); if(empty($update)){ // 抛出异常 throw new \Exception('修改学生专业出错2'); } } DB::commit(); }catch (\Exception $e){ DB::rollBack(); throw new \Exception($e->getMessage()); } }); }); } }