model()->settled()->orderBy('id', 'desc');
$grid->column('settle_period', '结算周期')->display(function () {
return $this->start_at->rawFormat('Y/m/d') . '-' . $this->end_at->rawFormat('Y/m/d');
})->link(function () {
return admin_route('dealer_manager_sales_logs.index', [
'user[phone]' => $this->user?->phone,
'order_completed_at[start]' => $this->start_at->toDateTimeString(),
'order_completed_at[end]' => $this->end_at->toDateTimeString(),
]);
});
$grid->column('user.phone', '手机号');
$grid->column('userinfo.nickname', '昵称');
$grid->column('is_manager', '管理者')->bool();
$grid->column('lvl', '经销商等级')->display(function () {
return $this->lvl->text();
});
$grid->column('total_amount', '津贴总额')->prepend('¥');
$grid->column('fee', '手续费')->prepend('¥')->help('手续费=津贴总额*手续费率');
$grid->column('real_amount', '总收入')->prepend('¥')->help('总收入=津贴总额-手续费');
$grid->column('fee_rate', '手续费率')->append('%');
$grid->column('remark', '备注')->display('查看') // 设置按钮名称
->expand(function () {
$card = new Card(null, nl2br($this->remark));
return "
$card
";
});
$grid->column('status', '状态')->display(function ($v) {
return $v->text();
})->circleDot(DealerManagerSubsidyStatus::colors());
$grid->column('earning.pay_at', '付款时间');
$grid->showRowSelector();
$grid->tools(function ($tools) {
$tools->batch(function ($batch) {
$batch->disableDelete();
if (Admin::user()->can('dcat.admin.dealer_manager_subsidies.batch_pay')) {
$batch->add(new DealerManagerSubsidyBatchPay());
}
});
});
$grid->actions(function (Grid\Displayers\Actions $actions) {
if ($actions->row->isPending() && Admin::user()->can('dcat.admin.dealer_manager_subsidies.pay')) {
$actions->append(new DealerManagerSubsidyPay());
}
});
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('user.phone', '手机号')->width(3);
$filter->equal('status', '状态')->select(DealerManagerSubsidyStatus::texts())->width(3);
$filter->whereBetween('settle_period', function ($query) {
$start = $this->input['start'] ?? null;
$end = $this->input['end'] ?? null;
$query->when($start, function ($query, $start) {
$query->where('start_at', '>=', "{$start} 00:00:00");
});
$query->when($end, function ($query, $end) {
$query->where('end_at', '<=', "{$end} 23:59:59");
});
}, '结算周期')->date()->width(6);
});
$grid->header(function ($collection) use ($grid) {
return tap(new Row(), function ($row) use ($grid) {
$query = DealerManagerSubsidyModel::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'));
});
});
});
}
}