diff --git a/frontend/src/pages/relay/TaskDetailPage.vue b/frontend/src/pages/relay/TaskDetailPage.vue index 6793b24..2e65cf3 100644 --- a/frontend/src/pages/relay/TaskDetailPage.vue +++ b/frontend/src/pages/relay/TaskDetailPage.vue @@ -25,6 +25,7 @@ import { import type { ChecklistReviewItem } from '@/types/task' import { useTaskStore } from '@/stores/task.store' import { useAuthStore } from '@/stores/auth.store' +import { useDialog } from '@/composables/useDialog' import UserAvatar from '@/components/UserAvatar.vue' import { attachmentKindOf, fileBadge } from '@/shared/utils/format' @@ -35,6 +36,7 @@ const taskId = computed(() => Number(route.params.taskId)) const taskStore = useTaskStore() const authStore = useAuthStore() +const dialog = useDialog() // 업무 상세 — API 연동 const task = ref(null) @@ -115,19 +117,22 @@ const ActivityIcon = defineComponent({ * 더보기 메뉴 / 모달 * ============================================================ */ const moreOpen = ref(false) -const showDelete = ref(false) const showChanges = ref(false) function closeAllOverlays() { - showDelete.value = false showChanges.value = false moreOpen.value = false } -// 모달에서 삭제 확정 → DELETE 후 프로젝트 상세로 이동 -async function confirmDelete() { +// 삭제 — 공통 확인 다이얼로그로 확인받고 DELETE 후 프로젝트 상세로 이동 +async function askDelete() { + moreOpen.value = false if (!task.value) return - showDelete.value = false + const ok = await dialog.confirm( + `#${task.value.id} ${task.value.title} 업무와 체크리스트·댓글·첨부파일이 영구적으로 삭제됩니다. 이 작업은 되돌릴 수 없습니다.`, + { title: '업무를 삭제할까요?', variant: 'danger', confirmText: '삭제' }, + ) + if (!ok) return try { await taskStore.remove(projectId.value, task.value.id) router.push(`/projects/${projectId.value}`) @@ -526,7 +531,7 @@ function badgeFor(name: string | undefined): { label: string; cls: string } { - - - - -