增加 工单删除功能

This commit is contained in:
iVampireSP.com 2022-11-19 11:06:02 +08:00
parent e9eef76ed1
commit b2ee0f3244
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
4 changed files with 55 additions and 31 deletions

View File

@ -102,8 +102,11 @@ public function update(Request $request, WorkOrder $workOrder): RedirectResponse
* @param \App\Models\WorkOrder\WorkOrder $workOrder * @param \App\Models\WorkOrder\WorkOrder $workOrder
* @return Response * @return Response
*/ */
public function destroy(WorkOrder $workOrder) public function destroy(WorkOrder $workOrder): RedirectResponse
{ {
// //
$workOrder->safeDelete();
return redirect()->route('admin.work-orders.index')->with('success', '正在排队删除工单。');
} }
} }

View File

@ -42,6 +42,12 @@ public function handle()
$http = Http::module($this->workOrder->module->api_token, $this->workOrder->module->url); $http = Http::module($this->workOrder->module->api_token, $this->workOrder->module->url);
if ($this->type == 'put') { if ($this->type == 'put') {
$response = $http->put('work-orders/' . $this->workOrder->id, $this->workOrder->toArray()); $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 { } else {
$response = $http->post('work-orders', $this->workOrder->toArray()); $response = $http->post('work-orders', $this->workOrder->toArray());
} }
@ -50,9 +56,13 @@ public function handle()
$this->workOrder->update([ $this->workOrder->update([
'status' => 'error' 'status' => 'error'
]); ]);
} else {
if ($this->type == 'delete') {
broadcast(new UserEvent($this->workOrder->user_id, 'work-order.deleted', $this->workOrder));
} else { } else {
broadcast(new UserEvent($this->workOrder->user_id, 'work-order.updated', $this->workOrder)); broadcast(new UserEvent($this->workOrder->user_id, 'work-order.updated', $this->workOrder));
} }
}
} }
} }

View File

@ -9,6 +9,7 @@
use GeneaLabs\LaravelModelCaching\Traits\Cachable; use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use App\Jobs\Module\WorkOrder\WorkOrder as WorkOrderJob;
class WorkOrder extends Model class WorkOrder extends Model
{ {
@ -25,7 +26,16 @@ class WorkOrder extends Model
'status', '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() protected static function boot()
{ {

View File

@ -9,14 +9,10 @@
<a href="{{ route('admin.work-orders.show', $workOrder) }}">查看工单</a> <a href="{{ route('admin.work-orders.show', $workOrder) }}">查看工单</a>
@if ($workOrder->status !== 'pending')
<form method="post" action="{{ route('admin.work-orders.update', $workOrder) }}"> <form method="post" action="{{ route('admin.work-orders.update', $workOrder) }}">
@csrf @csrf
@method('PUT') @method('PATCH')
<div class="form-group">
<label for="title" class="col-sm-2 col-form-label">标题</label>
<input type="text" class="form-control" id="title" name="title" value="{{ $workOrder->title }}">
</div>
{{-- 修改状态 --}} {{-- 修改状态 --}}
<div class="form-group"> <div class="form-group">
@ -25,7 +21,8 @@
<option value="open" {{ $workOrder->status == 'open' ? 'selected' : '' }}>已开启</option> <option value="open" {{ $workOrder->status == 'open' ? 'selected' : '' }}>已开启</option>
<option value="closed" {{ $workOrder->status == 'closed' ? 'selected' : '' }}>关闭</option> <option value="closed" {{ $workOrder->status == 'closed' ? 'selected' : '' }}>关闭</option>
<option value="user_read" {{ $workOrder->status == 'user_read' ? 'selected' : '' }}>用户已读</option> <option value="user_read" {{ $workOrder->status == 'user_read' ? 'selected' : '' }}>用户已读</option>
<option value="user_replied" {{ $workOrder->status == 'user_replied' ? 'selected' : '' }}>用户已回复</option> <option value="user_replied" {{ $workOrder->status == 'user_replied' ? 'selected' : '' }}>用户已回复
</option>
<option value="replied" {{ $workOrder->status == 'replied' ? 'selected' : '' }}>已回复</option> <option value="replied" {{ $workOrder->status == 'replied' ? 'selected' : '' }}>已回复</option>
<option value="read" {{ $workOrder->status == 'read' ? 'selected' : '' }}>已读</option> <option value="read" {{ $workOrder->status == 'read' ? 'selected' : '' }}>已读</option>
@ -38,10 +35,14 @@
</form> </form>
{{-- <hr />--}} <hr/>
{{-- <form method="post" action="{{ route('admin.work-orders.destroy', $workOrder) }}">--}} <form method="post" action="{{ route('admin.work-orders.destroy', $workOrder) }}">
{{-- @csrf--}} @csrf
{{-- @method('DELETE')--}} @method('DELETE')
{{-- <button type="submit" class="btn btn-danger mt-3">删除</button>--}} <button type="submit" class="btn btn-danger mt-3">删除</button>
{{-- </form>--}} </form>
@else
<p>工单状态为 推送中,无法修改</p>
@endif
@endsection @endsection