columnId(); $helper->columnUserId(); $grid->column('position', '位置')->sortable(); $helper->columnLandType(); $helper->columnLandStatus(); // 关联显示种子状态 $grid->column('crop.seed_id', '种子ID')->display(function ($seedId) { return $seedId ?: '-'; }); $grid->column('crop.seed.name', '种子名称')->display(function ($name) { return $name ?: '-'; }); $helper->columnUseingEnmu('crop.growth_stage', \App\Module\Farm\Enums\GROWTH_STAGE::class,'生长阶段'); $grid->column('crop.stage_end_time', '阶段结束时间')->display(function ($time) { if (!$time) return '-'; return $time; }); $grid->column('crop.disasters', '灾害情况')->display(function ($disasters) { if (!$disasters) return '无'; $result = []; foreach (json_decode($disasters, true) ?: [] as $disaster) { if (isset($disaster['type'])) { switch ($disaster['type']) { case 1: $result[] = '杂草'; break; case 2: $result[] = '虫害'; break; case 3: $result[] = '缺水'; break; default: $result[] = '未知灾害'; } } } return empty($result) ? '无' : implode('、', $result); }); $grid->column('crop.fertilized', '是否施肥')->bool(); $helper->columnCreatedAt(); $helper->columnUpdatedAt(); $grid->filter(function (Grid\Filter $filter) { $filterHelper = new FilterHelper($filter, $this); $filterHelper->equalId(); $filterHelper->equalUserId(); $filter->equal('position', '位置'); $filterHelper->equalLandType(); $filterHelper->equalLandStatus(); $filter->equal('crop.seed_id', '种子ID'); $filter->equal('crop.growth_stage', '生长阶段')->select(\App\Module\Farm\Enums\GROWTH_STAGE::getAll()); $filterHelper->betweenDatetime('created_at', '创建时间'); }); $grid->actions(function (Grid\Displayers\Actions $actions){ $actions->disableDelete(); }); // 默认按ID倒序排列 $grid->model()->orderBy('id', 'desc'); }); } /** * 构建详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new FarmLandRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); $show->field('id', 'ID'); $helper->fieldUserId('user_id', '用户ID'); $show->field('position', '位置'); $helper->fieldLandType('land_type', '土地类型'); $helper->fieldLandStatus('status', '状态'); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); }); } /** * 构建表单 * * @return Form */ protected function form() { return Form::make(new FarmLandRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $helper->selectTableUserID('user_id', '用户ID'); $form->number('position', '位置')->min(1)->max(20)->required(); $helper->selectLandType('land_type', '土地类型'); // 直接使用select方法而不是selectOptionCast,避免枚举类型转换问题 $form->select('status', '状态')->options(\App\Module\Farm\Enums\LAND_STATUS::getValueDescription()); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); // 添加保存前的回调函数,确保status字段是整数类型 $form->saving(function (Form $form) { // 确保status是整数 if ($form->status !== null) { $form->status = (int)$form->status; } }); }); } }