131 lines
4.4 KiB
PHP
131 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Renderable\DistributionPreIncomeLogTable;
|
|
use App\Admin\Repositories\DistributionPreIncome;
|
|
use App\Models\DistributionPreIncome as DistributionPreIncomeModel;
|
|
use App\Models\UserInfo;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Grid\Column;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Show;
|
|
use Illuminate\Support\Arr;
|
|
|
|
class DistributionPreIncomeController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
$builder = DistributionPreIncome::with(['user', 'user.userInfo.inviterInfo.user', 'order']);
|
|
return Grid::make($builder, function (Grid $grid) {
|
|
// $grid->column('id')->sortable();
|
|
$grid->column('user.phone')->copyable();
|
|
$grid->column('agent_level')->display(function ($value) {
|
|
return Arr::get(UserInfo::$agentLevelTexts, $this->agent_level, '未知');
|
|
})->label();
|
|
$grid->column('user.userInfo.inviterInfo.user.phone', '邀请人手机号')->copyable();
|
|
$grid->column('order.sn')->if(function () {
|
|
return Admin::user()->can('dcat.admin.orders.show');
|
|
})
|
|
->then(function (Column $column) {
|
|
$column->link(function ($value) {
|
|
return admin_url('orders/'.$this->order_id);
|
|
});
|
|
})
|
|
->else(function (Column $column) {
|
|
$column->copyable();
|
|
});
|
|
$grid->column('type')->using(DistributionPreIncomeModel::$typeTexts)->label();
|
|
$grid->column('agent_level')->display(function () {
|
|
return $this->agent_level_name;
|
|
})->label();
|
|
$grid->column('total_amount');
|
|
$grid->column('total_sales_value');
|
|
$grid->column('total_revenue');
|
|
$grid->column('logs', '收益详情')->display('详情')->modal(function ($modal) {
|
|
$modal->title('收益详情');
|
|
return DistributionPreIncomeLogTable::make(['id'=>$this->id]);
|
|
});
|
|
$grid->column('status')->using(DistributionPreIncomeModel::$statusTexts)->dot([
|
|
0=>'danger',
|
|
1=>'danger',
|
|
2=>'success',
|
|
]);
|
|
// $grid->column('remarks');
|
|
$grid->column('completed_at');
|
|
$grid->column('created_at')->sortable();
|
|
|
|
$grid->model()->orderBy('order_id', 'desc');
|
|
$grid->model()->orderBy('agent_level', 'asc');
|
|
$grid->model()->orderBy('id', 'asc');
|
|
|
|
$grid->disableActions();
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel(false);
|
|
$filter->equal('user.phone')->width(3);
|
|
$filter->equal('order.sn')->width(3);
|
|
$filter->between('created_at')->dateTime()->width(7);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a show builder.
|
|
*
|
|
* @param mixed $id
|
|
*
|
|
* @return Show
|
|
*/
|
|
protected function detail($id)
|
|
{
|
|
return Show::make($id, new DistributionPreIncome(), function (Show $show) {
|
|
$show->field('id');
|
|
$show->field('user_id');
|
|
$show->field('order_id');
|
|
$show->field('type');
|
|
$show->field('agent_level');
|
|
$show->field('total_amount');
|
|
$show->field('total_sales_value');
|
|
$show->field('total_revenue');
|
|
$show->field('status');
|
|
$show->field('remarks');
|
|
$show->field('completed_at');
|
|
$show->field('created_at');
|
|
$show->field('updated_at');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
return Form::make(new DistributionPreIncome(), function (Form $form) {
|
|
$form->display('id');
|
|
$form->text('user_id');
|
|
$form->text('order_id');
|
|
$form->text('type');
|
|
$form->text('agent_level');
|
|
$form->text('total_amount');
|
|
$form->text('total_sales_value');
|
|
$form->text('total_revenue');
|
|
$form->text('status');
|
|
$form->text('remarks');
|
|
$form->text('completed_at');
|
|
|
|
$form->display('created_at');
|
|
$form->display('updated_at');
|
|
});
|
|
}
|
|
}
|