columnId(); $grid->column('category.name', '任务分类'); $grid->column('name', '任务名称'); $grid->column('description', '任务描述')->limit(30); $helper->columnTaskType(); $grid->column('level_required', '所需等级')->sortable(); $helper->columnResetType(); $grid->column('sort_order', '排序权重')->sortable(); $grid->column('is_active', '是否激活')->switch(); $grid->column('start_time', '开始时间'); $grid->column('end_time', '结束时间'); $grid->column('reward_group_id', '奖励组')->display(function ($rewardGroupId) { if (!$rewardGroupId) { return '使用旧版奖励'; } $rewardGroup = GameRewardGroup::find($rewardGroupId); return $rewardGroup ? "{$rewardGroup->name} ({$rewardGroup->code})" : "未知 ({$rewardGroupId})"; }); $grid->column('created_at', '创建时间')->sortable(); $grid->filter(function (Grid\Filter $filter) { $filterHelper = new FilterHelper($filter, $this); $filterHelper->equalId(); $filterHelper->likeName(); $filterHelper->equalTaskCategory(); $filterHelper->equalTaskType(); $filterHelper->equalResetType(); $filterHelper->equalIsActive(); $filterHelper->betweenDatetime('created_at', '创建时间'); }); }); } /** * 详情页构建 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make(Task::findOrFail($id), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->fieldId(); $show->field('category.name', '任务分类'); $helper->fieldName(); $helper->fieldDescription(); $helper->fieldTaskType(); $helper->fieldPrerequisiteTasks(); $show->field('level_required', '所需等级'); $helper->fieldTimeLimit(); $helper->fieldMaxCompletions(); $helper->fieldResetType(); $helper->fieldJson('display_params', '显示参数'); $helper->fieldSortOrder(); $helper->fieldIsActive(); $show->field('start_time', '开始时间'); $show->field('end_time', '结束时间'); $show->field('reward_group_id', '奖励组')->as(function ($rewardGroupId) { if (!$rewardGroupId) { return '使用旧版奖励'; } $rewardGroup = GameRewardGroup::find($rewardGroupId); return $rewardGroup ? "{$rewardGroup->name} ({$rewardGroup->code})" : "未知 ({$rewardGroupId})"; }); $helper->fieldCreatedAt(); $helper->fieldUpdatedAt(); $helper->showRewards(); $helper->showCosts(); $helper->showAchievementConditions(); }); } /** * 表单构建 * * @return Form */ protected function form() { return Form::make(new TaskRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $helper->selectTaskCategory(); $form->text('name', '任务名称')->required()->rules('required|max:50'); $form->textarea('description', '任务描述')->rows(3); $helper->selectTaskType(); $helper->multipleSelectPrerequisiteTasks(); $helper->numberLevelRequired(); $helper->numberTimeLimit(); $helper->numberMaxCompletions(); $helper->selectResetType(); $helper->json('display_params', '显示参数'); $helper->numberSortOrder(); $helper->switchIsActive(); $form->datetime('start_time', '开始时间')->help('任务可接取的开始时间,为空表示无限制'); $form->datetime('end_time', '结束时间')->help('任务可接取的结束时间,为空表示无限制'); // 添加奖励组选择(使用表格选择器) $rewardGroupTable = GameRewardGroupLazyRenderable::make(); $form->selectTable('reward_group_id', '奖励组') ->from($rewardGroupTable) ->title('选择奖励组') ->model($rewardGroupTable->getModel(), $rewardGroupTable->getModelSelectId(), $rewardGroupTable->getModelViewName()) ->help('选择奖励组后,将使用奖励组中的奖励项作为任务奖励,而不使用旧版奖励'); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); $helper->hasRewards(); $helper->hasCosts(); $helper->hasAchievementConditions(); }); } }