增加 后台回复工单

This commit is contained in:
iVampireSP.com 2022-12-09 16:14:37 +08:00
parent 0d9679aa69
commit d8f05f4d63
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
5 changed files with 37 additions and 7 deletions

View File

@ -6,6 +6,8 @@
use App\Models\Host;
use App\Models\Module;
use App\Models\ModuleAllow;
use App\Models\WorkOrder\Reply;
use App\Models\WorkOrder\WorkOrder;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
@ -88,7 +90,7 @@ public function show(Module $module): View
*
* @param Module $module
*
* @return Response
* @return View
*/
public function edit(Module $module): View
{
@ -103,7 +105,7 @@ public function edit(Module $module): View
* @param Request $request
* @param Module $module
*
* @return Response
* @return RedirectResponse
*/
public function update(Request $request, Module $module): RedirectResponse
{

View File

@ -99,4 +99,18 @@ public function destroy(WorkOrder $workOrder): RedirectResponse
return redirect()->route('admin.work-orders.index')->with('success', '正在排队删除工单。');
}
public function reply(Request $request, WorkOrder $workOrder): RedirectResponse
{
$request->validate([
'content' => 'required|string',
]);
Reply::create([
'content' => $request->input('content'),
'work_order_id' => $workOrder->id
]);
return back()->with('success', '回复成功,请等待同步。');
}
}

View File

@ -8,6 +8,7 @@
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* App\Models\WorkOrder\Reply
@ -55,7 +56,7 @@
*/
class Reply extends Model
{
use HasFactory, Cachable;
use Cachable;
protected $table = 'work_order_replies';
@ -86,7 +87,7 @@ protected static function boot()
$model->workOrder->status = 'user_replied';
}
if (auth('module')->check()) {
if (auth('module')->check() || auth('admin')->check()) {
$model->user_id = null;
$model->workOrder->status = 'replied';
@ -107,12 +108,12 @@ protected static function boot()
});
}
public function workOrder()
public function workOrder(): BelongsTo
{
return $this->belongsTo(WorkOrder::class, 'work_order_id', 'id');
}
public function user()
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@ -10,7 +10,6 @@
<x-work-order-status :status="$workOrder->status"></x-work-order-status>
<div class="mt-3">
<!-- replies -->
<h4>对话记录</h4>
@foreach($replies as $reply)
@ -32,6 +31,18 @@
@endforeach
</div>
<h4 class="mt-3">您的回复</h4>
<form method="POST" action="{{ route('admin.work-orders.replies.store', $workOrder->id) }}">
@csrf
{{-- label --}}
<div class="form-group">
<label for="content">内容</label>
<textarea class="form-control" id="content" name="content" rows="10" placeholder="代替模块的回复。"></textarea>
</div>
<button type="submit" class="btn btn-primary mt-3 mb-3">提交</button>
</form>
<p>在这里,您无法回复工单,只能够查看。</p>

View File

@ -35,7 +35,9 @@
Route::resource('applications', ApplicationController::class);
Route::resource('hosts', HostController::class)->only(['index', 'edit', 'update', 'destroy']);
Route::resource('work-orders', WorkOrderController::class)->only(['index', 'show', 'edit', 'update', 'destroy']);
Route::post('work-orders/{work_order}/replies', [WorkOrderController::class, 'reply'])->name('work-orders.replies.store');
Route::resource('user-groups', UserGroupController::class);