6
0
Fork 0
jiqu-library-server/app/Admin/Renderable/DrawLogTable.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);
});
});
}
}