增加 工单删除功能

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());
} }
@ -51,7 +57,11 @@ public function handle()
'status' => 'error' 'status' => 'error'
]); ]);
} else { } 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));
}
} }
} }

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