<?php namespace App\Store\Controllers; use App\Models\UserAddress; use App\Models\UserRefund; use App\Store\Actions\Grid\RefundToExamine; use App\Store\Actions\Grid\SendOutGoods; use App\Models\StoreOrder; use App\Models\TotalOrder; use App\Models\User; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Widgets\Card; class StoreOrderController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(StoreOrder::with(['order','store_info','store_goods']), function (Grid $grid) { $grid->addTableClass(['table-text-center']); $grid->model()->where(['store_id'=>Admin::user()->id])->orderBy('created_at','DESC'); $grid->column('id')->sortable(); $grid->column('store_goods.title','商品'); $grid->column('num'); $grid->column('order.pay_money','金额'); $grid->column('store_info.name','商户'); $grid->column('order.uid','用户')->display(function ($val){ return User::find($val)->name ?? ''; }); $grid->column('address_id','收货信息')->if(function ($column){ return $column->getValue(); })->display('点击查看') ->modal(function ($modal){ //设置弹窗标题 $modal->title('收货信息'); $address = UserAddress::find($this->address_id); $name = $address->name ?? ''; $phone = $address->phone ?? ''; $area = $address->area ?? ''; $address = $address->address ?? ''; $content = '<p>收货人 :'. $name .'</p><br/><p>电话 :'.$phone.'</p><br/><p>所在地区 :'.$area.'</p><br/><p>详细地址 :'.$address.'</p>'; $card = new Card(null, $content); return "<div style='padding:10px 10px 0'>$card</div>"; })->else(function (Grid\Column $column) { return ''; }); $grid->column('status','流程状态') ->if(function ($column){ return $column->getValue() == 0 && $this->order->status == 1; })->display('点击发货') ->expand(new SendOutGoods()) ->if(function ($column){ return $column->getValue() == 3 && in_array($this->order->status,[1,2]); })->display('退款审核') ->expand(new RefundToExamine()) ->else(function ($column){ $column->using(StoreOrder::STATUS)->dot([ 0=>'#b9c3cd', 1=>'#59a9f8', 2=>'#21b978', 3=>'#dda451', 4=>'#ea5455', ]); }); $grid->column('order.status','订单状态') ->using(TotalOrder::STATUS) ->dot([ 0 => '#b9c3cd', 1 => '#59a9f8', 2 => '#21b978', 7 => '#dda451', 8 => '#ea5455', ]); $grid->column('发货物流')->display(function (){ if(!$this->logistics || !$this->logistics_code){ return ''; } return $this->logistics_code . "[$this->logistics]"; }); $grid->column('退货物流')->display(function (){ if(!$this->refund_logistics || !$this->refund_logistics_code){ return ''; } return $this->refund_logistics_code . "[$this->refund_logistics]"; }); $grid->column('退款申请信息') ->if(function ($column){ return $this->status == 3; })->display('点击查看')->modal(function ($modal){ //设置弹窗标题 $modal->title('退款申请信息'); $userRefund = UserRefund::where(['order_id'=>$this->order->id,'son_order_id'=>$this->id])->first(); $phone = $userRefund->phone ??''; $content = '<p>原因 :'. $this->order->refund_reason .'</p><br/><p>电话 :'.$phone.'</p>'; if($this->voucher){ $voucher = json_decode($this->voucher); $content .= '<br/><p>凭证图片:</p>'; foreach ($voucher as $item){ $content .= '<br/><img src="'.env("IMAGE_URL").$item.'">'; } } $card = new Card(null, $content); return "<div style='padding:10px 10px 0'>$card</div>"; })->else(function ($column){ return ''; }); $grid->column('created_at'); $grid->simplePaginate(); $grid->disableActions(); $grid->disableCreateButton(); $grid->disableBatchActions(); $grid->simplePaginate(); $grid->disableFilterButton(); $grid->quickSearch('store_goods.title')->placeholder('搜索商品'); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new StoreOrder(), function (Show $show) { $show->field('id'); $show->field('order_id'); $show->field('goods_id'); $show->field('num'); $show->field('address_id'); $show->field('status'); $show->field('over_time'); $show->field('voucher'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new StoreOrder(), function (Form $form) { $form->display('id'); $form->text('order_id'); $form->text('goods_id'); $form->text('num'); $form->text('address_id'); $form->text('status'); $form->text('over_time'); $form->text('voucher'); $form->display('created_at'); $form->display('updated_at'); }); } }