🎨 모던 디자인 시스템 적용: 1. 대시보드와 일관된 디자인 언어: - design-system.css 활용한 통일된 색상, 타이포그래피 - 동일한 카드, 버튼, 애니메이션 스타일 - 일관된 간격, 그림자, 테두리 반경 2. 새로운 CSS 파일 분리: - daily-work-report.css 생성 (673줄) - 인라인 스타일 완전 제거 (926줄 → 0줄) - 모듈화된 스타일 관리 🚀 사용자 경험 대폭 개선: 1. 모던한 진행 단계 표시: - 상단 3단계 진행 바 추가 - 실시간 단계 상태 표시 (활성/완료) - 시각적 진행도 피드백 2. 개선된 레이아웃 구조: - 헤더: 그라데이션 배경, 중앙 정렬 - 메인: 최대 너비 1200px, 중앙 배치 - 카드: 일관된 패딩, 그림자, 테두리 3. 향상된 작업자 선택 UI: - worker-btn → worker-card 클래스 변경 - 카드형 디자인으로 시각적 개선 - 호버 효과: 상단 컬러 바, 배경 변화 - 선택 상태: 그라데이션 배경, 흰색 텍스트 ✨ 인터랙션 개선: 1. 버튼 디자인 통일: - 일관된 패딩, 높이 (48px) - 호버 효과: translateY(-2px), 그림자 확대 - 색상: primary, success, secondary 통일 2. 폼 요소 개선: - form-input 클래스로 통일된 스타일 - 포커스 상태: 테두리 색상, 그림자 효과 - 라벨: 명확한 계층 구조 3. 애니메이션 효과: - 단계 전환: opacity, transform 애니메이션 - 카드 호버: translateY, 그림자 변화 - 부드러운 전환: var(--transition-normal) 📱 반응형 디자인 최적화: 1. 모바일 (768px 이하): - 진행 단계: 세로 배치 - 작업자 그리드: 1열로 변경 - 패딩, 폰트 크기 조정 2. 태블릿 (1024px 이하): - 적절한 그리드 컬럼 수 조정 - 터치 친화적 버튼 크기 🔧 기술적 개선: 1. JavaScript 업데이트: - updateProgressSteps() 함수 추가 - 진행 단계 실시간 업데이트 - CSS 클래스명 변경 반영 2. HTML 구조 개선: - 시맨틱 태그 활용 (header, main) - 접근성 향상 (label, aria 속성) - 깔끔한 마크업 구조 🎯 결과: - 대시보드와 완벽한 디자인 일관성 - 직관적이고 사용하기 쉬운 인터페이스 - 모든 디바이스에서 최적화된 경험 - 프로페셔널한 시각적 품질 테스트: http://localhost:20000/pages/common/daily-work-report.html
158 lines
5.6 KiB
HTML
158 lines
5.6 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/daily-work-report.css">
|
||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||
<script src="/js/auth-check.js" defer></script>
|
||
</head>
|
||
<body>
|
||
<div class="work-report-container">
|
||
<!-- 네비게이션 바 -->
|
||
<div id="navbar-container"></div>
|
||
|
||
<!-- 헤더 -->
|
||
<header class="work-report-header">
|
||
<h1>✍️ 일일 작업보고서 작성</h1>
|
||
<p class="subtitle">단계별로 오늘의 작업 내용을 간편하게 기록하고 관리하세요.</p>
|
||
</header>
|
||
|
||
<!-- 메인 콘텐츠 -->
|
||
<main class="work-report-main">
|
||
<!-- 뒤로가기 버튼 -->
|
||
<a href="javascript:history.back()" class="back-button">
|
||
← 뒤로가기
|
||
</a>
|
||
|
||
<!-- 진행 단계 표시 -->
|
||
<div class="progress-steps">
|
||
<div class="progress-step active" id="progressStep1">
|
||
<div class="step-circle">1</div>
|
||
<div class="step-label">날짜 선택</div>
|
||
</div>
|
||
<div class="progress-step" id="progressStep2">
|
||
<div class="step-circle">2</div>
|
||
<div class="step-label">작업자 선택</div>
|
||
</div>
|
||
<div class="progress-step" id="progressStep3">
|
||
<div class="step-circle">3</div>
|
||
<div class="step-label">작업 입력</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 메시지 영역 -->
|
||
<div id="message-container"></div>
|
||
|
||
<!-- 1단계: 날짜 선택 -->
|
||
<div id="step1" class="step-section active">
|
||
<div class="step-header">
|
||
<div class="step-number">1</div>
|
||
<div class="step-title">작업 날짜 선택</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="reportDate" class="form-label">작업 날짜를 선택하세요</label>
|
||
<input type="date" id="reportDate" class="form-input" required>
|
||
</div>
|
||
<button type="button" class="btn btn-primary" id="nextStep1">다음 단계 →</button>
|
||
</div>
|
||
|
||
<!-- 2단계: 작업자 선택 -->
|
||
<div id="step2" class="step-section">
|
||
<div class="step-header">
|
||
<div class="step-number">2</div>
|
||
<div class="step-title">작업자 선택</div>
|
||
</div>
|
||
<div id="workerGrid" class="worker-grid">
|
||
<!-- 작업자 카드들이 여기에 동적으로 추가됩니다 -->
|
||
</div>
|
||
<button type="button" class="btn btn-primary" id="nextStep2" disabled>다음 단계 →</button>
|
||
</div>
|
||
|
||
<!-- 3단계: 작업 내역 입력 -->
|
||
<div id="step3" class="step-section">
|
||
<div class="step-header">
|
||
<div class="step-number">3</div>
|
||
<div class="step-title">작업 내역 입력</div>
|
||
</div>
|
||
|
||
<!-- 총 작업시간 표시 -->
|
||
<div class="total-hours-display" id="totalHoursDisplay">
|
||
총 작업시간: 0시간
|
||
</div>
|
||
|
||
<!-- 작업 항목들 -->
|
||
<div id="workEntriesList">
|
||
<!-- 작업 항목들이 여기에 동적으로 추가됩니다 -->
|
||
</div>
|
||
|
||
<!-- 작업 추가 버튼 -->
|
||
<button type="button" class="btn btn-secondary btn-block" id="addWorkBtn">
|
||
➕ 작업 추가
|
||
</button>
|
||
|
||
<!-- 저장 버튼 -->
|
||
<button type="button" class="btn btn-success btn-block" id="submitBtn">
|
||
💾 작업보고서 저장
|
||
</button>
|
||
</div>
|
||
|
||
<!-- 📊 내가 입력한 당일 작업 현황 (수정/삭제 가능) -->
|
||
<div class="step-section" id="dailyWorkersSection" style="display: none;">
|
||
<div class="step-header">
|
||
<div class="step-number">📊</div>
|
||
<div class="step-title">내가 입력한 작업 현황</div>
|
||
</div>
|
||
<p style="color: var(--text-secondary); margin-bottom: var(--space-5);">
|
||
✏️ 내가 입력한 작업만 표시되며, 각 작업을 <strong>수정</strong>하거나 <strong>삭제</strong>할 수 있습니다.
|
||
</p>
|
||
<div id="dailyWorkersContent">
|
||
<!-- 작업자 현황이 여기에 표시됩니다 -->
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 사용법 안내 -->
|
||
<div class="step-section">
|
||
<div class="step-header">
|
||
<div class="step-number">📖</div>
|
||
<div class="step-title">사용 가이드</div>
|
||
</div>
|
||
<div class="guide-grid">
|
||
<div class="guide-item">
|
||
<div class="guide-icon">📅</div>
|
||
<strong>1단계</strong><br>
|
||
작업 날짜 선택
|
||
</div>
|
||
<div class="guide-item">
|
||
<div class="guide-icon">👤</div>
|
||
<strong>2단계</strong><br>
|
||
작업자 선택 (터치)
|
||
</div>
|
||
<div class="guide-item">
|
||
<div class="guide-icon">🔧</div>
|
||
<strong>3단계</strong><br>
|
||
작업 내역 입력
|
||
</div>
|
||
<div class="guide-item">
|
||
<div class="guide-icon">💾</div>
|
||
<strong>완료</strong><br>
|
||
저장하여 마무리
|
||
</div>
|
||
<div class="guide-item">
|
||
<div class="guide-icon">✏️</div>
|
||
<strong>관리</strong><br>
|
||
입력한 작업 수정/삭제
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</div>
|
||
|
||
<!-- 스크립트 -->
|
||
<script src="/js/api-config.js"></script>
|
||
<script src="/js/load-navbar.js"></script>
|
||
<script src="/js/daily-work-report.js"></script>
|
||
</body>
|
||
</html> |