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 = `
-
-
-
-
-
- | No. |
- 프로젝트 |
- 부적합 내용 |
- 카테고리 |
- 해결방안 |
- 담당부서 |
- 담당자 |
- 예상완료일 |
- 원인부서 |
- 사진 |
- 등록일 |
-
-
-
- ${filteredIssues.map(issue => createIssueRow(issue)).join('')}
-
-
-
+ // 카드 그리드 생성
+ 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)}
+
+
+
+ |
-
- ${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)}
+
+
`;
}