header('录入名单') ->description('数据统计') ->body(function (Row $row) { $row->column(3, new AdmissionExcelUsers()); $row->column(3, new AdmissionRegisterUsers()); $row->column(3, new AdmissionPayUsers()); $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('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('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('resuming_school')->display(function (){ if($this->resuming_school == AdmissionNewStudents::RESUMING_SCHOOL_ZERO) return "普通学生"; if($this->resuming_school == AdmissionNewStudents::RESUMING_SCHOOL_ONE) return "退伍复学"; if($this->resuming_school == AdmissionNewStudents::RESUMING_SCHOOL_TWO) 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('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('resuming_school')->select(function (){ return [ "0" => "普通学生", "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()); }); //下载模版 $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'); $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('resuming_school')->options([ "0" => "普通学生", "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 = ""; } } //初始化专业名及二级学院名 $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()); } }); }); } }