<?php namespace App\Admin\Controllers; use App\Admin\Renderable\OrderGoodsList; use App\Models\OrderGoods; use App\Models\OrderInfo; use App\Models\City; use App\Models\Store; use App\Models\SystemCity; use App\Models\UserAddress; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Widgets\Card; use Dcat\Admin\Http\Controllers\AdminController; use App\Admin\Forms\VerifierCodeForm; use App\Admin\Forms\ShippingForm; use Dcat\Admin\Admin; class OrderInfoController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(OrderInfo::with(['user', 'merchant']), function (Grid $grid) { $grid->model()->orderBy('id', 'DESC'); $grid->column('id')->sortable(); $grid->column('order_sn', '订单号')->width(80); $grid->column('mobile', '手机号'); $grid->column('goods', '商品信息')->expand(function (Grid\Displayers\Expand $expand) { $expand->button('查看'); return OrderGoodsList::make(['order_id' => $this->id]); }); $grid->column('goods_amount', '订单总金额'); // $grid->column('merchant.name', '所属商家'); // $grid->column('merchant.province_id', '所在省市')->display(function ($val) { // if ($val) { // $proObj = City::where("city_id", $val)->first(); // $cityObj = City::where("city_id", $this->merchant->city_id)->first(); // $proname = $proObj->name ?? ''; // $cityname = $cityObj->name ?? ''; // return $proname . " " . $cityname; // } else { // return ''; // } // }); $grid->column('merchant.province_id', '商家信息')->display('点击查看')->modal(function ($modal) { //设置弹窗标题 $modal->title('商家信息'); $company = $this->merchant->name ?? ''; $content = $company . "<br/>"; $province_id = $this->merchant->province_id ?? ''; if ($province_id) { $proObj = City::where("city_id", $province_id)->first(); $cityObj = City::where("city_id", $this->merchant->city_id)->first(); $proname = $proObj->name ?? ''; $cityname = $cityObj->name ?? ''; $content .= $proname . " " . $cityname; } $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; }); $grid->column('store_id', '快递代收点')->display(function ($val) { $res = null; if ($val) { $obj = Store::where('id', $val)->first(); $res = $obj->address; } return $res; })->limit(10); // $grid->column('store_id', '快递代收点222')->if(function ($column) { // $val = $column->getValue(); // return $val ? $val : ''; // })->display('点击查看')->modal(function ($modal) { // //设置弹窗标题 // $modal->title('详情'); // $res = null; // if ($this->store_id) { // $obj = Store::where('id', $this->store_id)->first(); // $res = $obj->address; // } // $card = new Card(null, $res); // return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; // })->else(function ($column) { // return ''; // }); $grid->column('address_id', '送货上门')->display(function ($val) { $res = ''; if ($this->area) { $res = $this->area . "(" . $this->address . ")"; } return $res; })->limit(10); $grid->column('created_at', '下单时间'); $grid->column('order_status', '状态')->display(function ($val) { $options = OrderInfo::STATUS_OPTIONS; return $options[$val]; })->if(function ($column) { return $column->getValue() == 1; })->display('点击生成核销码')->modal(function (Grid\Displayers\Modal $modal) { // 标题 $modal->title('生成核销码'); // 自定义图标 $modal->icon('feather icon-edit'); // 传递当前行字段值 return VerifierCodeForm::make()->payload(['id' => $this->id]); }); //下单送货上门、门店自提均需要核销码用户确认,无需后台接入发货管理(放在核销员端) // ->if(function ($column) { // return ($column->getValue() == 3 && $this->shipping_type == 0); // })->display('点击发货')->modal(function (Grid\Displayers\Modal $modal) { // // 标题 // $modal->title('发货'); // // 自定义图标 // $modal->icon('feather icon-edit'); // // 传递当前行字段值 // return ShippingForm::make()->payload(['id' => $this->id]); // }) $grid->column('verification_code', '核销码')->limit(10); $grid->column('verifier', '核销信息')->if(function ($column) { return $column->getValue(); })->display('点击查看')->modal(function ($modal) { //设置弹窗标题 $modal->title('核销信息'); $content = ""; if ($this->verifier) { $content .= "核销员:" . $this->verifier . "<br/>"; } if ($this->verification_at) { $content .= "核销时间:" . $this->verification_at . "<br/>"; } $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; })->else(function ($column) { return ''; }); //$grid->column('updated_at')->sortable(); //$grid->disableActions(); $grid->disableCreateButton(); $grid->disableViewButton(); $grid->filter(function (Grid\Filter $filter) { // 更改为 panel 布局 $filter->panel(); $filter->equal('order_sn', '订单号')->width(3); $filter->like('mobile', '手机号')->width(3); $filter->like('merchant.name', '所属商家')->width(3); //订单状态 $filter->equal('order_status', '订单状态')->select(OrderInfo::STATUS_OPTIONS)->width(3); $filter->equal('merchant.province_id', '省份')->select(City::where('parent_id', 0)->get()->pluck('name', 'city_id'))->load('merchant.city_id', '/city')->width(3); // 城市 $filter->equal('merchant.city_id', '城市')->select()->width(3); $filter->between('created_at', '创建时间')->datetime()->width(4); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new OrderInfo(), function (Show $show) { $show->field('id'); $show->field('order_sn', '订单号'); $show->field('verification_code', '核销码'); // $show->field('order_status')->display(function ($val) { // $options = OrderInfo::STATUS_OPTIONS; // return $options[$val]; // }); $show->field('created_at', '下单时间'); //$show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new OrderInfo(), function (Form $form) { //$form->display('id'); $form->display('order_sn', '订单号'); $infoObj = $form->model(); // 获取当前数据 //$form->text('remark', '备注(后台用)'); //订单状态 -1:全部 0:待付款 1:待到货 2:待领取 3: 待评价 4:已完成 7:已取消 8:已退款 if ($form->model()->order_status == 2) { $options = [ 3 => '待评价' ]; $form->select('order_status', '订单状态')->options($options); } // $options = [ // 1 => '选项1', // 2 => '选项2', // 'value2' => ['text' => '选项二', 'disabled' => true], // 这个选项是只读的 // ]; // 禁用选项2 //$options[2] = ['text' => '选项2', 'disable' => true]; // $form->switch('pay_status')->default(0); // $form->switch('shipping_status', '发货状态')->default(0); // $form->text('order_amount', '订单应付款'); // $form->display('created_at'); // $form->display('updated_at'); $form->disableEditingCheck(); $form->disableViewCheck(); $form->disableDeleteButton(); $form->disableViewButton(); }); } }