columnId(); $helper->columnUserId(); // 任务名称列,添加链接到任务详情 $grid->column('task.name', '任务名称')->display(function ($name) { if (!$name) { return '未知任务'; } $taskId = $this->task_id ?? 0; $url = admin_url("tasks/{$taskId}"); return "{$name}"; }); // 条件名称列 $grid->column('achievementCondition.condition.name', '条件名称')->display(function ($name) { return $name ?: '未知条件'; }); // 任务状态列(手动查询用户任务状态) $grid->column('task_status', '任务状态')->display(function () { // 手动查询用户任务状态 $userTask = \App\Module\Task\Models\TaskUserTask::where('user_id', $this->user_id ?? 0) ->where('task_id', $this->task_id ?? 0) ->first(); $status = $userTask ? $userTask->status : null; if ($status === null) { return '未接取'; } $statusMap = [ 0 => '未接取', 1 => '进行中', 2 => '已完成', 3 => '已领取奖励', 4 => '已失败', 5 => '已过期', ]; return $statusMap[$status] ?? '未知状态'; }); $grid->column('current_value', '当前值')->display(function ($value) { return number_format($value); }); $grid->column('target_value', '目标值')->display(function ($value) { return number_format($value); }); $helper->columnCalculatedProgress(); // 最后更新时间 $grid->column('last_update_time', '最后更新')->display(function ($time) { return $time ? $time : '从未更新'; })->sortable(); $grid->column('created_at', '创建时间')->sortable(); $grid->filter(function (Grid\Filter $filter) { $filterHelper = new FilterHelper($filter, $this); $filterHelper->equalId(); $filterHelper->equalUserId(); $filterHelper->equalTaskId(); $filterHelper->equal('achievement_condition_id', '达成条件ID'); $filter->between('current_value', '当前值范围'); $filter->between('target_value', '目标值范围'); $filter->between('created_at', '创建时间')->datetime(); }); }); } /** * 详情页构建 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make(TaskUserProgress::with(['task', 'achievementCondition.condition', 'userTask'])->findOrFail($id), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->fieldId(); $show->field('user_id', '用户ID'); $show->field('task.name', '任务名称'); $show->field('task.description', '任务描述'); $show->field('achievementCondition.condition.name', '条件名称'); $show->field('achievementCondition.condition.description', '条件描述'); $show->field('current_value', '当前值')->as(function ($value) { return number_format($value); }); $show->field('target_value', '目标值')->as(function ($value) { return number_format($value); }); $helper->fieldCalculatedProgress(); // 任务状态暂时移除,可以通过用户任务管理页面查看 $show->field('last_update_time', '最后更新时间'); $helper->fieldCreatedAt(); $helper->fieldUpdatedAt(); }); } /** * 表单构建 * * @return Form */ protected function form() { return Form::make(new TaskUserProgressRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $form->number('user_id', '用户ID')->required(); $helper->selectTask(); $form->select('achievement_condition_id', '达成条件ID')->options(function () { return \App\Module\Task\Models\TaskAchievementCondition::with('condition') ->get() ->pluck('condition.name', 'id'); })->required(); $form->number('current_value', '当前值')->default(0)->min(0); $form->number('target_value', '目标值')->default(1)->min(1); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); }); } }