6
0
Fork 0
jiqu-library-server/app/Admin/Controllers/DistributionPreIncomeContro...

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');
});
}
}