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

133 lines
4.6 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Admin\Actions\Grid\DealerOrderPaid;
use App\Admin\Actions\Grid\DealerOrderShipping;
use App\Admin\Repositories\DealerOrder;
use App\Enums\DealerOrderStatus;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Show;
class DealerOrderController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$builder = DealerOrder::with(['user', 'consignor']);
return Grid::make($builder, function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('sn');
$grid->column('user.phone')->copyable();
$grid->column('consignor.phone')->display(function ($value) {
return $value??'系统';
});
$grid->column('total_amount')->prepend('¥');
$statusTexts = DealerOrderStatus::texts();
$grid->column('order_status')->display(function ($v) {
return $this->order_status;
})->using($statusTexts)->dot([
DealerOrderStatus::Pending->value => 'primary',
DealerOrderStatus::Paying->value => 'danger',
DealerOrderStatus::Confirming->value => 'warning',
DealerOrderStatus::Paid->value => 'danger',
DealerOrderStatus::Shipped->value => 'warning',
DealerOrderStatus::Completed->value => 'success',
DealerOrderStatus::Cancelled->value => '#b3b9bf',
]);
// $grid->column('settle_state');
// $grid->column('pay_info');
// $grid->column('pay_image');
// $grid->column('pay_time');
// $grid->column('paied_time');
// $grid->column('shipping_time');
// $grid->column('shippinged_time');
$grid->column('created_at')->sortable();
// $grid->column('updated_at')->sortable();
$grid->actions(function (Grid\Displayers\Actions $actions) {
if ($actions->row->status == DealerOrderStatus::Confirming && Admin::user()->can('dcat.admin.dealers_orders.paid')) {
$actions->append(new DealerOrderPaid());
}
if ($actions->row->status == DealerOrderStatus::Paid && Admin::user()->can('dcat.admin.dealers_orders.shipping')) {
$actions->append(new DealerOrderShipping());
}
});
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
// $filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new DealerOrder(), function (Show $show) {
$show->field('id');
$show->field('sn');
$show->field('user_id');
$show->field('consignor_id');
$show->field('total_amount');
$show->field('status');
$show->field('settle_state');
$show->field('consignee_name');
$show->field('consignee_telephone');
$show->field('consignee_zone');
$show->field('consignee_address');
$show->field('pay_info');
$show->field('pay_image');
$show->field('pay_time');
$show->field('paied_time');
$show->field('shipping_time');
$show->field('shippinged_time');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new DealerOrder(), function (Form $form) {
$form->display('id');
$form->text('sn');
$form->text('user_id');
$form->text('consignor_id');
$form->text('total_amount');
$form->text('status');
$form->text('settle_state');
$form->text('consignee_name');
$form->text('consignee_telephone');
$form->text('consignee_zone');
$form->text('consignee_address');
$form->text('pay_info');
$form->text('pay_image');
$form->text('pay_time');
$form->text('paied_time');
$form->text('shipping_time');
$form->text('shippinged_time');
$form->display('created_at');
$form->display('updated_at');
});
}
}