From 8a52ad0d0a27e1d25d7f81e20e0e178fb55864bd Mon Sep 17 00:00:00 2001 From: ttipo Date: Mon, 22 Jun 2026 16:15:55 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=A7=84=ED=96=89=20=EB=B3=B4=EA=B3=A0?= =?UTF-8?q?=EC=84=9C=20=EC=9E=91=EC=84=B1=EC=9D=84=20=EB=AA=A8=EB=8B=AC=20?= =?UTF-8?q?+=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20=ED=83=AD=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 인라인 보고서 폼 제거 → '보고서 작성' 클릭 시 모달로 띄움. 모달 내 항목은 필수/관리/보안/부가 탭으로 구분해 항목별 상태를 선택하고 메모와 함께 전송. Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/src/pages/relay/TaskDetailPage.vue | 255 +++++++++++++------- 1 file changed, 166 insertions(+), 89 deletions(-) diff --git a/frontend/src/pages/relay/TaskDetailPage.vue b/frontend/src/pages/relay/TaskDetailPage.vue index 9287f21..1a00db6 100644 --- a/frontend/src/pages/relay/TaskDetailPage.vue +++ b/frontend/src/pages/relay/TaskDetailPage.vue @@ -334,25 +334,37 @@ function checkpointState(cp: TaskCheckpointView): CheckpointState { return 'future' } -// --- 보고서 작성 폼(인라인, 점검일 당일·담당자만) --- +// --- 보고서 작성(모달, 점검일 당일·담당자만) — 카테고리 탭 방식 --- const reportingCpId = ref(null) -const reportItems = ref<{ id: string; text: string; workStatus: ChecklistWorkStatus }[]>([]) +const reportItems = ref< + { id: string; text: string; category: ChecklistCategory; workStatus: ChecklistWorkStatus }[] +>([]) const reportNote = ref('') const reportSubmitting = ref(false) +const writeTab = ref('필수') function openReportForm(cp: TaskCheckpointView) { if (!task.value) return reportingCpId.value = cp.id + writeTab.value = '필수' // 현재(마지막 보고) 상태로 프리필 reportItems.value = task.value.checklist .filter((c) => c.id) .map((c) => ({ id: c.id as string, text: c.text, + category: c.category, workStatus: c.workStatus ?? 'todo', })) reportNote.value = '' } +// 작성 모달 탭별 항목 / 개수 +function writeItemsByCat(cat: ChecklistCategory) { + return reportItems.value.filter((it) => it.category === cat) +} +function writeCatCount(cat: ChecklistCategory): number { + return writeItemsByCat(cat).length +} function cancelReportForm() { reportingCpId.value = null reportItems.value = [] @@ -1271,14 +1283,14 @@ function badgeFor(name: string | undefined): { label: string; cls: string } { class="cp-d-item" > {{ cp.dateLabel }} - + - - - -

- 등록된 할 일이 없어 메모만 보고됩니다. -

-