tools(function (Grid\Tools $tools) { $tools->append('返回'); }); $course_id = request()->input('course_id'); Cache::put('course_id', $course_id); //设置缓存,添加场地是可用 $grid->model()->where('course_id', '=', $course_id); $grid->model()->orderByDesc('id'); $grid->column('id')->sortable(); $grid->column('course_id')->display(function () { $str = ""; if($this->course){ $str .= "
"; $str .= ''; $str .= '

' . $this->course->name . '

'; $str .= "
"; } return $str; }); $grid->column('name'); $grid->column('before9')->display(function ($res) { $str = ""; if(!empty($res)){ $res = json_decode($res, true); //总标杆 $par_total = 0; foreach ($res as $key => $val) { $par_total += $val['par']; } //前九标杆 $bf9_par_total = 0; foreach ($res as $key => $val) { if ($val['sort'] <= 9) { $bf9_par_total += $val['par']; } } //球洞 $hole_con = ''; foreach ($res as $key => $val) { $hole_con .= "" . ($key + 1) . ""; if ($val['sort'] == 9) { $hole_con .= "" . trans('course-field.fields.before9') . ""; } } //难度 $diff_con = ''; foreach ($res as $key => $val) { $diff_con .= "" . $val['difficulty'] . ""; if ($val['sort'] == 9) { $diff_con .= "" . '#' . ""; } } //标杆 $par_con = ''; foreach ($res as $key => $val) { $par_con .= "" . $val['par'] . ""; if ($val['sort'] == 9) { $par_con .= "" . $bf9_par_total . ""; } } $str = " " . $hole_con . " " . $diff_con . " " . $par_con . "
" . trans('game-user.fields.hole') . "
" . trans('game-user.fields.difficulty') . "
" . trans('game-user.fields.par') . "
"; } return $str; }); $grid->column('after9')->display(function ($res) { $str = ""; if(!empty($res)){ $res = json_decode($res, true); //总标杆 $par_total = 0; foreach ($res as $key => $val) { $par_total += $val['par']; } //后九标杆 $af9_par_total = 0; foreach ($res as $key => $val) { if ($val['sort'] <= 9) { $af9_par_total += $val['par']; } } //球洞 $hole_con = ''; foreach ($res as $key => $val) { $hole_con .= "" . ($key + 1) . ""; if ($val['sort'] == 9) { $hole_con .= "" . trans('course-field.fields.after9') . ""; } } //难度 $diff_con = ''; foreach ($res as $key => $val) { $diff_con .= "" . $val['difficulty'] . ""; if ($val['sort'] == 9) { $diff_con .= "" . '#' . ""; } } //标杆 $par_con = ''; foreach ($res as $key => $val) { $par_con .= "" . $val['par'] . ""; if ($val['sort'] == 9) { $par_con .= "" . $af9_par_total . ""; } } $str = " " . $hole_con . " " . $diff_con . " " . $par_con . "
" . trans('game-user.fields.hole') . "
" . trans('game-user.fields.difficulty') . "
" . trans('game-user.fields.par') . "
"; } return $str; }); $grid->disableViewButton(); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new CourseField(), function (Form $form) { $courseId = Cache::get('course_id'); $course = Course::find($courseId); $form->column(9, function (Form $form)use ($course) { $form->html(function () use ($course) { $str = ""; $str .= "
"; $str .= ''; $str .= '
'; $str .= '

球场:' . $course->name . '

'; $str .= "
"; $str .= "
"; return $str; }); $form->text('name')->width(4)->required(); $form->table('before9', function (Form\NestedForm $table) { $table->text('sort', trans('course.labels.sort')); $table->text('par', trans('course.labels.par')); $table->text('difficulty', trans('course.labels.difficulty')); $table->text('gold_dis', trans('course.labels.gold_dis')); $table->text('blue_dis', trans('course.labels.blue_dis')); $table->text('white_dis', trans('course.labels.white_dis')); $table->text('red_dis', trans('course.labels.red_dis')); })->label(trans('course.labels.hole_list'))->default(CourseField::$baseHoleList)->disableCreate()->disableDelete()->width(12, 0); $form->table('after9', function (Form\NestedForm $table) { $table->text('sort', trans('course.labels.sort')); $table->text('par', trans('course.labels.par')); $table->text('difficulty', trans('course.labels.difficulty')); $table->text('gold_dis', trans('course.labels.gold_dis')); $table->text('blue_dis', trans('course.labels.blue_dis')); $table->text('white_dis', trans('course.labels.white_dis')); $table->text('red_dis', trans('course.labels.red_dis')); })->label(trans('course.labels.hole_list'))->default(CourseField::$baseHoleList)->disableCreate()->disableDelete()->width(12, 0); }); $form->saving(function (Form $form) { if (is_array($form->before9)) { $this->before9 = array_values($form->before9); $form->deleteInput('before9'); } if (is_array($form->after9)) { $this->after9 = array_values($form->after9); $form->deleteInput('after9'); } }); $form->saved(function (Form $form) { $id = $form->getKey(); //新增数据后返回的主键 id //前九 if (!empty($this->before9) && is_array($this->before9)) { foreach ($this->before9 as $val) { unset($val['id']); unset($val['_remove_']); $val['course_field_id'] = $id; $val['type'] = 1; $map = [ 'type' => $val['type'], 'sort' => $val['sort'], 'course_field_id' => $id, ]; if ($info = CourseHole::query()->where($map)->first()) { CourseHole::query()->where($map)->update($val); } else { CourseHole::query()->create($val); //这里记得给字段在 Model中添加到 $fillable } } $listBefore9 = CourseHole::query() ->where('course_field_id', $id) ->where('type',1) ->select('sort', 'par', 'difficulty', 'gold_dis', 'blue_dis', 'white_dis', 'red_dis') ->orderBy('sort', 'asc') ->get(); if($listBefore9->isNotEmpty()){ $listBefore9 = $listBefore9->toArray(); }else{ $listBefore9 = null; } }else{ $listBefore9 = []; } //后九 if (!empty($this->after9) && is_array($this->after9)) { foreach ($this->after9 as $val2) { unset($val2['id']); unset($val2['_remove_']); $val2['course_field_id'] = $id; $val2['type'] = 2; $map2 = [ 'type' => $val2['type'], 'course_field_id' => $id, 'sort' => $val2['sort'], ]; if ($info = CourseHole::query()->where($map2)->first()) { CourseHole::query()->where($map2)->update($val2); } else { CourseHole::query()->create($val2); //这里记得给字段在 Model中添加到 $fillable } } $listAfter9 = CourseHole::query() ->where('course_field_id', $id) ->where('type',2) ->select('sort', 'par', 'difficulty', 'gold_dis', 'blue_dis', 'white_dis', 'red_dis') ->orderBy('sort', 'asc') ->get(); if($listAfter9->isNotEmpty()){ $listAfter9 = $listAfter9->toArray(); }else{ $listAfter9 = null; } }else{ $listAfter9 = []; } $courseField = CourseField::find($id); $courseField->before9 = $listBefore9 ? json_encode($listBefore9) : ''; $courseField->after9 = $listAfter9 ? json_encode($listAfter9) : ''; $courseField->course_id = Cache::get('course_id'); $courseField->save(); return $form->response()->success('保存成功')->redirect('course_field/'.$id.'/edit'); }); $form->disableViewButton(); $form->disableListButton(); $form->tools(function (Form\Tools $tools) { $tools->append('返回'); }); $form->footer(function ($footer) { // 去掉`查看`checkbox $footer->disableViewCheck(); // 去掉`继续编辑`checkbox $footer->disableEditingCheck(); // 去掉`继续创建`checkbox $footer->disableCreatingCheck(); }); }); } }