From b2ee0f32441ceb1644790cb49aff823fd017f292 Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Sat, 19 Nov 2022 11:06:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/WorkOrderController.php | 5 +- app/Jobs/Module/WorkOrder/WorkOrder.php | 12 +++- app/Models/WorkOrder/WorkOrder.php | 12 +++- .../views/admin/work-orders/edit.blade.php | 57 ++++++++++--------- 4 files changed, 55 insertions(+), 31 deletions(-) diff --git a/app/Http/Controllers/Admin/WorkOrderController.php b/app/Http/Controllers/Admin/WorkOrderController.php index 2c3912c..c870374 100644 --- a/app/Http/Controllers/Admin/WorkOrderController.php +++ b/app/Http/Controllers/Admin/WorkOrderController.php @@ -102,8 +102,11 @@ public function update(Request $request, WorkOrder $workOrder): RedirectResponse * @param \App\Models\WorkOrder\WorkOrder $workOrder * @return Response */ - public function destroy(WorkOrder $workOrder) + public function destroy(WorkOrder $workOrder): RedirectResponse { // + $workOrder->safeDelete(); + + return redirect()->route('admin.work-orders.index')->with('success', '正在排队删除工单。'); } } diff --git a/app/Jobs/Module/WorkOrder/WorkOrder.php b/app/Jobs/Module/WorkOrder/WorkOrder.php index eab0de3..30356b8 100644 --- a/app/Jobs/Module/WorkOrder/WorkOrder.php +++ b/app/Jobs/Module/WorkOrder/WorkOrder.php @@ -42,6 +42,12 @@ public function handle() $http = Http::module($this->workOrder->module->api_token, $this->workOrder->module->url); if ($this->type == 'put') { $response = $http->put('work-orders/' . $this->workOrder->id, $this->workOrder->toArray()); + } else if ($this->type == 'delete') { + $response = $http->delete('work-orders/' . $this->workOrder->id); + + if ($response->successful()) { + $this->workOrder->delete(); + } } else { $response = $http->post('work-orders', $this->workOrder->toArray()); } @@ -51,7 +57,11 @@ public function handle() 'status' => 'error' ]); } else { - broadcast(new UserEvent($this->workOrder->user_id, 'work-order.updated', $this->workOrder)); + if ($this->type == 'delete') { + broadcast(new UserEvent($this->workOrder->user_id, 'work-order.deleted', $this->workOrder)); + } else { + broadcast(new UserEvent($this->workOrder->user_id, 'work-order.updated', $this->workOrder)); + } } } diff --git a/app/Models/WorkOrder/WorkOrder.php b/app/Models/WorkOrder/WorkOrder.php index f4f0dc4..258a8b7 100644 --- a/app/Models/WorkOrder/WorkOrder.php +++ b/app/Models/WorkOrder/WorkOrder.php @@ -9,6 +9,7 @@ use GeneaLabs\LaravelModelCaching\Traits\Cachable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use App\Jobs\Module\WorkOrder\WorkOrder as WorkOrderJob; class WorkOrder extends Model { @@ -25,7 +26,16 @@ class WorkOrder extends Model 'status', ]; - // user + public function safeDelete(): bool + { + if ($this->status == 'pending') { + throw new CommonException('工单状态是 pending,无法删除'); + } + + dispatch(new WorkOrderJob($this, 'delete')); + + return true; + } protected static function boot() { diff --git a/resources/views/admin/work-orders/edit.blade.php b/resources/views/admin/work-orders/edit.blade.php index 2f76ec1..3d4a742 100644 --- a/resources/views/admin/work-orders/edit.blade.php +++ b/resources/views/admin/work-orders/edit.blade.php @@ -9,39 +9,40 @@ 查看工单 -
- @csrf - @method('PUT') + @if ($workOrder->status !== 'pending') + + @csrf + @method('PATCH') -
- - -
+ {{-- 修改状态 --}} +
+ + - - - - + + - - + + +
- - - + - +
- +
+
+ @csrf + @method('DELETE') + +
+ @else +

工单状态为 推送中,无法修改

+ @endif -{{--
--}} -{{--
--}} -{{-- @csrf--}} -{{-- @method('DELETE')--}} -{{-- --}} -{{--
--}} @endsection