header('招聘会职位库') ->description('为了统计数据,职位库审核不再同步已结束招聘会的参会职位,请及时审核!') ->body(view('admin.jobfair.jobs')->with(['grid'=>$this->grid()])); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header('招聘会职位详情') ->description('') ->body($this->detail($id)); } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { $js = <<header('招聘会职位编辑') ->description('') ->body($this->editForm($id)->edit($id)); } /** * Create interface. * * @param Content $content * @return Content */ public function create(Content $content) { return $content ->header('招聘会职位创建') ->description('') ->body($this->form()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new JobfairJob); $grid->model() ->with('company') ->where('type',1) ->when(get_subsite_id()>0, function ($query) { $query->whereHas('company', function ($query) { $query->where('companys.subsite_id', get_subsite_id()); }); }) ->orderByRaw("FIELD(audit, 2,1,3)")->orderBy('updated_at', 'desc'); $grid->jobs_name('职位名称')->width(200); $grid->company_name('发布公司')->display(function ($company_name) { return ''.$company_name.''; })->width(200); $grid->audit('审核状态')->display(function ($audit) { if ($audit==1) { return'审核通过'; } elseif ($audit==3) { return'审核未通过'; } else { return'等待审核'; } }); $grid->amount('人数')->display(function ($amount) { return $amount ? $amount : '若干'; }); $grid->sex_cn('性别'); $grid->education_cn('学历')->display(function ($education_cn) { return $education_cn ? $education_cn : '不限'; }); $grid->wage_cn('待遇')->width(100); $grid->district_cn('工作地区'); if(get_subsite_open()){ $grid->subsite('所属分站')->display(function () { if(isset($this->company->subsites)){ return $this->company->subsites->sitename; }else{ return '总站'; } }); } $grid->created_at('创建时间'); $grid->updated_at('更新时间'); $grid->actions(function ($actions) use ($grid) { if (Admin::user()->can('jobfair_jobs_delete')) { $actions->disableDelete(false); } if (Admin::user()->can('jobfair_jobs_edit')) { $actions->disableEdit(false); } if (Admin::user()->can('company_manager_bussiness')) { $actions->append(""); } if (Admin::user()->can('jobfair_jobs_audit')) { $actions->append(""); } }); if (Admin::user()->can('jobfair_jobs_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); $grid->disableRowSelector(false); } $grid->tools(function ($tools) { if (Admin::user()->can('jobfair_jobs_audit')) { $but = << EOT; $tools->append($but); } }); $grid->filter(function ($filter) { // 去掉默认的id过滤器 $filter->disableIdFilter(); $filter->column(1/2, function ($filter) { $filter->like('jobs_name', '职位名称'); $filter->like('company_name', '公司名称'); $filter->equal('sex', '性别')->select([ 0=>'不限', 1=>'男', 2=>'女', ]); }); $filter->column(1/2, function ($filter) { $filter->equal('audit', '审核状态')->select([ 1=>'审核通过', 2=>'等待审核', 3=>'审核未通过', ]); $filter->where(function ($query) { switch ($this->input) { case 3: $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-3 day'))."'"); break; case 7: $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-7 day'))."'"); break; case 30: $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-30 day'))."'"); break; } }, '刷新时间', 'updated_at')->select([ 3=>'三天内', 7=>'一周内', 30=>'一月内', ]); }); }); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(JobfairJob::findOrFail($id)); $show->id('ID'); $show->jobs_name('职位名称'); $show->company_name('发布公司')->as(function ($company_name) { return $company_name; }); $show->audit('审核状态')->as(function ($audit) { if ($audit==1) { return '审核通过'; } elseif ($audit==3) { return '审核未通过'; } else { return '等待审核'; } }); $show->display('显示状态')->as(function ($audit) { if ($audit==1) { return '显示'; } else { return '关闭'; } }); $show->amount('人数'); $show->sex_cn('性别'); $show->education_cn('学历'); $show->wage_cn('待遇'); $show->district_cn('工作地区'); $show->jobs_content('职位描述')->setEscape(false); $show->created_at('创建时间'); $show->updated_at('更新时间'); return $show; } protected function editForm($id) { $form = new Form(new JobfairJob); $form->tab('职位信息', function (Form $form) use ($id) { $form->display('id'); $jobsData = JobfairJob::where('id', $id)->select('age', 'tag', 'topclass', 'category', 'subclass', 'district', 'wage', 'wage_min', 'wage_max','syq','syqxz_min','ygxs','updated_at')->first()->toArray(); $age = explode('-', $jobsData['age']); if ($jobsData['district']) { $district = string_to_array('.', $jobsData['district']); } $form->text('jobs_name', '职位名称')->rules(['required'], ['required'=>'请填写职位名称'])->setMustMark(); $form->display('company_name', '企业名称'); // $form->radio('display', '在招状态')->options([1=>'在招',2=>'关闭']); $form->radio('audit', '审核状态')->options([0=>'未审核',1=>'审核通过',2=>'审核中',3=>'审核未通过']); $jobsNature = Category::categoryType('AIX_jobs_nature'); $form->radio('nature', '职位性质')->options($jobsNature); $form->select('ygxs', '用工形式')->options(Category::categoryType('AIX_ygxs'))->rules(['required'], ['required' => '请填写用工形式',])->setMustMark(); $form->text('hour_money', '小时工薪资')->default($jobsData['wage_min'])->setMustMark(); $form->hidden('wage_min_value', '系统最低工资')->default(config('aix.companyset.comset.com_set.wage_min')); $techlevel = Category::categoryType('AIX_techlevel'); $techlevel['0'] = '不限'; $form->select('techlevel', '技能等级')->options($techlevel)->setMustMark(); $form->select('topclass', '职位大类')->options(CategoryJobs::List()->pluck('name', 'id'))->load('category', admin_base_path('/sys/categoryJobs/category'))->rules('required', array('required'=>'请选择职位大类'))->setMustMark(); $form->select('category', '职位中类')->options(CategoryJobs::category($jobsData['topclass']))->load('subclass', admin_base_path('/sys/categoryJobs/category'))->rules('required', array('required'=>'请选择职位中类'))->setMustMark(); $form->select('subclass', '职位小类')->options(CategoryJobs::category($jobsData['category']))->rules('required', array('required'=>'请选择职位小类'))->setMustMark(); if (!empty($district)) { $form->select('province', '所属省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city',admin_base_path('/sys/category/categoryDis'))->rules('required', ['required'=>'请选择相应的企业所属省份'])->default($district[0])->setMustMark(); $form->select('city', '所属城市')->options(CategoryDistrict::categoryDis($district[0]))->setWidth(3)->load('area', admin_base_path('/sys/category/categoryDis'))->rules('required', ['required'=>'请选择相应的企业所属城市'])->default($district[1])->setMustMark(); $form->select('area', '所属县区')->default(isset($district[2])?$district[2]:0)->options(CategoryDistrict::categoryDis($district[1]))->setWidth(3)->default(isset($district[2]) ? $district[2] : '')->setMustMark(); } else { $form->select('province', '所属省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city', admin_base_path('/sys/category/categoryDis'))->rules('required', ['required'=>'请选择相应的企业所属省份'])->default(0)->setMustMark(); $form->select('city', '所属城市')->setWidth(3)->load('area', admin_base_path('/sys/category/categoryDis'))->rules('required', ['required'=>'请选择相应的企业所属城市'])->default(0)->setMustMark(); $form->select('area', '所属县区')->setWidth(3)->default(0)->setMustMark(); } if ($jobsData['wage'] == 0) { $form->hidden('wage'); $form->number('wage_min', '最低薪资')->min(config('aix.companyset.comset.com_set.wage_min'))->help("请填写大于".config('aix.companyset.comset.com_set.wage_min')."的10的倍数") ->rules(['required'], ['required'=>'请选择最小薪资'])->setMustMark(); $form->number('wage_max', '最高薪资')->help("请填写大于最低薪资的10的倍数")->rules(['required'], ['required'=>'请填写最大薪资'])->setMustMark(); } else { $option = Category::categoryType('AIX_wage'); $option[-1] ='面议'; $form->select('wage', '薪资待遇')->options($option)->default($jobsData['wage'])->rules(['required'], ['required'=>'请选择薪资待遇'])->setMustMark(); $form->hidden('wage_min'); $form->hidden('wage_max'); } $form->select('syq', '试用期时间')->options(Category::categoryType('zs_syq'))->default($jobsData['syq'])->rules(['required'], ['required'=>'请选择试用期时间'])->setMustMark(); $form->number('syqxz_min', '试用期薪资')->min(config('aix.companyset.comset.com_set.wage_min'))->default($jobsData['syqxz_min'])->help("请填写大于" . config('aix.companyset.comset.com_set.wage_min') . "的10的倍数")->setMustMark(); $education = Category::categoryType('AIX_education'); $education['0']='不限'; $form->radio('education', '学历要求')->options($education); $experience = Category::categoryType('AIX_experience'); $experience['0']="不限"; $form->radio('experience', '工作经验')->options($experience); $form->radio('sex', '性别要求')->options([0=>'不限',1=>'男',2=>'女']); $form->number('min_age', '最低年龄')->default(isset($age[0])?$age[0]:'')->min(16)->max(65)->help('最低年龄不能低于国家规定用工年龄'); $form->number('max_age', '最高年龄')->default(isset($age[1])?$age[1]:'')->min(16)->max(65)->help('最高年龄不能高于65周岁'); $form->number('amount', '招聘人数')->min(1)->max(99)->rules(['required'], ['required'=>'请输入招聘人数'])->help('请填写招聘人数1~99')->setMustMark(); $form->multipleSelect('tag', '职位亮点')->options(Category::categoryType('AIX_jobtag'))->default(explode(',', $jobsData['tag'])); $form->textarea('jobs_content', '职位描述')->attribute(['maxlength'=>2000])->rules(['required'], ['required'=>"请填写职位描述"])->setMustMark(); })->tab('联系人', function (Form $form) { $form->text("contact.contact", '联系人')->setWidth(3)->rules(['required'], ['required'=>"请填写联系人"])->setMustMark(); $form->radio('contact.contact_show', '联系人是否公开')->options([0=>'不公开',1=>'公开']); $form->text('contact.mobile', '联系电话')->setWidth(3)->rules(['required'], ['required'=>"请填写联系电话"])->setMustMark(); $form->radio('contact.telephone_show', '联系电话是否公开')->options([0=>'不公开',1=>'公开']); $form->text('contact.landline_tel', '固定电话')->setWidth(3)->help('区号-号码-分机号(以“-”分隔)'); //这个字段引起问题 $form->radio('contact.landline_tel_show', '固定电话是否公开')->options([0=>'不公开',1=>'公开']); $form->text('contact.email', 'Email')->setWidth(3)->rules(['required'], ['required'=>"请填写Email"])->setMustMark(); $form->radio('contact.email_show', 'Email是否公开')->options([0=>'不公开',1=>'公开']); $form->text('contact.address', '联系地址')->setWidth(3)->rules(['required'], ['required'=>"请填写联系地址"])->setMustMark(); }); $form->ignore('province'); $form->ignore('city'); $form->ignore('area'); $form->ignore('tag'); $form->ignore('min_age'); $form->ignore('max_age'); $form->ignore('wage_min_value'); $form->saving(function ($form) { $minage = Input::get('min_age'); $maxage = Input::get('max_age'); if ($maxage && $minage) { if ($maxage <= $minage) { $error = new MessageBag([ 'title' => '提示', 'message' => '最高年龄不能小最低年龄', ]); return back()->with(compact('error')); } } if ($form->wage == -1) { $form->wage_min = 0; $form->wage_max = 0; $form->wage_cn = '面议'; } else { if ($form->wage!=0) { $wage = explode('~', format_wage(get_category($form->wage))); if (isset($wage[1])) { $form->wage_max = $wage[1]; $form->wage_cn = $wage[0].'~'.$wage[1].'/月'; }else{ $form->wage_min = $wage[0]; $form->wage_cn = $wage[0].'以上/月'; } } else { if ($form->wage_min == 0 || $form->wage_max == 0) { $error = new MessageBag([ 'title' => '提示', 'message' => '最低薪资和最高薪资不能为0', ]); return back()->with(compact('error')); } if ($form->wage_min < config('aix.companyset.comset.com_set.wage_min')) { $error = new MessageBag([ 'title' => '提示', 'message' => '最低薪资请填写大于'.config('aix.companyset.comset.com_set.wage_min'), ]); return back()->with(compact('error')); } if ($form->wage_min%10 != 0) { $error = new MessageBag([ 'title' => '提示', 'message' => '薪资请填写10的倍数', ]); return back()->with(compact('error')); } if ($form->wage_max%10 != 0) { $error = new MessageBag([ 'title' => '提示', 'message' => '薪资请填写10的倍数', ]); return back()->with(compact('error')); } if (isset($form->wage_max) && $form->wage_max && $form->wage_max < $form->wage_min) { $error = new MessageBag([ 'title' => '提示', 'message' => '最高薪资不能低于最低薪资', ]); return back()->with(compact('error')); } $form->wage_cn = $form->wage_min.'~'.$form->wage_max.'/月'; } } if ($form->min_age && $form->min_age < 16) { $error = new MessageBag([ 'title' => '提示', 'message' => '最低年龄不能小于16岁', ]); return back()->with(compact('error')); } $tag = Input::get('tag'); $tag = array_filter($tag); if(count($tag) > 6){ $error = new MessageBag([ 'title' => '提示', 'message' => '职位亮点最多可选择6个', ]); return back()->with(compact('error')); } if ($form->max_age && $form->min_age > 65) { $error = new MessageBag([ 'title' => '提示', 'message' => '最高年龄不能大于65岁', ]); return back()->with(compact('error')); } $hour_money = Input::get('hour_money'); if (($form->ygxs == 363) && $hour_money == "") { $error = new MessageBag([ 'title' => '提示', 'message' => '请填写小时工薪资', ]); return back()->with(compact('error')); } if ($form->ygxs == 363 && $hour_money < 16.5) { $error = new MessageBag([ 'title' => '提示', 'message' => '小时工薪资不能少于16.5元', ]); return back()->with(compact('error')); } if (($form->syq != 367 && $form->wage != -1)&& $form->syqxz_min == 0) { $error = new MessageBag([ 'title' => '提示', 'message' => '试用期薪资不能为0', ]); return back()->with(compact('error')); } if (($form->syq != 367 && $form->wage != -1) && $form->syqxz_min % 10 != 0) { $error = new MessageBag([ 'title' => '提示', 'message' => '试用期薪资请填写10的倍数', ]); return back()->with(compact('error')); } if (($form->syq != 367 && $form->wage != -1) && $form->syqxz_min < config('aix.companyset.comset.com_set.wage_min')) { $error = new MessageBag([ 'title' => '提示', 'message' => '试用期薪资请填写大于' . config('aix.companyset.comset.com_set.wage_min'), ]); return back()->with(compact('error')); } if ($form->wage != 0) { $wage = explode('~', format_wage(get_category($form->wage))); if (isset($wage[1])) { $form->wage_max = $wage[1]; } $form->wage_min = $wage[0]; } if($form->wage_min > 0 && ($form->syq != 367 && $form->wage != -1) && $form->ygxs != 363){ if($form->syqxz_min < $form->wage_min * 0.8){ $error = new MessageBag([ 'title' => '提示', 'message' => '试用期薪资不能低于最低工资的80%('.$form->wage_min * 0.8.'元)', ]); return back()->with(compact('error')); } } if ($form->ygxs == 363) { $form->wage = 0; $form->wage_max = $hour_money; $form->wage_min = $hour_money; $form->wage_cn = $hour_money.'/小时'; } }); $form->ignore('hour_money'); $form->saved(function (Form $form) use ($id) { $province = \Illuminate\Support\Facades\Request::input('province'); $city = \Illuminate\Support\Facades\Request::input('city'); $area = \Illuminate\Support\Facades\Request::input('area'); $age[] = \Illuminate\Support\Facades\Request::input('min_age'); $age[] = \Illuminate\Support\Facades\Request::input('max_age'); $age = implode('-', $age); $nature_cn = get_category(\Illuminate\Support\Facades\Request::input('nature')); $sex_cn = \Illuminate\Support\Facades\Request::input('sex') == 0 ? '不限' : (\Illuminate\Support\Facades\Request::input('sex') == 1 ? '男' :'女'); $education_cn = get_category(\Illuminate\Support\Facades\Request::input('education')); $experience_cn = get_category(\Illuminate\Support\Facades\Request::input('experience')); $district = $province.'.'.$city.'.'.$area; JobfairJob::where('id', $id)->update([ 'district'=>$district, 'age'=>$age, 'wage_cn'=>$form->wage_cn, 'nature_cn'=>$nature_cn, 'sex_cn'=>$sex_cn, 'education_cn'=>$education_cn, 'experience_cn'=>$experience_cn, ]); $tag = \Illuminate\Support\Facades\Request::input('tag'); if ($tag) { $tag = array_filter($tag); $tag = implode(',', $tag); JobfairJob::where('id', $id)->update(['tag'=>$tag,'tag_cn'=>get_tag_cn($tag)]); } //修改参展职位(审核时同步 暂且注释) // $put_jobs = JobfairPutJob::whereHas('jobfairs',function ($query){ // $query->where('holddate_end','>=',time()); // })->where(['job_id'=>$id])->get(); // //修改参展职位 // if($put_jobs->isNotEmpty()){ // $jobfairJob = JobfairJob::find($id); // foreach ($put_jobs as $val){ // $val['jobs_name'] = $jobfairJob['jobs_name']; // $val['company_id'] = $jobfairJob['company_id']; // $val['company_name'] = $jobfairJob['company_name']; // $val['company_audit'] = $jobfairJob['company_audit']; // $val['stick'] = $jobfairJob['stick']; // $val['nature'] = $jobfairJob['nature']; // $val['nature_cn'] = $jobfairJob['nature_cn']; // $val['sex'] = $jobfairJob['sex']; // $val['sex_cn'] = $jobfairJob['sex_cn']; // $val['age'] = $jobfairJob['age']; // $val['amount'] = $jobfairJob['amount']; // $val['topclass'] = $jobfairJob['topclass']; // $val['category'] = $jobfairJob['category']; // $val['subclass'] = $jobfairJob['subclass']; // $val['category_cn'] = $jobfairJob['category_cn']; // $val['trade'] = $jobfairJob['trade']; // $val['trade_cn'] = $jobfairJob['trade_cn']; // $val['scale'] = $jobfairJob['scale']; // $val['scale_cn'] = $jobfairJob['scale_cn']; // $val['district'] = $jobfairJob['district']; // $val['district_cn'] = $jobfairJob['district_cn']; // $val['tag'] = $jobfairJob['tag']; // $val['tag_cn'] = $jobfairJob['tag_cn']; // $val['education'] = $jobfairJob['education']; // $val['education_cn'] = $jobfairJob['education_cn']; // $val['experience'] = $jobfairJob['experience']; // $val['experience_cn'] = $jobfairJob['experience_cn']; // $val['wage'] = $jobfairJob['wage']; // $val['wage_min'] = $jobfairJob['wage_min']; // $val['wage_max'] = $jobfairJob['wage_max']; // $val['wage_cn'] = $jobfairJob['wage_cn']; // $val['audit'] = $jobfairJob['audit']; // $val['display'] = $jobfairJob['display']; // $val['click'] = $jobfairJob['click']; // $val['robot'] = $jobfairJob['robot']; // $val['map_x'] = $jobfairJob['map_x']; // $val['map_y'] = $jobfairJob['map_y']; // $val['map_zoom'] = $jobfairJob['map_zoom']; // $val['add_mode'] = $jobfairJob['add_mode']; // $val['is_entrust'] = $jobfairJob['is_entrust']; // $val['department'] = $jobfairJob['department']; // $val['major'] = $jobfairJob['major']; // $val['major_cn'] = $jobfairJob['major_cn']; // $val['zcid'] = $jobfairJob['zcid']; // $val['zc_cn'] = $jobfairJob['zc_cn']; // $val['zc_name'] = $jobfairJob['zc_name']; // $val->save(); // } // } }); //自定义时间筛选JS $filter_script = <<