64 lines
2.4 KiB
PHP
64 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Renderable;
|
|
|
|
use App\Admin\Actions\Grid\DrawActivityPrizeStockChange;
|
|
use App\Admin\Repositories\DrawActivityPrize;
|
|
use App\Models\DrawActivity;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Grid\LazyRenderable;
|
|
|
|
class DrawActivityPrizeTable extends LazyRenderable
|
|
{
|
|
public function grid(): Grid
|
|
{
|
|
$drawActivity = DrawActivity::findOrFail($this->payload['draw_activity_id'] ?? 0);
|
|
|
|
return Grid::make(new DrawActivityPrize(), function (Grid $grid) use ($drawActivity) {
|
|
$grid->setResource("draw-activities/{$drawActivity->id}/prizes");
|
|
|
|
$grid->model()->where('draw_activity_id', $drawActivity->id)->orderBy('sort', 'desc');
|
|
|
|
$grid->column('name', '名称');
|
|
$grid->column('icon', '图标')->image(null, 80, 80);
|
|
$grid->column('type', '类型')->display(function ($type) {
|
|
return $type->label();
|
|
});
|
|
$grid->column('amount', '数量/面值')->display(function ($v) {
|
|
return trim_trailing_zeros($v);
|
|
});
|
|
$grid->column('weight', '权重');
|
|
$grid->column('stock', '库存')->display(function ($stock) {
|
|
if ($this->limited) {
|
|
return $stock;
|
|
}
|
|
|
|
return '不限';
|
|
});
|
|
$grid->column('winnings', '中奖数量');
|
|
$grid->column('sort', '排序');
|
|
|
|
$grid->disableRefreshButton();
|
|
|
|
if (! $drawActivity->isPublished() && Admin::user()->can('dcat.admin.draw_activities.prize_create')) {
|
|
$grid->enableDialogCreate();
|
|
$grid->showCreateButton();
|
|
}
|
|
|
|
$grid->actions(function (Grid\Displayers\Actions $actions) use ($drawActivity) {
|
|
if (! $drawActivity->isClosed() && Admin::user()->can('dcat.admin.draw_activities.prize_edit')) {
|
|
$actions->quickEdit(true);
|
|
}
|
|
|
|
if (! $drawActivity->isPublished() && Admin::user()->can('dcat.admin.draw_activities.prize_delete')) {
|
|
$actions->disableDelete(false);
|
|
}
|
|
if (! $drawActivity->isClosed() && $drawActivity->isPublished() && Admin::user()->can('dcat.admin.draw_activities.prize_stock')) {
|
|
$actions->append(new DrawActivityPrizeStockChange());
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|