column('id', 'ID')->sortable(); $grid->column('user_id', '用户ID')->sortable(); $grid->column('name', '宠物名称'); $helper->columnPetGrade('grade'); $grid->column('level', '等级')->sortable(); $grid->column('experience', '经验值')->sortable(); $grid->column('stamina', '体力值')->sortable(); $helper->columnPetStatus('status'); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); $grid->column('deleted_at', '删除时间'); // 筛选 $grid->filter(function ($filter) { $helper = new FilterHelper($filter, $this); $helper->equal('id', 'ID'); $helper->equal('user_id', '用户ID'); $filter->like('name', '宠物名称'); $filter->between('level', '等级'); $helper->equalRadioPetStatus('status', '状态'); // 添加软删除筛选 $filter->scope('trashed', '已删除')->onlyTrashed(); $filter->scope('with_trashed', '包含已删除')->withTrashed(); }); return $grid; }); } /** * 详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new PetUserRepository(['user', 'skillLogs', 'remouldLogs']), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->field('id', 'ID'); $helper->field('user_id', '用户ID'); $show->field('name', '宠物名称'); $helper->fieldPetGrade('grade'); $show->field('level', '等级'); $show->field('experience', '经验值'); $show->field('stamina', '体力值'); $helper->fieldPetStatus('status'); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); $show->field('deleted_at', '删除时间'); // 显示技能使用记录 $show->skillLogs('技能使用记录', function ($skillLogs) { $skillLogs->resource('/admin/pet-skill-logs'); $skillLogs->id('ID'); $skillLogs->skill()->skill_name('技能名称'); $skillLogs->used_at('使用时间'); $skillLogs->effect_result('效果结果')->json(); }); // 显示洗髓记录 $show->remouldLogs('洗髓记录', function ($remouldLogs) { $remouldLogs->resource('/admin/pet-remould-logs'); $remouldLogs->id('ID'); $remouldLogs->old_grade('原品阶')->as(function ($grade) { $labels = [ PetGrade::FIRST->value => '一品', PetGrade::SECOND->value => '二品', PetGrade::THIRD->value => '三品', PetGrade::FOURTH->value => '四品', ]; return $labels[$grade] ?? '未知'; }); $remouldLogs->new_grade('新品阶')->as(function ($grade) { $labels = [ PetGrade::FIRST->value => '一品', PetGrade::SECOND->value => '二品', PetGrade::THIRD->value => '三品', PetGrade::FOURTH->value => '四品', ]; return $labels[$grade] ?? '未知'; }); $remouldLogs->remould_time('洗髓时间'); }); return $show; }); } /** * 表单 * * @return Form */ protected function form() { return Form::make(new PetUserRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $form->number('user_id', '用户ID')->required(); $helper->text('name')->required(); $form->select('grade', '品阶')->options([ PetGrade::FIRST->value => '一品', PetGrade::SECOND->value => '二品', PetGrade::THIRD->value => '三品', PetGrade::FOURTH->value => '四品', ])->required(); $form->number('level', '等级') ->default(1) ->min(1) ->max(30) ->required(); $form->number('experience', '经验值') ->default(0) ->min(0) ->required(); $form->number('stamina', '体力值') ->default(100) ->min(0) ->max(100) ->required(); $form->select('status', '状态')->options([ PetStatus::NONE->value => '未知', PetStatus::NORMAL->value => '正常', PetStatus::FIGHTING->value => '战斗中', PetStatus::DEAD->value => '死亡', ])->default(PetStatus::NORMAL->value) ->required(); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); return $form; }); } }