135 lines
4.5 KiB
PHP
135 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Repositories\DealerManageSubsidyLog;
|
|
use App\Admin\Widgets\InfoBox;
|
|
use App\Models\DealerManageSubsidyLog as DealerManageSubsidyLogModel;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Layout\Row;
|
|
use Dcat\Admin\Show;
|
|
|
|
class DealerManageSubsidyLogController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
Admin::style(
|
|
<<<CSS
|
|
.card-header {
|
|
margin-top: 1.5rem !important;
|
|
margin-bottom: -1rem !important;
|
|
}
|
|
CSS
|
|
);
|
|
|
|
$builder = DealerManageSubsidyLog::with(['user', 'order', 'product']);
|
|
|
|
return Grid::make($builder, function (Grid $grid) {
|
|
$grid->model()->orderBy('id', 'desc');//默认ID倒叙
|
|
|
|
$grid->column('id')->sortable();
|
|
$grid->column('user.phone', '手机号')->copyable();
|
|
$grid->column('lvl', '等级')->display(function () {
|
|
return $this->lvl->text();
|
|
});
|
|
$grid->column('order.sn', '订单编号');
|
|
$grid->column('product.name', '商品名称');
|
|
$grid->column('sales_volume', '销量');
|
|
$grid->column('total_amount', '金额');
|
|
$grid->column('order_completed_at', '结算时间')->sortable();
|
|
$grid->column('created_at')->sortable();
|
|
|
|
$grid->disableCreateButton();
|
|
$grid->disableActions();
|
|
$grid->header(function ($collection) use ($grid) {
|
|
return tap(new Row(), function ($row) use ($grid) {
|
|
$query = DealerManageSubsidyLogModel::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'] ?? []);
|
|
});
|
|
|
|
$row->column(3, new InfoBox('津贴总额', (clone $query)->sum('total_amount'), 'fa fa-cny'));
|
|
});
|
|
$query = DealerManageSubsidyLogModel::query();
|
|
|
|
// 拿到表格筛选 where 条件数组进行遍历
|
|
$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');
|
|
// 自定义组件
|
|
return "<div style='padding: 10px;'>金额:".$totalAmount.' 元</div>';
|
|
});
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel(false);
|
|
$filter->equal('user.phone', '手机号')->width(3);
|
|
$filter->between('order_completed_at', '结算时间')->dateTime()->width(7);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a show builder.
|
|
*
|
|
* @param mixed $id
|
|
*
|
|
* @return Show
|
|
*/
|
|
protected function detail($id)
|
|
{
|
|
return Show::make($id, new DealerManageSubsidyLog(), function (Show $show) {
|
|
$show->field('id');
|
|
$show->field('user_id');
|
|
$show->field('lvl');
|
|
$show->field('order_id');
|
|
$show->field('product_id');
|
|
$show->field('sales_volume');
|
|
$show->field('total_amount');
|
|
$show->field('order_completed_at');
|
|
$show->field('created_at');
|
|
$show->field('updated_at');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
return Form::make(new DealerManageSubsidyLog(), function (Form $form) {
|
|
$form->display('id');
|
|
$form->text('user_id');
|
|
$form->text('lvl');
|
|
$form->text('order_id');
|
|
$form->text('product_id');
|
|
$form->text('sales_volume');
|
|
$form->text('total_amount');
|
|
$form->text('order_completed_at');
|
|
|
|
$form->display('created_at');
|
|
$form->display('updated_at');
|
|
});
|
|
}
|
|
}
|