disableCreateButton(); $grid->disableActions(); $grid->disableBatchDelete(); $grid->disableDeleteButton(); $grid->disableEditButton(); // 只保留详情按钮 $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); $actions->disableEdit(); $actions->disableQuickEdit(); }); $helper->columnId(); $grid->column('user_id', '用户ID'); $grid->column('recipe.name', '配方名称'); $grid->column('is_unlocked', '是否解锁')->switch(); $grid->column('unlock_time', '解锁时间'); $grid->column('craft_count', '合成次数'); $grid->column('last_craft_time', '上次合成时间'); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); // 筛选 $grid->filter(function ($filter) { $helper = new FilterHelper($filter, $this); $helper->equal('id', 'ID'); $helper->equal('user_id', '用户ID'); $filter->equal('recipe_id', '配方')->select( \App\Module\GameItems\Models\ItemRecipe::pluck('name', 'id') ); $filter->equal('is_unlocked', '是否解锁')->radio([ 1 => '是', 0 => '否', ]); $filter->between('unlock_time', '解锁时间')->datetime(); $filter->between('craft_count', '合成次数'); $filter->between('last_craft_time', '上次合成时间')->datetime(); }); }); } /** * 详情页 * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header($this->title) ->description('详情') ->body($this->detail($id)); } /** * 详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new ItemUserRecipeRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); // 禁用编辑和删除按钮 $show->panel()->tools(function ($tools) { $tools->disableEdit(); $tools->disableDelete(); }); $helper->field('id', 'ID'); $helper->field('user_id', '用户ID'); // 显示配方信息 $show->field('recipe.name', '配方名称'); $show->field('recipe.resultItem.name', '产出物品'); $helper->field('recipe.result_quantity', '产出数量'); $show->field('recipe.success_rate', '成功率')->as(function ($value) { return ($value * 100) . '%'; }); $show->field('recipe.cooldown_seconds', '冷却时间(秒)'); $show->field('is_unlocked', '是否解锁')->as(function ($value) { return $value ? '是' : '否'; }); $helper->field('unlock_time', '解锁时间'); $helper->field('craft_count', '合成次数'); $helper->field('last_craft_time', '上次合成时间'); // 计算冷却状态 $show->field('cooldown_status', '冷却状态')->as(function () { if (!$this->recipe || $this->recipe->cooldown_seconds <= 0) { return '无冷却'; } if (!$this->last_craft_time) { return '未合成过'; } $cooldownEnd = $this->last_craft_time->addSeconds($this->recipe->cooldown_seconds); if ($cooldownEnd->isPast()) { return '已冷却完成'; } else { $remainingSeconds = now()->diffInSeconds($cooldownEnd, false); return '冷却中,剩余 ' . $remainingSeconds . ' 秒'; } }); $helper->field('created_at', '创建时间'); $helper->field('updated_at', '更新时间'); }); } }