column('id', 'ID')->sortable(); $grid->column('user_id', '用户ID'); $grid->column('activity_id', '活动')->display(function ($activityId) { $activity = ActivityConfig::find($activityId); return $activity ? $activity->name : "未知活动({$activityId})"; }); $grid->column('progress', '进度'); $grid->column('last_update', '最后更新时间')->sortable(); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id', 'ID'); $filter->equal('user_id', '用户ID'); $filter->equal('activity_id', '活动')->select( ActivityConfig::pluck('name', 'id') ); $filter->between('last_update', '最后更新时间')->datetime(); }); // 禁用创建按钮 $grid->disableCreateButton(); }); } /** * 创建详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new UserActivityDataRepository(), function (Show $show) { $show->field('id', 'ID'); $show->field('user_id', '用户ID'); $show->field('activity_id', '活动')->as(function ($activityId) { $activity = ActivityConfig::find($activityId); return $activity ? $activity->name : "未知活动({$activityId})"; }); $show->field('progress', '进度'); $show->field('progress_data', '进度数据')->json(); $show->field('last_update', '最后更新时间'); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); // 显示参与记录 $show->divider(); $show->field('参与记录')->as(function () { $participation = \App\Module\Activity\Models\ActivityParticipation::where('user_id', $this->user_id) ->where('activity_id', $this->activity_id) ->first(); if (!$participation) { return '无参与记录'; } $html = '
| ID | ' . $participation->id . ' |
|---|---|
| 参与时间 | ' . $participation->participate_time . ' |
| 完成状态 | ' . \App\Module\Activity\Enums\PARTICIPATION_STATUS::getName($participation->completion_status) . ' |
| 完成时间 | ' . ($participation->completion_time ?: '未完成') . ' |
| 奖励状态 | ' . \App\Module\Activity\Enums\REWARD_STATUS::getName($participation->reward_status) . ' |