model()->with([ 'customer:id,name,nickname,phone', 'order:order_sn,created_at', 'creator:id,name,username', 'updater:id,name,username', ])->orderBy('id', 'desc'); $grid->column('order_sn', '订单号'); $grid->column('customer.name', '发单人名称'); $grid->column('fake_count', '膨胀人数'); $grid->column('order.created_at', '订单创建时间'); $grid->column('created_at', '创建时间'); $grid->column('creator.name', '创建人')->display(function () { if (!$this->creator) { return '-'; } return $this->creator->name ?: $this->creator->username; }); $grid->column('updater.name', '更新人')->display(function () { if (!$this->updater) { return '-'; } return $this->updater->name ?: $this->updater->username; }); $grid->filter(function ($filter) { $filter->panel(); $filter->like('order_sn', '订单号'); $filter->where('customer_name', function ($query) { $query->whereHas('customer', function ($q) { $q->where('name', 'like', "%{$this->input}%"); }); }, '发单人名称'); }); $grid->disableViewButton(); $grid->scrollbarX(); }); } protected function form() { return Form::make(new OrderFake(), function (Form $form) { $isEditing = (bool) $form->model()->id; $form->ignore(['_order_created_at', '_customer_name', '_customer_nickname', '_customer_phone']); if ($isEditing) { $order = Order::with('customer:id,name,nickname,phone')->sn($form->model()->order_sn)->first(); $form->display('order_sn', '订单号'); $form->text('_order_created_at', '订单创建时间') ->readonly() ->default($order ? $order->created_at : ''); $form->text('_customer_name', '订单发单人名称') ->readonly() ->default($order && $order->customer ? $order->customer->name : ''); $form->text('_customer_nickname', '订单发单人昵称') ->readonly() ->default($order && $order->customer ? $order->customer->nickname : ''); $form->text('_customer_phone', '订单发单人手机号') ->readonly() ->default($order && $order->customer ? $order->customer->phone : ''); } else { $lookupUrl = admin_url('order_fake/lookup'); $orderSnField = $form->text('order_sn', '订单号')->required(); $createdAtField = $form->text('_order_created_at', '订单创建时间')->readonly(); $nameField = $form->text('_customer_name', '订单发单人名称')->readonly(); $nicknameField = $form->text('_customer_nickname', '订单发单人昵称')->readonly(); $phoneField = $form->text('_customer_phone', '订单发单人手机号')->readonly(); $customerIdField = $form->hidden('customer_id'); $orderSnField->script(<<getElementClassSelector()}', function (\$self) { var lookupUrl = '{$lookupUrl}'; var \$createdAt = $('{$createdAtField->getElementClassSelector()}'); var \$customerName = $('{$nameField->getElementClassSelector()}'); var \$customerNickname = $('{$nicknameField->getElementClassSelector()}'); var \$customerPhone = $('{$phoneField->getElementClassSelector()}'); var \$customerId = $('{$customerIdField->getElementClassSelector()}'); function clearOrderInfo() { \$createdAt.val(''); \$customerName.val(''); \$customerNickname.val(''); \$customerPhone.val(''); \$customerId.val(''); } \$self.off('blur.orderFakeLookup').on('blur.orderFakeLookup', function () { var orderSn = \$.trim(\$self.val()); if (!orderSn) { clearOrderInfo(); return; } \$.ajax({ url: lookupUrl, type: 'GET', data: {order_sn: orderSn}, dataType: 'json', success: function (res) { if (res.code === 200) { \$createdAt.val(res.data.order_created_at || ''); \$customerName.val(res.data.customer_name || ''); \$customerNickname.val(res.data.customer_nickname || ''); \$customerPhone.val(res.data.customer_phone || ''); \$customerId.val(res.data.customer_id || ''); } else { clearOrderInfo(); Dcat.error(res.message || '订单查询失败'); } }, error: function () { clearOrderInfo(); Dcat.error('订单查询失败'); } }); }); }); JS ); } $form->number('fake_count', '膨胀人数')->required()->min(1)->default(1); $form->hidden('created_by'); $form->hidden('updated_by'); $form->saving(function (Form $form) use ($isEditing) { if ($form->fake_count < 1) { return $form->response()->error('膨胀人数必须大于0'); } $orderSn = $isEditing ? $form->model()->order_sn : $form->order_sn; $order = Order::with('customer:id,name,nickname,phone')->sn($orderSn)->first(); if (!$order) { return $form->response()->error('订单不存在'); } $exists = OrderFake::where('order_sn', $orderSn) ->where('id', '!=', $form->model()->id ?? 0) ->exists(); if ($exists) { return $form->response()->error('该订单已添加膨胀记录'); } $form->customer_id = $order->customer_id; $form->updated_by = Admin::user()->id; if (!$isEditing) { $form->created_by = Admin::user()->id; } }); $form->footer(function ($footer) { $footer->disableViewCheck(); $footer->disableEditingCheck(); }); }); } public function lookupOrder(Request $request) { $orderSn = trim($request->get('order_sn', '')); if (!$orderSn) { return response()->json($this->jsonFail('请输入订单号')); } $order = Order::with('customer:id,name,nickname,phone')->sn($orderSn)->first(); if (!$order) { return response()->json($this->jsonFail('订单不存在')); } return response()->json($this->jsonSuccess([ 'customer_id' => $order->customer_id, 'order_created_at' => $order->created_at, 'customer_name' => $order->customer->name ?? '', 'customer_nickname' => $order->customer->nickname ?? '', 'customer_phone' => $order->customer->phone ?? '', ])); } }