columnId();
$helper->column('name', '配方名称');
$grid->column('resultItem.name', '产出物品');
$helper->column('result_quantity', '产出数量');
$grid->column('success_rate', '成功率')->display(function ($value) {
return $value * 100 . '%';
});
$grid->column('materials', '材料数量')->display(function ($materials) {
return count($materials);
});
$grid->column('coin_cost', '金币消耗')->display(function ($value) {
if (empty($value)) {
return '0';
}
if (is_string($value)) {
$value = json_decode($value, true);
}
if (is_array($value)) {
$result = [];
foreach ($value as $currency => $amount) {
$result[] = $currency . ': ' . $amount;
}
return implode(', ', $result);
}
return $value;
});
$helper->column('cooldown_seconds', '冷却时间(秒)');
$helper->column('is_visible', '是否可见')->switch();
$helper->column('created_at', '创建时间');
$helper->column('updated_at', '更新时间');
// 筛选
$grid->filter(function ($filter) {
$helper = new FilterHelper($filter, $this);
$helper->equal('id', 'ID');
$helper->like('name', '配方名称');
$filter->equal('result_item_id', '产出物品')->select(
ItemItem::pluck('name', 'id')
);
$filter->equal('is_visible', '是否可见')->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)
{
return Show::make(ItemRecipe::findOrFail($id), function (Show $show) {
$helper = new ShowHelper($show, $this);
$helper->field('id', 'ID');
$helper->field('name', '配方名称');
$show->field('resultItem.name', '产出物品');
$helper->field('result_quantity', '产出数量');
$show->field('success_rate', '成功率')->as(function ($value) {
return $value * 100 . '%';
});
// 显示金币消耗
$show->field('coin_cost', '金币消耗')->as(function ($value) {
if (empty($value)) {
return '0';
}
if (is_string($value)) {
$value = json_decode($value, true);
}
if (is_array($value)) {
$result = [];
foreach ($value as $currency => $amount) {
$result[] = $currency . ': ' . $amount;
}
return implode('
', $result);
}
return $value;
})->unescape();
$helper->field('cooldown_seconds', '冷却时间(秒)');
$show->field('is_visible', '是否可见')->as(function ($value) {
return $value ? '是' : '否';
});
// 显示解锁条件
$show->field('unlock_condition', '解锁条件')->as(function ($value) {
if (empty($value)) {
return '无';
}
if (is_string($value)) {
$value = json_decode($value, true);
}
if (is_array($value)) {
$result = [];
foreach ($value as $condition => $requirement) {
$result[] = $condition . ': ' . $requirement;
}
return implode('
', $result);
}
return $value;
})->unescape();
$helper->field('created_at', '创建时间');
$helper->field('updated_at', '更新时间');
// 显示配方材料
$show->divider('配方材料');
$show->field('materials', '材料列表')->as(function ($materials) {
$html = '
| 物品名称 | 数量 | 是否消耗 |
|---|---|---|
| ' . $material->item->name . ' | '; $html .= '' . $material->quantity . ' | '; $html .= '' . ($material->is_consumed ? '是' : '否') . ' | '; $html .= '