You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
5.4 KiB
163 lines
5.4 KiB
<?php
|
|
|
|
namespace App\Admin\Controllers\Shop;
|
|
|
|
use App\Logic\AddressLogic;
|
|
use App\Models\ShopOrder;
|
|
use Encore\Admin\Form;
|
|
use Encore\Admin\Grid;
|
|
use Encore\Admin\Facades\Admin;
|
|
use Encore\Admin\Layout\Content;
|
|
use App\Http\Controllers\Controller;
|
|
use Encore\Admin\Controllers\ModelForm;
|
|
use Encore\Admin\Widgets\Table;
|
|
|
|
class ShopOrderController extends Controller
|
|
{
|
|
use ModelForm;
|
|
|
|
/**
|
|
* Index interface.
|
|
*
|
|
* @return Content
|
|
*/
|
|
public function index()
|
|
{
|
|
return Admin::content(function (Content $content) {
|
|
|
|
$content->header('订单列表');
|
|
$content->description('订单管理');
|
|
|
|
$content->body($this->grid());
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Edit interface.
|
|
*
|
|
* @param $id
|
|
* @return Content
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
$content = Admin::content(function (Content $content) use ($id) {
|
|
|
|
$content->header('订单信息修改');
|
|
$content->description('订单管理');
|
|
|
|
$content->body($this->form($id)->edit($id));
|
|
});
|
|
return $content;
|
|
}
|
|
|
|
/**
|
|
* Create interface.
|
|
*
|
|
* @return Content
|
|
*/
|
|
public function create()
|
|
{
|
|
return Admin::content(function (Content $content) {
|
|
|
|
$content->header('header');
|
|
$content->description('description');
|
|
|
|
$content->body($this->form());
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
return Admin::grid(ShopOrder::class, function (Grid $grid) {
|
|
$grid->model()->orderBy('id', 'desc');
|
|
$grid->disableRowSelector();
|
|
$grid->disableCreateButton();
|
|
$grid->actions(function ($actions){
|
|
$actions->disableDelete();
|
|
});
|
|
$grid->id('序号')->sortable();
|
|
$grid->order_sn('订单编号');
|
|
$grid->order_price('订单金额');
|
|
$grid->coupon_price('优惠金额');
|
|
$grid->actual_price('支付金额');
|
|
$grid->consignee('收件人')->limit(10);
|
|
$grid->mobile('收件人手机')->editable();
|
|
$grid->order_status('订单状态')->display(function ($status) {
|
|
switch($status){
|
|
case ShopOrder::STATUS_WAIT_PAY:
|
|
$label = 'label-danger';
|
|
break;
|
|
case ShopOrder::STATUS_ALREADY_PAID:
|
|
$label = 'label-success';
|
|
break;
|
|
default:
|
|
$label = 'label-info';
|
|
}
|
|
$status = ShopOrder::getStatusDisplayMap()[$status];
|
|
return "<span class='label {$label}'>{$status}</span>";
|
|
});
|
|
|
|
// 这里是多个信息一起显示
|
|
$grid->column('购物信息')->expand(function (){
|
|
$imgUrl = '<img src="%s" style="max-width:160px;max-height:160px" class="img img-thumbnail">';
|
|
$goodsInfo = [];
|
|
foreach($this->orderGoods as $goods){
|
|
$goodsInfo[] = [sprintf($imgUrl,config('filesystems.disks.oss.url').'/'.$goods->list_pic_url).' '.$goods->goods_name.' '.$goods->retail_price.' * '.$goods->number];
|
|
}
|
|
$row_arr1 = [
|
|
[
|
|
'收货人:' . $this->consignee,
|
|
'收件人手机:' . $this->mobile,
|
|
'收货地址:' . AddressLogic::getRegionNameById($this->province).' '.AddressLogic::getRegionNameById($this->city).' '.AddressLogic::getRegionNameById($this->district).' '.$this->address,
|
|
],
|
|
];
|
|
$row_arr1 = array_merge($goodsInfo,$row_arr1);
|
|
$table = new Table(['购物信息'], $row_arr1);
|
|
return $table;
|
|
}, '购物信息');
|
|
|
|
$grid->pay_time('付款时间');
|
|
$grid->created_at('创建时间');
|
|
$grid->updated_at('更新时间');
|
|
$grid->filter(function ($filter) {
|
|
$filter->like('order_sn', '订单编号');
|
|
$filter->equal('mobile', '收件人手机');
|
|
$filter->equal('order_status', '订单状态')->select(ShopOrder::getStatusDisplayMap());
|
|
$filter->between('pay_time', '付款时间')->datetime();
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form($id='')
|
|
{
|
|
|
|
return Admin::form(ShopOrder::class, function (Form $form){
|
|
$form->display('id', '序号');
|
|
$form->display('order_sn', '订单编号');
|
|
$form->display('order_status', '订单状态')->with(function ($value) {
|
|
return ShopOrder::getStatusDisplayMap()[$value];
|
|
});
|
|
$form->display('goods_price', '商品总价');
|
|
$form->display('order_price', '订单金额');
|
|
$form->display('coupon_price', '优惠金额');
|
|
$form->display('actual_price', '支付金额');
|
|
$form->display('consignee', '收件人');
|
|
$form->display('mobile', '收件人手机号');
|
|
$form->display('uid', '下单用户ID');
|
|
$form->display('created_at', '创建时间');
|
|
$form->display('updated_at', '更新时间');
|
|
|
|
});
|
|
}
|
|
}
|