<?php namespace App\Admin\Controllers; use App\Admin\Actions\OrderAuditAction; use App\Admin\Actions\OrderCancelAction; use App\Admin\Actions\OrderEditSatusAction; use App\Admin\Actions\OrderReverseAuditAction; use App\Admin\Pages\OrderDetailPage; use App\Models\Cms\CmsUser; use App\Models\Order; use App\Models\OrderPrice; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Content; use Dcat\Admin\Widgets\Box; use Dcat\Admin\Widgets\Dropdown; use Illuminate\Support\Arr; class OrderController extends AdminController { /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content) { return $content ->translation($this->translation()) ->title($this->title()) ->description($this->description()['index'] ?? trans('admin.list')) ->body($this->grid()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new Order(), function (Grid $grid) { $grid->model()->with("scmUser")->orderBy('order_id', 'desc'); $grid->fixColumns(1,2);//固定列 // $grid->showColumnSelector();//开启字段选择器功能 // 在 display 回调中使用 $grid->column('序号')->display(function () { return $this->_index + 1; }); $grid->column('order_id',"ID"); $grid->column('order_sn')->width('120px')->display(function () { return '<a target="_blank" iframe-extends=true iframe-tab=true href="/admin/order/page?order_id='.$this->order_id.'" >'.$this->order_sn.'</a>'; }); $grid->column('status')->using(admin_trans('order.options.status'))->sortable(); $grid->column('company_name')->display(function ($company_name) { return $company_name ? $company_name : "-"; }); $grid->column('scmUser.user_sn',admin_trans('scm-user.options.user_sn'))->link(function () { return admin_url('smc_user/'.$this->user_id); }); $grid->column('scmUser.name',admin_trans('scm-user.options.name')); $grid->column('order_amount')->help('订单详情里-结算信息的“运费”“支付手续费”“其他费用”为空时;应付金额一栏为“待确认”'); $grid->column('order_pay_type')->using(admin_trans('order.options.order_pay_type'))->sortable(); $grid->column('fukuanfangshi',"付款方式")->display(function () { return "---不知道--"; }); $grid->column('sale_name'); $grid->column('order_remark')->limit(10); $grid->column('update_time')->sortable()->display(function ($update_time) { return intval($update_time) > 0 ? date("Y-m-d H:i:s",intval($update_time)) : "-"; }); $grid->column('create_time')->sortable()->display(function ($create_time) { return intval($create_time) > 0 ? date("Y-m-d H:i:s",intval($create_time)) : "-"; }); $grid->showFilter(); $grid->filter(function (Grid\Filter $filter) { $filter->expand(true); $filter->whereBetween('create_time', function ($q) { $start = strtotime($this->input['start'] ?? null); $end = strtotime($this->input['end'] ?? null); $q->whereBetween('create_time', [$start, $end]); })->datetime()->width(3); $filter->whereBetween('update_time', function ($q) { $start = strtotime($this->input['start'] ?? null); $end = strtotime($this->input['end'] ?? null); $q->whereBetween('update_time', [$start, $end]); })->datetime()->width(3); $filter->startWith('company_name')->width(3); $filter->startWith('scmUser.user_sn',admin_trans('scm-user.fields.user_sn'))->width(3); $filter->equal('status')->select([ "1"=>"待审核","2"=>"待付款","4"=>"待发货","8"=>"待收货","10"=>"交易成功","-1"=>"已取消" ])->width(3); $filter->equal('sales_id',trans('inquiry.fields.sales_name'))->select(CmsUser::pluck('name', 'userId')->where("status",0)->toArray())->width(3); }); $grid->tools([ new OrderAuditAction(), new OrderReverseAuditAction(), new OrderEditSatusAction(), ]); $grid->setActionClass(Grid\Displayers\Actions::class); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); $actions->disableEdit(); $actions->disableQuickEdit(); $actions->disableView(); // 当前行的数据数组 $rowArray = $actions->row->toArray(); // 获取当前行主键值 $id = $actions->getKey(); //取消按钮 if(in_array($rowArray["status"],[1,2])){ $actions->append(new OrderCancelAction()); } //下载 if($rowArray["status"] >= 2){ $options = [ 'PI', ]; if($rowArray["status"] > 2){ array_push($options,"CI","PL"); } $actions->prepend( \App\Admin\Controllers\OrderController::down($id,$options) ); } }); }); } public static function down($id,$optoins=[]){ $menu1 = Dropdown::make() ->button('下载') ->buttonClass('btn btn-primary btn-sm btn-mini') // 设置按钮样式 ->options($optoins)->map(function ($v, $k) use($id) { $k++; return "<a style='min-width: 5rem' class='test_item' data-orderid='$id' data-id='$k', data-value='{$v}' data-test='Hello world.' href='javascript:void(0)'>$v</a>"; }); \Dcat\Admin\Admin::style( <<<style .dropdown .dropdown-menu {min-width: 5rem;} style ); \Dcat\Admin\Admin::script( <<<JS $('.test_item').click(function () { console.log($(this).data().id); window.location.href="/admin/api/order_download?type="+$(this).data().id+"&order_id="+$(this).data().orderid }); JS ); return $menu1; } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Order(), function (Show $show) { $show->field('order_id'); $show->field('order_sn'); $show->field('order_remark'); $show->field('company_name'); $show->field('order_type'); $show->field('order_source'); $show->field('order_pay_type'); $show->field('user_id'); $show->field('order_amount'); $show->field('advance_amount'); $show->field('currency'); $show->field('create_time'); $show->field('sale_id'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Order(), function (Form $form) { $form->display('order_id'); $form->text('order_sn'); $form->text('order_remark'); $form->text('company_name'); $form->text('order_type'); $form->text('order_source'); $form->text('order_pay_type'); $form->text('user_id'); $form->text('order_amount'); $form->text('advance_amount'); $form->text('currency'); $form->text('create_time'); $form->text('sale_id'); }); } public function page(Content $content){ $params = request()->all(); $order_id = arrayGet($params,"order_id",0,"intval"); $orderInfo = Order::getOneAndRelationList($order_id); $orderItems = $orderInfo["order_items"]??[]; $info=[]; // $info["orderInfo"] = $orderInfo; //基本信息 $info["baseInfo"]["order_sn"] = $orderInfo["order_sn"]; $info["baseInfo"]["status"] = $orderInfo["status"]; $info["baseInfo"]["status_cn"] = Arr::get(array_flip(Order::$STATUS_FORAMT),$orderInfo["status"],""); $info["baseInfo"]["company_name"] = $orderInfo["company_name"]; $info["baseInfo"]["user_sn"] = $orderInfo["scm_user"]["user_sn"]??""; $info["baseInfo"]["name"] = $orderInfo["scm_user"]["name"]??""; $info["receiveInfo"] = [];//收货信息 $info["billingInfo"] = [];//账单信息 $addressList = $orderInfo["order_address"]??[]; foreach($addressList as $addressItem){ if($addressItem["order_address_type"] == "1"){ $info["receiveInfo"] = $addressItem; }elseif($addressItem["order_address_type"] == "2"){ $info["billingInfo"] = $addressItem; } } $orderInfo["orderItemList"] = $orderItems; foreach($orderInfo["orderItemList"] as $k=>$item){ $orderInfo["orderItemList"][$k]["goods_price_format"] = decimal_number_format_usd($item["goods_price"]); $orderInfo["orderItemList"][$k]["total_amount"] = decimal_number_format($item["goods_price"]*$item["goods_number"]); $orderInfo["orderItemList"][$k]["total_amount_format"] = decimal_number_format_usd($item["goods_price"]*$item["goods_number"]); } //结算信息 $info["settlementInfo"]=[]; $orderPrice = $orderInfo["order_price"]??[]; $info["settlementInfo"]["order_amount"] = $orderInfo["order_amount"]; $info["settlementInfo"]["order_amount_format"] = decimal_number_format_usd($orderInfo["order_amount"]); $info["settlementInfo"]["order_freight_amount"] = 0;//运费 $info["settlementInfo"]["order_freight_amount_format"] = ""; $info["settlementInfo"]["order_pay_commission_amount"] = 0;//手续费 $info["settlementInfo"]["order_pay_commission_amount_format"] = ""; // $orderItemsId = Arr::pluck($orderItems,"rec_id"); foreach($orderPrice as $orderPriceItem){ switch ($orderPriceItem["price_type"]){ case OrderPrice::$PRICE_TYPE_LIST["运费"]: $info["settlementInfo"]["order_freight_amount"] = $orderPriceItem["price"]; $info["settlementInfo"]["order_freight_amount_format"] = decimal_number_format_usd($orderPriceItem["price"]); case OrderPrice::$PRICE_TYPE_LIST["支付手续费"]: $info["settlementInfo"]["order_pay_commission_amount"] = $orderPriceItem["price"]; $info["settlementInfo"]["order_pay_commission_amount_format"] = decimal_number_format_usd($orderPriceItem["price"]); } } $info["settlementInfo"]["order_total_amount"] = $info["settlementInfo"]["order_amount"] + $info["settlementInfo"]["order_freight_amount"]+$info["settlementInfo"]["order_pay_commission_amount"]; $info["settlementInfo"]["order_total_amount_format"] = decimal_number_format_usd($info["settlementInfo"]["order_total_amount"]); dump($info); return view('admin.pages.order-page',["info"=>$info]); } }