model()->channelSubsidy()->withoutPayer()->orderBy('id', 'desc');
$grid->column('id')->sortable();
$grid->column('user.phone', '手机号');
$grid->column('user.userInfo.nickname', '昵称');
$grid->column('lvl', '经销商等级')->display(function () {
return $this->lvl->text();
});
$grid->column('total_amount', '补贴金额')->prepend('¥');
$grid->column('fee', '手续费')->prepend('¥')->help('手续费=补贴金额*手续费率');
$grid->column('fee_rate', '手续费率')->append('%');
$grid->column('total_earnings', '总收入')->prepend('¥')->help('总收入=补贴金额-手续费');
$grid->column('remark', '备注')->display('查看') // 设置按钮名称
->expand(function () {
$card = new Card(null, nl2br($this->remark));
return "
$card
";
});
$grid->column('settle_at', '结算时间')->display(function () {
return $this->settle_at?->toDateTimeString();
})->sortable();
$grid->column('status', '状态')->display(function ($v) {
return " {$v->text()}";
});
$grid->column('pay_at', '付款时间')->display(function () {
return $this->pay_at?->toDateTimeString();
})->sortable();
$grid->column('created_at', '创建时间')->display(function () {
return $this->created_at?->toDateTimeString();
});
// $grid->showRowSelector();
// $grid->tools(function ($tools) {
// $tools->batch(function ($batch) {
// $batch->disableDelete();
// if (Admin::user()->can('dcat.admin.dealer_channel_subsidies.batch_pay')) {
// $batch->add(new DealerChannelSubsidyBatchPay());
// }
// });
// });
$grid->disableActions();
// $grid->actions(function (Grid\Displayers\Actions $actions) {
// if (
// $actions->row->isSettled() &&
// $actions->row->isPending() &&
// Admin::user()->can('dcat.admin.dealer_channel_subsidies.pay')
// ) {
// $actions->append(new DealerChannelSubsidyPay());
// }
// });
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('user.phone', '手机号')->width(3);
$filter->equal('status', '状态')->select([
DealerEarningStatus::Pending->value => '待付款',
DealerEarningStatus::Completed->value => '已完成',
])->width(3);
$filter->between('settle_at', '结算时间')->datetime()->width(6);
});
$grid->header(function ($collection) use ($grid) {
return tap(new Row(), function ($row) use ($grid) {
$query = DealerEarningModel::query();
$grid->model()->getQueries()->unique()->each(function ($value) use (&$query) {
if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) {
return;
}
$query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []);
});
$totalAmount = (clone $query)->sum('total_amount');
$totalFee = (clone $query)->sum('fee');
$row->column(3, new InfoBox('补贴金额', $totalAmount, 'fa fa-cny'));
$row->column(3, new InfoBox('手续费', $totalFee, 'fa fa-cny'));
});
});
});
}
}