diff --git a/frontend/issues-dashboard.html b/frontend/issues-dashboard.html index 407f07b..c28465e 100644 --- a/frontend/issues-dashboard.html +++ b/frontend/issues-dashboard.html @@ -27,34 +27,46 @@ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } - /* 이슈 테이블 스타일 (가로 테이블 레이아웃) */ - .dashboard-table { - min-width: 1200px; + /* 이슈 카드 스타일 (관리함 진행 중 스타일) */ + .issue-card { + transition: all 0.3s ease; + border-left: 4px solid transparent; } - .dashboard-table th { - position: sticky; - top: 0; + .issue-card:hover { + transform: translateY(-4px); + border-left-color: #3b82f6; + box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); + } + + .issue-card label { + font-weight: 600; + color: #374151; + } + + .issue-card .bg-gray-50 { background-color: #f9fafb; - z-index: 10; + border: 1px solid #e5e7eb; + transition: all 0.2s ease; } - .dashboard-table td { - vertical-align: middle; + .issue-card .bg-gray-50:hover { + background-color: #f3f4f6; } - .dashboard-table tr:hover { - background-color: #f8fafc; + .issue-card .fas.fa-image:hover { + transform: scale(1.2); + color: #3b82f6; } - .truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + /* 진행 중 애니메이션 */ + @keyframes pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.5; } } - .dashboard-table .fas.fa-image:hover { - transform: scale(1.1); + .animate-pulse { + animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .progress-bar { @@ -369,7 +381,7 @@ document.getElementById('activeProjects').textContent = activeProjectIds.size; } - // 이슈 테이블 업데이트 (가로 테이블 스타일) + // 이슈 카드 업데이트 (관리함 진행 중 카드 스타일) function updateProjectCards() { const container = document.getElementById('projectDashboard'); const emptyState = document.getElementById('emptyState'); @@ -382,39 +394,18 @@ emptyState.classList.add('hidden'); - // 가로 스크롤 테이블 생성 - const tableHTML = ` -
-
- - - - - - - - - - - - - - - - - - ${filteredIssues.map(issue => createIssueRow(issue)).join('')} - -
No.프로젝트부적합 내용카테고리해결방안담당부서담당자예상완료일원인부서사진등록일
-
+ // 카드 그리드 생성 + const cardsHTML = ` +
+ ${filteredIssues.map(issue => createIssueCard(issue)).join('')}
`; - container.innerHTML = tableHTML; + container.innerHTML = cardsHTML; } - // 이슈 테이블 행 생성 (가로 테이블 스타일, 읽기 전용) - function createIssueRow(issue) { + // 이슈 카드 생성 (관리함 진행 중 스타일, 읽기 전용) + function createIssueCard(issue) { const project = projects.find(p => p.id === issue.project_id); const projectName = project ? project.project_name : '미지정'; @@ -464,72 +455,93 @@ return diffDays <= 3; // 3일 이내 또는 지연 }; - // 사진 아이콘 생성 - const getPhotoIcons = () => { - const photos = []; - if (issue.photo_path) photos.push(issue.photo_path); - if (issue.photo_path2) photos.push(issue.photo_path2); - - if (photos.length === 0) return '-'; - - return photos.map(photo => - `` - ).join(''); - }; - - // 긴급 표시가 있는 No. 생성 - const getNoWithUrgent = () => { - const noText = issue.project_sequence_no || '-'; - if (isUrgent()) { - return `
- ${noText} - 긴급 -
`; - } - return `${noText}`; - }; - return ` - - ${getNoWithUrgent()} - -
${projectName}
- - -
- ${issue.final_description || issue.description || '-'} +
+ +
+
+ No.${issue.project_sequence_no || '-'} + ${isUrgent() ? '긴급' : ''}
- - - ${getCategoryText(issue.final_category || issue.category)} - - -
- ${issue.solution || '-'} + ${formatKSTDate(issue.report_date)} +
+ + +
+
+ +
${projectName}
- - - ${getDepartmentText(issue.responsible_department)} - - -
- ${issue.responsible_person || '-'} + +
+ +
${issue.final_description || issue.description || '-'}
- - - ${formatKSTDate(issue.expected_completion_date)} - - - ${getDepartmentText(issue.cause_department)} - - - ${getPhotoIcons()} - - - ${formatKSTDate(issue.report_date)} - - + +
+ +
${getCategoryText(issue.final_category || issue.category)}
+
+
+ + +
+
+
+ +
${issue.solution || '-'}
+
+
+ +
${getDepartmentText(issue.responsible_department)}
+
+
+ +
+
+ +
${issue.responsible_person || '-'}
+
+
+ +
${formatKSTDate(issue.expected_completion_date)}
+
+
+ +
+ +
${getDepartmentText(issue.cause_department)}
+
+
+ + + ${issue.photo_path || issue.photo_path2 ? ` +
+ +
+ ${issue.photo_path ? ` +
+ +
+ ` : ''} + ${issue.photo_path2 ? ` +
+ +
+ ` : ''} +
+
+ ` : ''} + + +
+
+
+ 진행 중 +
+ 신고일: ${formatKSTDate(issue.report_date)} +
+
`; }