column('id')->sortable(); $grid->column('sn'); $grid->column('user.phone'); $grid->column('total_amount')->display(function ($value) { return bcdiv($value, 100, 2); })->prepend('¥'); $grid->column('order_status')->display(function ($value) { return $this->order_status; })->using([ 0=>'待付款', 1=>'待发货', 2=>'发货中', 3=>'已发货', 9=>'已完成', 10=>'已取消', ])->dot([ 0=>'primary', 1=>'warning', 2=>'danger', 3=>'success', 9=>'success', 10=>'#b3b9bf', ]); $grid->column('pay_way'); $grid->column('pay_at'); // $grid->column('consignee_name'); // $grid->column('consignee_telephone'); // $grid->column('consignee_zone'); // $grid->column('consignee_address'); // $grid->column('status')->using([ // 0=>'待支付', // 1=>'待收货', // 9=>'已完成', // 10=>'已取消', // ])->dot([ // 0=>'primary', // 1=>'danger', // 9=>'success', // 10=>'#b3b9bf', // ]); // $grid->column('shipping_state')->display(function ($v) { // if ($this->status <1) { // return -1; // } // return $v; // })->using([ // -1=> '-', // 0 => '待发货', // 1 => '发货中', // 2 => '已完成', // ])->dot([ // 0 => 'primary', // 1 => 'danger', // 2 => 'success', // ]); // $grid->column('completed_at'); $grid->column('created_at')->sortable(); $grid->model()->orderBy('created_at', 'desc'); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableView(false); // $actions->append(new CreateOrderPackage()); }); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return function (Row $row) use ($id) { $row->column(5, function ($column) use ($id) { $builder = Order::with(['user', 'userCoupon']); $column->row(Show::make($id, $builder, function (Show $show) { // $show->field('id'); $show->field('sn'); $show->field('order_status')->as(function ($v) { return $this->order_status; })->using([ 0=>'待付款', 1=>'待发货', 2=>'发货中', 3=>'已发货', 9=>'已完成', 10=>'已取消', ])->dot([ 0=>'primary', 1=>'warning', 2=>'danger', 3=>'success', 9=>'success', 10=>'#b3b9bf', ]); $show->field('total_amount')->as(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); $show->field('created_at'); $show->field('pay_way'); $show->field('pay_at'); $show->divider(); $show->field('consignee_name'); $show->field('consignee_telephone'); $show->field('consignee')->as(function () { return $this->consignee_zone . ' '. $this->consignee_address; }); // $show->field('user.phone'); $show->divider(); $show->field('products_total_amount')->as(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); $show->field('vip_discount_amount')->as(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); $show->field('userCoupon.coupon_name')->label(); $show->field('coupon_discount_amount')->as(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); $show->field('reduced_amount')->as(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); $show->field('shipping_fee')->as(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); $show->divider(); $show->field('note'); $show->field('remark'); $show->panel() ->tools(function (Show\Tools $tools) use ($show) { $tools->disableEdit(); $tools->disableDelete(); if ($show->model()->status == OrderModel::STATUS_PENDING) { if (Admin::user()->can('dcat.admin.orders.reduce')) { $tools->append(new OrderReduce()); } if (Admin::user()->can('dcat.admin.orders.pay')) { $tools->append(new OrderPay()); } } $tools->append(new OrderRemark()); $tools->append(new OrderConsigneeInfo()); }); })); }); $row->column(7, function ($column) use ($id) { $builder = OrderProduct::where('order_id', $id); $productGrid = Grid::make($builder, function (Grid $grid) { $grid->column('name'); $grid->column('cover')->image(50, 50); $grid->column('sell_price')->display(function ($value) { return bcdiv($value, 100, 2); })->prepend('¥'); $grid->column('quantity'); $grid->column('remain_quantity'); $grid->column('product_total_amount')->display(function () { return bcdiv($this->sell_price * $this->quantity, 100, 2); })->prepend('¥'); $grid->column('after_sale_state')->using([ 0=>'正常', 1=>'售后中', 2=>'售后完成', ])->dot([ 0=>'success', 1=>'danger', 2=>'primary', ]); $grid->disableActions(); $grid->disablePagination(); $grid->disableRefreshButton(); }); $packageBuilder = OrderPackage::with('packageProducts')->where('order_id', $id); $packageGrid = Grid::make($packageBuilder, function (Grid $grid) { $grid->column('shipping_company', '物流公司'); $grid->column('shipping_number', '物流单号'); $grid->column('packageProducts', '包裹商品')->display('包裹商品')->modal(function ($modal) { $modal->title('商品'); return PackageProductSimpleTable::make(['id'=>$this->id]); })->setHeaderAttributes(['style' => 'color:#5b69bc']); $grid->column('created_at', '发货时间'); $grid->column('status', '包裹状态'); $grid->column('is_failed', '作废')->bool(); $grid->model()->orderBy('created_at', 'desc'); $grid->disableActions(); $grid->disablePagination(); $grid->disableRefreshButton(); }); $logBuilder = OrderLog::with('administrator')->where('order_id', $id); $orderLogoGrid = Grid::make($logBuilder, function (Grid $grid) { $grid->column('administrator.name', '操作人'); $grid->column('content', '操作明细')->display(function ($content) { return $content; }); $grid->column('created_at', '操作时间'); $grid->model()->orderBy('created_at', 'desc'); $grid->disableActions(); $grid->disablePagination(); $grid->disableRefreshButton(); }); $column->row(Box::make('订单商品', $productGrid)); $packagesBox = Box::make('发货包裹', $packageGrid); //显示发货动作 $order = OrderModel::findOrFail($id); if ($order->isPaid() || $order->isShipping()) { $packagesBox->tool(new OrderCreatePackage(null, $id)); } $column->row($packagesBox->collapsable()); $logsBox = Box::make('操作记录', $orderLogoGrid); $column->row($logsBox->collapsable()); }); }; } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Order(), function (Form $form) { $form->display('id'); $form->text('user_id'); $form->text('sn'); $form->text('user_coupon_id'); $form->text('coupon_discount_amount'); $form->text('vip_discount_amount'); $form->text('reduced_amount'); $form->text('shipping_fee'); $form->text('products_total_amount'); $form->text('total_amount'); $form->text('weight'); $form->text('note'); $form->text('remark'); $form->text('pay_sn'); $form->text('pay_way'); $form->text('pay_at'); $form->text('consignee_name'); $form->text('consignee_telephone'); $form->text('consignee_zone'); $form->text('consignee_address'); $form->text('status'); $form->text('completed_at'); $form->display('created_at'); $form->display('updated_at'); }); } public function orders(Request $request) { $sn = $request->input('q'); $query = OrderModel::select('id', 'sn as text'); if ($sn) { $query->where('sn', 'like', "%$sn%"); return $query->paginate(null); } return response()->json($query->get()); } public function orderProducts(Request $request) { $orderId = $request->input('q'); $query = OrderProduct::select('id', 'name as text'); if ($orderId) { $query->where('order_id', $orderId); } return response()->json($query->get()); } }