65 lines
2.7 KiB
PHP
65 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Renderable;
|
|
|
|
use App\Admin\Actions\Grid\DrawLogComplete;
|
|
use App\Enums\DrawLogStatus;
|
|
use App\Enums\DrawPrizeType;
|
|
use App\Models\DrawActivity;
|
|
use App\Models\DrawActivityPrize;
|
|
use App\Models\DrawLog;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Grid\LazyRenderable;
|
|
|
|
class DrawLogTable extends LazyRenderable
|
|
{
|
|
public function grid(): Grid
|
|
{
|
|
$drawActivity = DrawActivity::findOrFail($this->payload['draw_activity_id'] ?? 0);
|
|
|
|
return Grid::make(DrawLog::with(['prize', 'user']), function (Grid $grid) use ($drawActivity) {
|
|
$grid->setResource("draw-activities/{$drawActivity->id}/logs");
|
|
|
|
$grid->model()->where('draw_activity_id', $drawActivity->id)->orderBy('id', 'desc');
|
|
|
|
$grid->column('prize.name', '奖品名称');
|
|
$grid->column('prize.icon', '奖品图标')->image(null, 80, 80);
|
|
$grid->column('prize.type', '奖品类型')->display(function () {
|
|
return $this->prize->type->label();
|
|
});
|
|
$grid->column('user.phone', '中奖人手机号')->display(function () {
|
|
$href = admin_route('users.show', ['user' => $this->user_id]);
|
|
|
|
return "<a href=\"{$href}\" target=\"_blank\">{$this->user->phone}</a>";
|
|
});
|
|
$grid->column('created_at', '中奖时间')->sortable();
|
|
$grid->column('consignee_name', '收件人');
|
|
$grid->column('consignee_phone', '联系方式');
|
|
$grid->column('consignee_address', '收货地址');
|
|
$grid->column('remark', '备注');
|
|
$grid->column('status', '状态')->display(function () {
|
|
return $this->status->label();
|
|
});
|
|
|
|
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
|
if (Admin::user()->can('dcat.admin.draw_activities.log_edit')) {
|
|
$actions->quickEdit(true);
|
|
}
|
|
|
|
if ($actions->row->isPending() && Admin::user()->can('dcat.admin.draw_activities.log_complete')) {
|
|
$actions->append(new DrawLogComplete());
|
|
}
|
|
});
|
|
|
|
$grid->filter(function (Grid\Filter $filter) use ($drawActivity) {
|
|
$filter->panel(false);
|
|
$filter->like('user.phone', '手机号')->width(6);
|
|
$filter->equal('draw_activity_prize_id', '奖品名称')->select(DrawActivityPrize::where('draw_activity_id', $drawActivity->id)->pluck('name', 'id'))->width(6);
|
|
$filter->equal('prize.type', '奖品类型')->select(DrawPrizeType::options())->width(6);
|
|
$filter->equal('status', '状态')->select(DrawLogStatus::options())->width(6);
|
|
});
|
|
});
|
|
}
|
|
}
|