- Backend: Auto-sync work reports with attendance records - Backend: Lazy initialization of daily active worker records - Frontend: Real-time attendance status on Group Leader Dashboard
178 lines
6.3 KiB
HTML
178 lines
6.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>작업 현황판 | 테크니컬코리아</title>
|
|
|
|
<!-- 모던 디자인 시스템 적용 -->
|
|
<link rel="stylesheet" href="/css/design-system.css">
|
|
<link rel="stylesheet" href="/css/modern-dashboard.css?v=2">
|
|
<link rel="icon" type="image/png" href="/img/favicon.png">
|
|
|
|
<!-- 스크립트 (순서 중요: api-config.js가 먼저 로드되어야 함) -->
|
|
<script src="/js/api-config.js"></script>
|
|
<script src="/js/auth-check.js" defer></script>
|
|
<script src="/js/modern-dashboard.js?v=10" defer></script>
|
|
<script src="/js/group-leader-dashboard.js?v=1" defer></script>
|
|
</head>
|
|
|
|
<body>
|
|
<!-- 메인 컨테이너 -->
|
|
<div class="dashboard-container">
|
|
|
|
<!-- 헤더 -->
|
|
<header class="dashboard-header">
|
|
<div class="header-content">
|
|
<div class="header-left">
|
|
<div class="brand">
|
|
<img src="/img/logo.png" alt="테크니컬코리아" class="brand-logo">
|
|
<div class="brand-text">
|
|
<h1 class="brand-title">테크니컬코리아</h1>
|
|
<p class="brand-subtitle">작업 현황판</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header-center">
|
|
<div class="current-time" id="currentTime">
|
|
<span class="time-label">현재 시각</span>
|
|
<span class="time-value" id="timeValue">--:--:--</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header-right">
|
|
<div class="user-profile" id="userProfile">
|
|
<div class="user-avatar">
|
|
<span class="avatar-text" id="userInitial">사</span>
|
|
</div>
|
|
<div class="user-info">
|
|
<span class="user-name" id="userName">사용자</span>
|
|
<span class="user-role" id="userRole">작업자</span>
|
|
</div>
|
|
<div class="profile-menu" id="profileMenu">
|
|
<a href="/pages/profile/my-profile.html" class="menu-item">
|
|
<span class="menu-icon">👤</span>
|
|
내 프로필
|
|
</a>
|
|
<a href="/pages/profile/change-password.html" class="menu-item">
|
|
<span class="menu-icon">🔐</span>
|
|
비밀번호 변경
|
|
</a>
|
|
<a href="/pages/profile/admin-settings.html" class="menu-item admin-only">
|
|
<span class="menu-icon">⚙️</span>
|
|
관리자 설정
|
|
</a>
|
|
<button class="menu-item logout-btn" id="logoutBtn">
|
|
<span class="menu-icon">🚪</span>
|
|
로그아웃
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- 메인 콘텐츠 -->
|
|
<main class="dashboard-main">
|
|
|
|
<!-- 빠른 작업 섹션 -->
|
|
<section class="quick-actions-section">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h2 class="card-title">⚡ 빠른 작업</h2>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="quick-actions-grid-full">
|
|
<a href="/pages/common/daily-work-report.html" class="quick-action-card">
|
|
<div class="action-icon-large">📝</div>
|
|
<div class="action-content">
|
|
<h3>작업 보고서 작성</h3>
|
|
<p>오늘의 작업 내용을 입력하고 관리합니다</p>
|
|
</div>
|
|
<div class="action-arrow">→</div>
|
|
</a>
|
|
|
|
<a href="/pages/common/daily-work-report-viewer.html" class="quick-action-card">
|
|
<div class="action-icon-large">📋</div>
|
|
<div class="action-content">
|
|
<h3>작업 현황 확인</h3>
|
|
<p>팀원들의 작업 현황을 실시간으로 조회합니다</p>
|
|
</div>
|
|
<div class="action-arrow">→</div>
|
|
</a>
|
|
|
|
<a href="/pages/analysis/work-analysis.html" class="quick-action-card admin-only">
|
|
<div class="action-icon-large">📈</div>
|
|
<div class="action-content">
|
|
<h3>작업 분석</h3>
|
|
<p>작업 효율성 및 통계를 분석합니다</p>
|
|
</div>
|
|
<div class="action-arrow">→</div>
|
|
</a>
|
|
|
|
<a href="/pages/management/work-management.html" class="quick-action-card admin-only">
|
|
<div class="action-icon-large">🔧</div>
|
|
<div class="action-content">
|
|
<h3>작업 관리</h3>
|
|
<p>작업자 및 프로젝트를 관리합니다</p>
|
|
</div>
|
|
<div class="action-arrow">→</div>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- 오늘의 작업 현황 -->
|
|
<section class="work-status-section">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<div class="flex justify-between items-center">
|
|
<h2 class="card-title">📊 오늘의 작업 현황</h2>
|
|
<div class="date-selector">
|
|
<input type="date" id="selectedDate" class="date-input">
|
|
<button class="btn btn-primary btn-sm" id="refreshBtn">
|
|
<span>🔄</span>
|
|
새로고침
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="work-status-container-enhanced" id="workStatusContainer">
|
|
<div class="loading-state">
|
|
<div class="spinner"></div>
|
|
<p>작업 현황을 불러오는 중...</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
</main>
|
|
|
|
<!-- 푸터 -->
|
|
<footer class="dashboard-footer">
|
|
<div class="footer-content">
|
|
<p class="footer-text">
|
|
© 2025 (주)테크니컬코리아. 모든 권리 보유.
|
|
</p>
|
|
<div class="footer-links">
|
|
<a href="#" class="footer-link">도움말</a>
|
|
<a href="#" class="footer-link">문의하기</a>
|
|
<a href="#" class="footer-link">개인정보처리방침</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
|
|
<!-- 알림 토스트 -->
|
|
<div class="toast-container" id="toastContainer"></div>
|
|
|
|
</body>
|
|
|
|
</html> |