disableCreateButton(); $grid->disableActions(); $grid->disableBatchDelete(); $grid->disableDeleteButton(); $grid->disableEditButton(); // 只保留详情按钮 $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); $actions->disableEdit(); $actions->disableQuickEdit(); }); $grid->column('id', 'ID')->sortable(); $grid->column('user_id', '用户ID'); $grid->column('outputLimit.item.name', '物品名称'); $grid->column('current_count', '当前计数'); $grid->column('last_reset_time', '上次重置时间'); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); // 筛选 $grid->filter(function ($filter) { $filter->equal('id', 'ID'); $filter->equal('user_id', '用户ID'); $filter->equal('limit_id', '限制ID')->select( ItemOutputLimit::with('item')->get()->pluck('item.name', 'id') ); $filter->between('current_count', '当前计数'); $filter->between('last_reset_time', '上次重置时间')->datetime(); }); return $grid; }); } /** * 详情页 * * @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 ItemUserOutputCounter(), function (Show $show) { // 禁用编辑和删除按钮 $show->panel()->tools(function ($tools) { $tools->disableEdit(); $tools->disableDelete(); }); $show->field('id', 'ID'); $show->field('user_id', '用户ID'); // 显示限制信息 $show->field('limit_id', '限制ID'); $show->field('outputLimit.item.name', '物品名称'); $show->field('outputLimit.limit_type', '限制类型')->as(function ($value) { $types = [ ItemOutputLimit::LIMIT_TYPE_GLOBAL => '全局限制', ItemOutputLimit::LIMIT_TYPE_USER => '用户限制', ItemOutputLimit::LIMIT_TYPE_DAILY => '每日限制', ItemOutputLimit::LIMIT_TYPE_WEEKLY => '每周限制', ItemOutputLimit::LIMIT_TYPE_MONTHLY => '每月限制', ]; return $types[$value] ?? '未知'; }); $show->field('outputLimit.max_quantity', '最大数量'); $show->field('current_count', '当前计数'); // 计算剩余可获取数量 $show->field('remaining_count', '剩余可获取数量')->as(function () { if (!$this->outputLimit) { return '未知'; } $remaining = max(0, $this->outputLimit->max_quantity - $this->current_count); return $remaining; }); $show->field('last_reset_time', '上次重置时间'); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); return $show; }); } }