diff --git a/app/Http/Controllers/BendingBaseController.php b/app/Http/Controllers/BendingBaseController.php index 457e9ccd..54af8899 100644 --- a/app/Http/Controllers/BendingBaseController.php +++ b/app/Http/Controllers/BendingBaseController.php @@ -203,6 +203,21 @@ public function update(Request $request, int $id) return redirect()->route('bending.base.show', $id)->with('success', '절곡품이 수정되었습니다.'); } + public function duplicate(int $id) + { + $response = $this->api()->post("/api/v1/bending-items/{$id}/duplicate"); + + if (! $response->successful()) { + return back()->withErrors(['api' => $response->json('message', '복사 실패')]); + } + + $newId = $response->json('data.id'); + $newCode = $response->json('data.code'); + + return redirect()->route('bending.base.edit', $newId) + ->with('success', "복사 완료 — 새 코드: {$newCode}"); + } + public function destroy(int $id) { $this->api()->delete("/api/v1/bending-items/{$id}"); diff --git a/resources/views/bending/base/form.blade.php b/resources/views/bending/base/form.blade.php index 2e05ac53..9fc87775 100644 --- a/resources/views/bending/base/form.blade.php +++ b/resources/views/bending/base/form.blade.php @@ -34,6 +34,7 @@ 수정 @endif @if(!$isCreate) +
@csrf @method('DELETE') @@ -482,6 +483,17 @@ function serializeBendingData() { document.getElementById('bendingDataInput').value = JSON.stringify(data); } +// 복사 +function duplicateItem() { + if (!confirm('이 절곡품을 복사하시겠습니까?\n같은 분류의 다음 번호가 자동 채번됩니다.')) return; + const form = document.createElement('form'); + form.method = 'POST'; + form.action = '{{ !$isCreate ? route("bending.base.duplicate", $itemId) : "" }}'; + form.innerHTML = '@csrf'; + document.body.appendChild(form); + form.submit(); +} + // 이미지 미리보기 function previewImage(input) { const file = input.files[0]; diff --git a/routes/web.php b/routes/web.php index 051cb8bd..d1f50f5b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -508,6 +508,7 @@ Route::get('/base/{id}', [\App\Http\Controllers\BendingBaseController::class, 'show'])->whereNumber('id')->name('base.show'); Route::get('/base/{id}/edit', [\App\Http\Controllers\BendingBaseController::class, 'edit'])->whereNumber('id')->name('base.edit'); Route::put('/base/{id}', [\App\Http\Controllers\BendingBaseController::class, 'update'])->whereNumber('id')->name('base.update'); + Route::post('/base/{id}/duplicate', [\App\Http\Controllers\BendingBaseController::class, 'duplicate'])->whereNumber('id')->name('base.duplicate'); Route::delete('/base/{id}', [\App\Http\Controllers\BendingBaseController::class, 'destroy'])->whereNumber('id')->name('base.destroy'); // 기초관리 부품 검색 (모달용 AJAX)