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 = '
'; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $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) . '
'; return $html; })->unescape(); }); } /** * 创建表单 * * @return Form */ protected function form() { return Form::make(new UserActivityDataRepository(), function (Form $form) { $form->display('id', 'ID'); $form->display('user_id', '用户ID'); $form->display('activity_id', '活动ID'); $form->number('progress', '进度')->min(0); $form->textarea('progress_data', '进度数据')->help('JSON格式'); $form->display('last_update', '最后更新时间'); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); }); } }