column('id', 'ID')->sortable(); $grid->column('rule_type', '规则类型')->display(function () { if (!empty($this->item_id)) { return '物品规则'; } elseif (!empty($this->category_id)) { return '分类规则'; } else { return '未知'; } }); $grid->column('item.name', '物品名称'); $grid->column('category.name', '分类名称'); $grid->column('priority', '优先级')->sortable(); $grid->column('coin_return_rate', '金币返还率')->display(function ($value) { return $value * 100 . '%'; }); $grid->column('results', '结果数量')->display(function ($results) { return count($results); }); $grid->column('is_active', '是否启用')->switch(); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); // 筛选 $grid->filter(function ($filter) { $filter->equal('id', 'ID'); $filter->equal('item_id', '物品')->select( ItemItem::pluck('name', 'id') ); $filter->equal('category_id', '分类')->select( ItemCategory::pluck('name', 'id') ); $filter->where('rule_type', function ($query) { if ($this->input == 'item') { $query->whereNotNull('item_id')->whereNull('category_id'); } elseif ($this->input == 'category') { $query->whereNotNull('category_id')->whereNull('item_id'); } }, '规则类型')->select([ 'item' => '物品规则', 'category' => '分类规则', ]); $filter->equal('is_active', '是否启用')->radio([ 1 => '是', 0 => '否', ]); }); }); } /** * 详情页 * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header($this->title) ->description('详情') ->body($this->detail($id)); } /** * 详情页 * * @param mixed $id * @return Show */ protected function detail($id) { $model = ItemDismantleRule::findOrFail($id); return Show::make($model, function (Show $show) { $show->field('id', 'ID'); // 规则类型 $show->field('rule_type', '规则类型')->as(function () { if (!empty($this->item_id)) { return '物品规则'; } elseif (!empty($this->category_id)) { return '分类规则'; } else { return '未知'; } }); // 根据规则类型显示不同字段 if ($show->getModel()->item_id) { $show->field('item.name', '物品名称'); } elseif ($show->getModel()->category_id) { $show->field('category.name', '分类名称'); } $show->field('priority', '优先级'); $show->field('coin_return_rate', '金币返还率')->as(function ($value) { return $value * 100 . '%'; }); $show->field('is_active', '是否启用')->as(function ($value) { return $value ? '是' : '否'; }); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); // 显示分解结果 $show->divider('分解结果'); $show->field('results', '结果列表')->as(function ($results) { $html = '
| 物品名称 | 最小数量 | 最大数量 | 概率 |
|---|---|---|---|
| ' . $result->resultItem->name . ' | '; $html .= '' . $result->min_quantity . ' | '; $html .= '' . $result->max_quantity . ' | '; $html .= '' . ($result->chance * 100) . '% | '; $html .= '