feat(ux): 전체 시스템 모바일 UX 개선 — 햄버거메뉴·필터반응형·터치타겟·iOS줌방지
7개 시스템(tkpurchase/tksafety/tksupport/tkuser/system1/system2/system3)의 모바일 사용성 일괄 개선. system1(tkfb)의 모바일 메뉴 패턴을 3개 신규 시스템에 적용. 주요 변경: - 모바일 햄버거 메뉴: tkpurchase/tksafety/tksupport에 toggleMobileMenu+overlay 추가 - 필터 반응형: 768px 이하 2열 그리드 전환 (filter-bar/filter-actions 클래스) - 터치 타겟 44px: 테이블 액션 버튼 36px+gap, tksafety ±버튼 w-11 - iOS 줌 방지: input/select/textarea font-size 16px - tkuser: 탭 가로스크롤+fade힌트, 사이드바·grid·드롭다운 반응형 - system1: 대시보드 인라인 width 제거, 이동설비 그리드 1열 - system2: 사진그리드 4열, 유형버튼 2열 (480px 이하) - system3: 카드 내 액션 버튼 stopPropagation 추가 - 캐시 무효화: 전체 HTML ?v=2026031401 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3848,6 +3848,9 @@
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.moved-equipment-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
|
||||
.moved-equipment-card {
|
||||
background: white;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
if('serviceWorker' in navigator){navigator.serviceWorker.getRegistrations().then(function(r){r.forEach(function(reg){reg.unregister()});})}
|
||||
if('caches' in window){caches.keys().then(function(k){k.forEach(function(key){caches.delete(key)})})}
|
||||
</script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script>
|
||||
// SSO 토큰 확인
|
||||
var token = window.getSSOToken ? window.getSSOToken() : (localStorage.getItem('sso_token') || localStorage.getItem('token'));
|
||||
|
||||
@@ -190,11 +190,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script type="module">
|
||||
import '/js/api-config.js?v=3';
|
||||
import '/js/api-config.js?v=2026031401
|
||||
</script>
|
||||
<script>
|
||||
// axios 기본 설정
|
||||
|
||||
@@ -324,8 +324,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/department-management.js"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/equipment-detail.css?v=1">
|
||||
<link rel="stylesheet" href="/css/equipment-detail.css?v=2026031401">
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<header class="bg-orange-700 text-white sticky top-0 z-50">
|
||||
@@ -314,11 +314,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script type="module">
|
||||
import '/js/api-config.js?v=3';
|
||||
import '/js/api-config.js?v=2026031401
|
||||
</script>
|
||||
<script>
|
||||
(function() {
|
||||
@@ -352,7 +352,7 @@
|
||||
}, 50);
|
||||
})();
|
||||
</script>
|
||||
<script src="/js/equipment-detail.js?v=1"></script>
|
||||
<script src="/js/equipment-detail.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/equipment-management.css?v=1">
|
||||
<link rel="stylesheet" href="/css/equipment-management.css?v=2026031401">
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<header class="bg-orange-700 text-white sticky top-0 z-50">
|
||||
@@ -190,11 +190,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script type="module">
|
||||
import '/js/api-config.js?v=3';
|
||||
import '/js/api-config.js?v=2026031401
|
||||
</script>
|
||||
<script>
|
||||
(function() {
|
||||
@@ -228,7 +228,7 @@
|
||||
}, 50);
|
||||
})();
|
||||
</script>
|
||||
<script src="/js/equipment-management.js?v=8"></script>
|
||||
<script src="/js/equipment-management.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -329,8 +329,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/issue-category-manage.js"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
|
||||
@@ -387,8 +387,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script>
|
||||
let currentPage = 1;
|
||||
let totalPages = 1;
|
||||
|
||||
@@ -384,8 +384,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script>
|
||||
let allProjects = [];
|
||||
let filteredProjects = [];
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/static/js/purchase-analysis.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/purchase-analysis.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -487,8 +487,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script>
|
||||
let currentReportId = null;
|
||||
let allRepairs = [];
|
||||
|
||||
@@ -285,8 +285,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script>
|
||||
let workTypes = [];
|
||||
let tasks = [];
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/workplace-management.css?v=7">
|
||||
<link rel="stylesheet" href="/css/workplace-management.css?v=2026031401">
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<header class="bg-orange-700 text-white sticky top-0 z-50">
|
||||
@@ -431,15 +431,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 작업장 관리 모듈 (리팩토링된 구조) -->
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/workplace-management/state.js?v=1"></script>
|
||||
<script src="/js/workplace-management/utils.js?v=1"></script>
|
||||
<script src="/js/workplace-management/api.js?v=1"></script>
|
||||
<script src="/js/workplace-management/index.js?v=1"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/workplace-management/state.js?v=2026031401"></script>
|
||||
<script src="/js/workplace-management/utils.js?v=2026031401"></script>
|
||||
<script src="/js/workplace-management/api.js?v=2026031401"></script>
|
||||
<script src="/js/workplace-management/index.js?v=2026031401"></script>
|
||||
<!-- 기존 UI 로직 (점진적 마이그레이션) -->
|
||||
<script type="module" src="/js/workplace-management.js?v=9"></script>
|
||||
<script type="module" src="/js/workplace-layout-map.js?v=2"></script>
|
||||
<script type="module" src="/js/workplace-management.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/workplace-layout-map.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -328,8 +328,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script>
|
||||
// axios 설정
|
||||
|
||||
@@ -222,8 +222,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script>
|
||||
(function() {
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script>
|
||||
// axios 기본 설정
|
||||
|
||||
@@ -474,8 +474,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script>
|
||||
// axios 기본 설정
|
||||
|
||||
@@ -265,8 +265,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script>
|
||||
// axios 설정
|
||||
|
||||
@@ -353,8 +353,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/vacation-allocation.js" defer></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
|
||||
@@ -123,8 +123,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/vacation-common.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -123,8 +123,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/vacation-common.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -205,8 +205,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/vacation-common.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -117,8 +117,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/vacation-common.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -276,8 +276,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script>
|
||||
(function() {
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkfb-dashboard.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/modern-dashboard.css?v=3">
|
||||
<link rel="stylesheet" href="/css/modern-dashboard.css?v=2026031401">
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<header class="bg-orange-700 text-white sticky top-0 z-50">
|
||||
@@ -57,7 +57,7 @@
|
||||
<div class="flex justify-between items-center">
|
||||
<h2 class="card-title">작업장 현황</h2>
|
||||
<div class="flex items-center" style="gap: 12px;">
|
||||
<select id="categorySelect" class="form-select" style="width: 200px;">
|
||||
<select id="categorySelect" class="form-select w-full sm:w-auto">
|
||||
<option value="">공장을 선택하세요</option>
|
||||
</select>
|
||||
<button class="btn btn-primary btn-sm" id="refreshMapBtn">새로고침</button>
|
||||
@@ -323,12 +323,12 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script type="module" src="/js/modern-dashboard.js?v=10"></script>
|
||||
<script type="module" src="/js/group-leader-dashboard.js?v=1"></script>
|
||||
<script src="/js/workplace-status.js?v=3"></script>
|
||||
<script src="/js/mobile-dashboard.js?v=4"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/modern-dashboard.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/group-leader-dashboard.js?v=2026031401"></script>
|
||||
<script src="/js/workplace-status.js?v=2026031401"></script>
|
||||
<script src="/js/mobile-dashboard.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>일일순회점검 - TK 공장관리</title>
|
||||
<link rel="stylesheet" href="/css/daily-patrol.css?v=4">
|
||||
<link rel="stylesheet" href="/css/daily-patrol.css?v=2026031401">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
@@ -175,7 +175,7 @@
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script type="module">
|
||||
import '/js/api-config.js?v=3';
|
||||
import '/js/api-config.js?v=2026031401
|
||||
</script>
|
||||
<script>
|
||||
(function() {
|
||||
@@ -209,9 +209,9 @@
|
||||
}, 50);
|
||||
})();
|
||||
</script>
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/daily-patrol.js?v=6"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/daily-patrol.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>구역 상세 - TK 공장관리</title>
|
||||
<link rel="stylesheet" href="/css/zone-detail.css?v=4">
|
||||
<link rel="stylesheet" href="/css/zone-detail.css?v=2026031401">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
@@ -278,7 +278,7 @@
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script type="module">
|
||||
import '/js/api-config.js?v=3';
|
||||
import '/js/api-config.js?v=2026031401
|
||||
</script>
|
||||
<script>
|
||||
(function() {
|
||||
@@ -304,9 +304,9 @@
|
||||
}, 50);
|
||||
})();
|
||||
</script>
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/zone-detail.js?v=6"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/zone-detail.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -320,8 +320,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/my-profile.js"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
|
||||
@@ -390,8 +390,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/change-password.js"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/static/js/tkfb-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/purchase-request.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/purchase-request.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/work-analysis.css?v=41">
|
||||
<link rel="stylesheet" href="/css/work-analysis.css?v=2026031401">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.js"></script>
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
@@ -277,9 +277,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script type="module" src="/js/work-analysis.js?v=5"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script type="module" src="/js/work-analysis.js?v=2026031401"></script>
|
||||
|
||||
<script>
|
||||
// 날짜 및 시간 함수들은 WorkAnalysis.utils 네임스페이스로 이동됨
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkfb-nonconformity.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/daily-work-report-mobile.css?v=1">
|
||||
<link rel="stylesheet" href="/css/daily-work-report-mobile.css?v=2026031401">
|
||||
<style>
|
||||
/* 데스크탑이면 리다이렉트 */
|
||||
@media (min-width: 769px) {
|
||||
@@ -189,18 +189,18 @@
|
||||
</div>
|
||||
|
||||
<!-- 공통 모듈 -->
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/common/utils.js?v=1"></script>
|
||||
<script src="/js/common/base-state.js?v=1"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/common/utils.js?v=2026031401"></script>
|
||||
<script src="/js/common/base-state.js?v=2026031401"></script>
|
||||
|
||||
<!-- 작업보고서 모듈 (재사용) -->
|
||||
<script src="/js/daily-work-report/state.js?v=2"></script>
|
||||
<script src="/js/daily-work-report/utils.js?v=2"></script>
|
||||
<script src="/js/daily-work-report/api.js?v=2"></script>
|
||||
<script src="/js/daily-work-report/state.js?v=2026031401"></script>
|
||||
<script src="/js/daily-work-report/utils.js?v=2026031401"></script>
|
||||
<script src="/js/daily-work-report/api.js?v=2026031401"></script>
|
||||
|
||||
<!-- 모바일 전용 UI 로직 -->
|
||||
<script src="/js/daily-work-report-mobile.js?v=4"></script>
|
||||
<script src="/js/daily-work-report-mobile.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/daily-work-report.css?v=13">
|
||||
<link rel="stylesheet" href="/css/daily-work-report.css?v=2026031401">
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<header class="bg-orange-700 text-white sticky top-0 z-50">
|
||||
@@ -149,14 +149,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/common/utils.js?v=1"></script>
|
||||
<script src="/js/common/base-state.js?v=1"></script>
|
||||
<script src="/js/daily-work-report/state.js?v=2"></script>
|
||||
<script src="/js/daily-work-report/utils.js?v=2"></script>
|
||||
<script src="/js/daily-work-report/api.js?v=2"></script>
|
||||
<script defer src="/js/daily-work-report.js?v=36"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/common/utils.js?v=2026031401"></script>
|
||||
<script src="/js/common/base-state.js?v=2026031401"></script>
|
||||
<script src="/js/daily-work-report/state.js?v=2026031401"></script>
|
||||
<script src="/js/daily-work-report/utils.js?v=2026031401"></script>
|
||||
<script src="/js/daily-work-report/api.js?v=2026031401"></script>
|
||||
<script defer src="/js/daily-work-report.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -843,15 +843,15 @@
|
||||
</div>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<!-- 공통 모듈 -->
|
||||
<script src="/js/common/utils.js?v=2"></script>
|
||||
<script src="/js/common/base-state.js?v=2"></script>
|
||||
<script src="/js/tbm/state.js?v=3"></script>
|
||||
<script src="/js/tbm/utils.js?v=3"></script>
|
||||
<script src="/js/tbm/api.js?v=4"></script>
|
||||
<script src="/js/tbm-create.js?v=14"></script>
|
||||
<script src="/js/common/utils.js?v=2026031401"></script>
|
||||
<script src="/js/common/base-state.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/state.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/utils.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/api.js?v=2026031401"></script>
|
||||
<script src="/js/tbm-create.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/tbm-mobile.css?v=1">
|
||||
<link rel="stylesheet" href="/css/tbm-mobile.css?v=2026031401">
|
||||
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
@@ -296,15 +296,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 공통 모듈 -->
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/common/utils.js?v=2"></script>
|
||||
<script src="/js/common/base-state.js?v=2"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/common/utils.js?v=2026031401"></script>
|
||||
<script src="/js/common/base-state.js?v=2026031401"></script>
|
||||
|
||||
<script src="/js/tbm/state.js?v=3"></script>
|
||||
<script src="/js/tbm/utils.js?v=3"></script>
|
||||
<script src="/js/tbm/api.js?v=4"></script>
|
||||
<script src="/js/tbm-mobile.js?v=3"></script>
|
||||
<script src="/js/tbm/state.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/utils.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/api.js?v=2026031401"></script>
|
||||
<script src="/js/tbm-mobile.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkfb.css">
|
||||
<link rel="stylesheet" href="/css/tbm.css?v=5">
|
||||
<link rel="stylesheet" href="/css/tbm.css?v=2026031401">
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<header class="bg-orange-700 text-white sticky top-0 z-50">
|
||||
@@ -560,14 +560,14 @@
|
||||
<!-- 토스트 -->
|
||||
<div class="toast-container" id="toastContainer"></div>
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=20260313"></script>
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/common/utils.js?v=2"></script>
|
||||
<script src="/js/common/base-state.js?v=2"></script>
|
||||
<script src="/js/tbm/state.js?v=3"></script>
|
||||
<script src="/js/tbm/utils.js?v=3"></script>
|
||||
<script src="/js/tbm/api.js?v=4"></script>
|
||||
<script defer src="/js/tbm.js?v=13"></script>
|
||||
<script src="/static/js/tkfb-core.js?v=2026031401"></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/common/utils.js?v=2026031401"></script>
|
||||
<script src="/js/common/base-state.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/state.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/utils.js?v=2026031401"></script>
|
||||
<script src="/js/tbm/api.js?v=2026031401"></script>
|
||||
<script defer src="/js/tbm.js?v=2026031401"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>AI 신고 도우미 | (주)테크니컬코리아</title>
|
||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||||
<link rel="stylesheet" href="/css/chat-report.css?v=3">
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/app-init.js?v=20260313" defer></script>
|
||||
<link rel="stylesheet" href="/css/chat-report.css?v=2026031401">
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/app-init.js?v=2026031401" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -32,7 +32,7 @@
|
||||
<!-- Hidden file input -->
|
||||
<input type="file" id="chatPhotoInput" accept="image/*" style="display:none">
|
||||
|
||||
<script src="/js/cross-nav.js?v=1"></script>
|
||||
<script src="/js/chat-report.js?v=3"></script>
|
||||
<script src="/js/cross-nav.js?v=2026031401"></script>
|
||||
<script src="/js/chat-report.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<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/common.css?v=2">
|
||||
<link rel="stylesheet" href="/css/project-management.css?v=3">
|
||||
<link rel="stylesheet" href="/css/common.css?v=2026031401">
|
||||
<link rel="stylesheet" href="/css/project-management.css?v=2026031401">
|
||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/app-init.js?v=20260313" defer></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/app-init.js?v=2026031401" defer></script>
|
||||
<script src="https://instant.page/5.2.0" type="module"></script>
|
||||
<style>
|
||||
/* 상태 배지 */
|
||||
@@ -472,6 +472,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/js/issue-detail.js?v=20260313"></script>
|
||||
<script src="/js/issue-detail.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>신고 등록 | (주)테크니컬코리아</title>
|
||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/app-init.js?v=20260313" defer></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/app-init.js?v=2026031401" defer></script>
|
||||
<style>
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
@@ -633,6 +633,10 @@
|
||||
@media (min-width: 480px) {
|
||||
body { max-width: 480px; margin: 0 auto; min-height: 100vh; }
|
||||
}
|
||||
@media (max-width: 480px) {
|
||||
.photo-grid { grid-template-columns: repeat(4, 1fr); }
|
||||
.type-grid { grid-template-columns: repeat(2, 1fr); }
|
||||
}
|
||||
@media (max-width: 360px) {
|
||||
.type-grid { gap: 0.5rem; }
|
||||
.type-btn { padding: 0.875rem 0.375rem; }
|
||||
@@ -777,7 +781,7 @@
|
||||
<!-- Hidden file input for camera/gallery -->
|
||||
<input type="file" id="photoInput" accept="image/*" style="display:none">
|
||||
|
||||
<script src="/js/cross-nav.js?v=1"></script>
|
||||
<script src="/js/issue-report.js?v=7"></script>
|
||||
<script src="/js/cross-nav.js?v=2026031401"></script>
|
||||
<script src="/js/issue-report.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<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/common.css?v=2">
|
||||
<link rel="stylesheet" href="/css/project-management.css?v=3">
|
||||
<link rel="stylesheet" href="/css/common.css?v=2026031401">
|
||||
<link rel="stylesheet" href="/css/project-management.css?v=2026031401">
|
||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||||
<script src="/js/api-base.js?v=20260313"></script>
|
||||
<script src="/js/app-init.js?v=20260313" defer></script>
|
||||
<script src="/js/api-base.js?v=2026031401"></script>
|
||||
<script src="/js/app-init.js?v=2026031401" defer></script>
|
||||
<script src="https://instant.page/5.2.0" type="module"></script>
|
||||
<style>
|
||||
/* 통계 카드 */
|
||||
@@ -300,7 +300,7 @@
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script src="/js/cross-nav.js?v=1"></script>
|
||||
<script src="/js/safety-report-list.js?v=2"></script>
|
||||
<script src="/js/cross-nav.js?v=2026031401"></script>
|
||||
<script src="/js/safety-report-list.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
<link rel="preload" href="https://cdn.tailwindcss.com" as="script">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=20260306">
|
||||
<link rel="stylesheet" href="/static/css/ai-assistant.css?v=20260307">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=2026031401">
|
||||
<link rel="stylesheet" href="/static/css/ai-assistant.css?v=2026031401">
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
<script src="/static/js/lib/purify.min.js"></script>
|
||||
</head>
|
||||
@@ -273,14 +273,14 @@
|
||||
</div>
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/toast.js?v=20260308"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=20260308"></script>
|
||||
<script src="/static/js/pages/ai-assistant.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/toast.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=2026031401"></script>
|
||||
<script src="/static/js/pages/ai-assistant.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -301,6 +301,6 @@
|
||||
<script src="/static/js/utils/date-utils.js"></script>
|
||||
<script src="/static/js/utils/image-utils.js"></script>
|
||||
<script src="/static/js/core/permissions.js"></script>
|
||||
<script src="/static/js/app.js?v=20260313"></script>
|
||||
<script src="/static/js/app.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
|
||||
<!-- 공통 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=2026031401">
|
||||
|
||||
<!-- 페이지 전용 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/issue-view.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/issue-view.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 공통 헤더가 여기에 자동으로 삽입됩니다 -->
|
||||
@@ -106,16 +106,16 @@
|
||||
</main>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/static/js/date-utils.js?v=20260308"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/toast.js?v=20260308"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=20260308"></script>
|
||||
<script src="/static/js/pages/issue-view.js?v=20260308"></script>
|
||||
<script src="/static/js/date-utils.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/toast.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=2026031401"></script>
|
||||
<script src="/static/js/pages/issue-view.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
<link rel="stylesheet" href="/static/css/mobile-calendar.css">
|
||||
|
||||
<!-- 공통 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=2026031401">
|
||||
|
||||
<!-- 페이지 전용 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/issues-archive.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/issues-archive.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 공통 헤더가 여기에 자동으로 삽입됩니다 -->
|
||||
@@ -196,16 +196,16 @@
|
||||
</main>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/static/js/date-utils.js?v=20260308"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/toast.js?v=20260308"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=20260308"></script>
|
||||
<script src="/static/js/pages/issues-archive.js?v=20260308"></script>
|
||||
<script src="/static/js/date-utils.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/toast.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=2026031401"></script>
|
||||
<script src="/static/js/pages/issues-archive.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
<link rel="preload" href="https://cdn.tailwindcss.com" as="script">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/issues-dashboard.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=2026031401">
|
||||
<link rel="stylesheet" href="/static/css/issues-dashboard.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 로딩 스크린 -->
|
||||
@@ -550,15 +550,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/toast.js?v=20260308"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=20260308"></script>
|
||||
<script src="/static/js/pages/issues-dashboard.js?v=20260308"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/toast.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=2026031401"></script>
|
||||
<script src="/static/js/pages/issues-dashboard.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
<link rel="stylesheet" href="/static/css/mobile-calendar.css">
|
||||
|
||||
<!-- 공통 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=2026031401">
|
||||
|
||||
<!-- 페이지 전용 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/issues-inbox.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/issues-inbox.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 로딩 오버레이 -->
|
||||
@@ -368,17 +368,17 @@
|
||||
</div>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/static/js/date-utils.js?v=20260308"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/components/mobile-calendar.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/toast.js?v=20260308"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=20260308"></script>
|
||||
<script src="/static/js/pages/issues-inbox.js?v=20260308"></script>
|
||||
<script src="/static/js/date-utils.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-calendar.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/toast.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=2026031401"></script>
|
||||
<script src="/static/js/pages/issues-inbox.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
<link rel="stylesheet" href="/static/css/mobile-calendar.css">
|
||||
|
||||
<!-- 공통 스타일 및 페이지 전용 스타일 -->
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/issues-management.css?v=20260213">
|
||||
<link rel="stylesheet" href="/static/css/tkqc-common.css?v=2026031401">
|
||||
<link rel="stylesheet" href="/static/css/issues-management.css?v=2026031401">
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
<script src="/static/js/lib/purify.min.js"></script>
|
||||
</head>
|
||||
@@ -338,16 +338,16 @@
|
||||
</div>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/static/js/date-utils.js?v=20260308"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/toast.js?v=20260308"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=20260308"></script>
|
||||
<script src="/static/js/pages/issues-management.js?v=20260313"></script>
|
||||
<script src="/static/js/date-utils.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/page-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/photo-modal.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/toast.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/mobile-bottom-nav.js?v=2026031401"></script>
|
||||
<script src="/static/js/pages/issues-management.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>부적합 현황판</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/m-common.css?v=20260308">
|
||||
<link rel="stylesheet" href="/static/css/m-common.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 로딩 -->
|
||||
@@ -185,11 +185,11 @@
|
||||
</div>
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/m/m-common.js?v=20260309"></script>
|
||||
<script src="/static/js/m/m-dashboard.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/m/m-common.js?v=2026031401"></script>
|
||||
<script src="/static/js/m/m-dashboard.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>수신함</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/m-common.css?v=20260308">
|
||||
<link rel="stylesheet" href="/static/css/m-common.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 로딩 -->
|
||||
@@ -193,11 +193,11 @@
|
||||
</div>
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/m/m-common.js?v=20260309"></script>
|
||||
<script src="/static/js/m/m-inbox.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/m/m-common.js?v=2026031401"></script>
|
||||
<script src="/static/js/m/m-inbox.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>관리함</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/m-common.css?v=20260308">
|
||||
<link rel="stylesheet" href="/static/css/m-common.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- 로딩 -->
|
||||
@@ -169,11 +169,11 @@
|
||||
</div>
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=20260308"></script>
|
||||
<script src="/static/js/m/m-common.js?v=20260309"></script>
|
||||
<script src="/static/js/m/m-management.js?v=20260308"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/utils/issue-helpers.js?v=2026031401"></script>
|
||||
<script src="/static/js/m/m-common.js?v=2026031401"></script>
|
||||
<script src="/static/js/m/m-management.js?v=2026031401"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -182,10 +182,10 @@
|
||||
</main>
|
||||
|
||||
<!-- JavaScript -->
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
|
||||
<script>
|
||||
let projects = [];
|
||||
|
||||
@@ -69,10 +69,10 @@
|
||||
</main>
|
||||
|
||||
<!-- JavaScript -->
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
|
||||
<script>
|
||||
// 페이지 초기화
|
||||
|
||||
@@ -68,10 +68,10 @@
|
||||
</main>
|
||||
|
||||
<!-- JavaScript -->
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
|
||||
<script>
|
||||
// 페이지 초기화
|
||||
|
||||
@@ -170,10 +170,10 @@
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
<script src="/static/js/core/permissions.js?v=20260308"></script>
|
||||
<script src="/static/js/components/common-header.js?v=20260313"></script>
|
||||
<script src="/static/js/api.js?v=20260308"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=20260313"></script>
|
||||
<script src="/static/js/core/permissions.js?v=2026031401"></script>
|
||||
<script src="/static/js/components/common-header.js?v=2026031401"></script>
|
||||
<script src="/static/js/api.js?v=2026031401"></script>
|
||||
<script src="/static/js/core/auth-manager.js?v=2026031401"></script>
|
||||
|
||||
<script>
|
||||
// 페이지 초기화
|
||||
|
||||
@@ -194,13 +194,13 @@ function renderInProgressCard(issue) {
|
||||
var actionHtml = '';
|
||||
if (isPending) {
|
||||
actionHtml = '<div class="m-action-row">' +
|
||||
'<button class="m-action-btn red" onclick="openRejectSheet(' + issue.id + ')"><i class="fas fa-times"></i>반려</button>' +
|
||||
'<button class="m-action-btn green" onclick="confirmCompletion(' + issue.id + ')"><i class="fas fa-check-circle"></i>최종확인</button>' +
|
||||
'<button class="m-action-btn red" onclick="event.stopPropagation();openRejectSheet(' + issue.id + ')"><i class="fas fa-times"></i>반려</button>' +
|
||||
'<button class="m-action-btn green" onclick="event.stopPropagation();confirmCompletion(' + issue.id + ')"><i class="fas fa-check-circle"></i>최종확인</button>' +
|
||||
'</div>';
|
||||
} else {
|
||||
actionHtml = '<div class="m-action-row">' +
|
||||
'<button class="m-action-btn blue" onclick="openEditMgmtSheet(' + issue.id + ')"><i class="fas fa-edit"></i>편집</button>' +
|
||||
'<button class="m-action-btn green" onclick="confirmCompletion(' + issue.id + ')"><i class="fas fa-check"></i>완료처리</button>' +
|
||||
'<button class="m-action-btn blue" onclick="event.stopPropagation();openEditMgmtSheet(' + issue.id + ')"><i class="fas fa-edit"></i>편집</button>' +
|
||||
'<button class="m-action-btn green" onclick="event.stopPropagation();confirmCompletion(' + issue.id + ')"><i class="fas fa-check"></i>완료처리</button>' +
|
||||
'</div>';
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>계정 관리 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260312">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -33,9 +36,9 @@
|
||||
|
||||
<!-- Main -->
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="flex gap-5">
|
||||
<div class="flex flex-col lg:flex-row gap-5">
|
||||
<!-- 업체 목록 (왼쪽) -->
|
||||
<div class="w-64 flex-shrink-0">
|
||||
<div class="w-full lg:w-64 lg:flex-shrink-0">
|
||||
<div class="bg-white rounded-xl shadow-sm p-4">
|
||||
<h2 class="text-base font-semibold text-gray-800 mb-3">
|
||||
<i class="fas fa-building text-emerald-500 mr-2"></i>협력업체
|
||||
@@ -130,8 +133,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkpurchase-accounts.js?v=20260312"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-accounts.js?v=2026031401"></script>
|
||||
<script>initAccountsPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>일용공 신청 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260312">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -35,7 +38,7 @@
|
||||
<div class="flex-1 min-w-0">
|
||||
<!-- 필터 및 추가 버튼 -->
|
||||
<div class="bg-white rounded-xl shadow-sm p-4 mb-5">
|
||||
<div class="flex flex-wrap items-end gap-3">
|
||||
<div class="flex flex-wrap items-end gap-3 filter-bar">
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">시작일</label>
|
||||
<input type="date" id="filterDateFrom" class="input-field px-3 py-2 rounded-lg text-sm">
|
||||
@@ -65,13 +68,14 @@
|
||||
<option value="영업">영업</option>
|
||||
</select>
|
||||
</div>
|
||||
<button onclick="loadDayLabor()" class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg text-sm hover:bg-gray-200">
|
||||
<i class="fas fa-search mr-1"></i>조회
|
||||
</button>
|
||||
<div class="flex-1"></div>
|
||||
<button onclick="openAddDayLabor()" class="px-4 py-2 bg-emerald-600 text-white rounded-lg text-sm hover:bg-emerald-700 font-medium">
|
||||
<i class="fas fa-plus mr-1"></i>일용공 신청
|
||||
</button>
|
||||
<div class="filter-actions">
|
||||
<button onclick="loadDayLabor()" class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg text-sm hover:bg-gray-200">
|
||||
<i class="fas fa-search mr-1"></i>조회
|
||||
</button>
|
||||
<button onclick="openAddDayLabor()" class="px-4 py-2 bg-emerald-600 text-white rounded-lg text-sm hover:bg-emerald-700 font-medium">
|
||||
<i class="fas fa-plus mr-1"></i>일용공 신청
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -144,8 +148,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkpurchase-daylabor.js?v=20260312"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-daylabor.js?v=2026031401"></script>
|
||||
<script>initDayLaborPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>대시보드 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260312">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -85,8 +88,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkpurchase-dashboard.js?v=20260312"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-dashboard.js?v=2026031401"></script>
|
||||
<script>initDashboard();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>작업 이력 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260313">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -61,8 +61,8 @@
|
||||
<div id="historyPagination" class="mt-4 flex justify-center gap-2"></div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tkpurchase-partner-history.js?v=20260313"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-partner-history.js?v=2026031401"></script>
|
||||
<script>initPartnerHistory();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>협력업체 포털 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260313a">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -81,8 +81,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313c"></script>
|
||||
<script src="/static/js/tkpurchase-partner-portal.js?v=20260313c"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-partner-portal.js?v=2026031401"></script>
|
||||
<script>initPartnerPortal();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>협력업체 관리 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260312">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -291,8 +294,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkpurchase-partner.js?v=20260312"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-partner.js?v=2026031401"></script>
|
||||
<script>initPartnerPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>작업일정 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260313aa">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -35,7 +38,7 @@
|
||||
<div class="flex-1 min-w-0">
|
||||
<!-- 필터 및 추가 버튼 -->
|
||||
<div class="bg-white rounded-xl shadow-sm p-4 mb-5">
|
||||
<div class="flex flex-wrap items-end gap-3">
|
||||
<div class="flex flex-wrap items-end gap-3 filter-bar">
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">업체 검색</label>
|
||||
<input type="text" id="filterCompany" class="input-field px-3 py-2 rounded-lg text-sm" placeholder="업체명">
|
||||
@@ -60,13 +63,14 @@
|
||||
<option value="rejected">반려</option>
|
||||
</select>
|
||||
</div>
|
||||
<button onclick="loadSchedules()" class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg text-sm hover:bg-gray-200">
|
||||
<i class="fas fa-search mr-1"></i>조회
|
||||
</button>
|
||||
<div class="flex-1"></div>
|
||||
<button onclick="openAddSchedule()" class="px-4 py-2 bg-emerald-600 text-white rounded-lg text-sm hover:bg-emerald-700 font-medium">
|
||||
<i class="fas fa-plus mr-1"></i>일정 등록
|
||||
</button>
|
||||
<div class="filter-actions">
|
||||
<button onclick="loadSchedules()" class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg text-sm hover:bg-gray-200">
|
||||
<i class="fas fa-search mr-1"></i>조회
|
||||
</button>
|
||||
<button onclick="openAddSchedule()" class="px-4 py-2 bg-emerald-600 text-white rounded-lg text-sm hover:bg-emerald-700 font-medium">
|
||||
<i class="fas fa-plus mr-1"></i>일정 등록
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -271,8 +275,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkpurchase-schedule.js?v=20260313a"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-schedule.js?v=2026031401"></script>
|
||||
<script>initSchedulePage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -63,3 +63,48 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; b
|
||||
.visit-table th, .visit-table td { padding: 0.5rem; }
|
||||
.hide-mobile { display: none; }
|
||||
}
|
||||
|
||||
/* Mobile menu */
|
||||
#mobileOverlay { z-index: 30; }
|
||||
#sideNav { transition: transform 0.3s ease; }
|
||||
@media (max-width: 1023px) {
|
||||
#sideNav {
|
||||
position: fixed; top: 3.5rem; left: 0; bottom: 0;
|
||||
width: 14rem; background: white; z-index: 40;
|
||||
transform: translateX(-100%);
|
||||
box-shadow: 2px 0 8px rgba(0,0,0,0.1);
|
||||
padding: 0.5rem; overflow-y: auto;
|
||||
display: flex !important; flex-direction: column; gap: 0.25rem;
|
||||
}
|
||||
#sideNav.mobile-open { transform: translateX(0); }
|
||||
}
|
||||
|
||||
/* Filter responsive */
|
||||
@media (max-width: 768px) {
|
||||
.filter-bar {
|
||||
display: grid !important; grid-template-columns: 1fr 1fr;
|
||||
gap: 0.5rem; align-items: end;
|
||||
}
|
||||
.filter-bar > div { width: 100%; }
|
||||
.filter-bar > div > input,
|
||||
.filter-bar > div > select { width: 100%; }
|
||||
.filter-actions {
|
||||
grid-column: 1 / -1; display: flex; gap: 0.5rem;
|
||||
}
|
||||
.filter-actions > * { flex: 1; }
|
||||
}
|
||||
|
||||
/* Table action button touch targets */
|
||||
@media (max-width: 768px) {
|
||||
.visit-table td:last-child button,
|
||||
.visit-table td:last-child a {
|
||||
display: inline-flex; align-items: center; justify-content: center;
|
||||
min-width: 36px; min-height: 36px; padding: 6px;
|
||||
}
|
||||
.visit-table td:last-child { gap: 2px; display: flex; flex-wrap: nowrap; justify-content: flex-end; align-items: center; }
|
||||
}
|
||||
|
||||
/* iOS zoom prevention */
|
||||
@media (max-width: 768px) {
|
||||
input, select, textarea { font-size: 16px !important; }
|
||||
}
|
||||
|
||||
@@ -84,6 +84,25 @@ function doLogout() {
|
||||
location.href = getLoginUrl() + '&logout=1';
|
||||
}
|
||||
|
||||
/* ===== Mobile Menu ===== */
|
||||
function toggleMobileMenu() {
|
||||
const nav = document.getElementById('sideNav');
|
||||
const overlay = document.getElementById('mobileOverlay');
|
||||
if (!overlay) {
|
||||
const o = document.createElement('div');
|
||||
o.id = 'mobileOverlay';
|
||||
o.className = 'fixed inset-0 bg-black bg-opacity-30 hidden';
|
||||
o.style.zIndex = '30';
|
||||
o.onclick = toggleMobileMenu;
|
||||
document.body.appendChild(o);
|
||||
toggleMobileMenu();
|
||||
return;
|
||||
}
|
||||
const open = nav.classList.toggle('mobile-open');
|
||||
overlay.classList.toggle('hidden', !open);
|
||||
document.body.style.overflow = open ? 'hidden' : '';
|
||||
}
|
||||
|
||||
/* ===== Navbar ===== */
|
||||
function renderNavbar() {
|
||||
const currentPage = location.pathname.replace(/\//g, '') || 'index.html';
|
||||
@@ -102,6 +121,12 @@ function renderNavbar() {
|
||||
return `<a href="${l.href}" class="nav-link flex items-center gap-3 px-4 py-2.5 rounded-lg text-sm transition-colors ${active ? 'active' : 'text-gray-600 hover:bg-gray-100'}">
|
||||
<i class="fas ${l.icon} w-5 text-center"></i><span>${l.label}</span></a>`;
|
||||
}).join('');
|
||||
// 모바일: nav-link 클릭 시 메뉴 닫기
|
||||
nav.querySelectorAll('.nav-link').forEach(a => {
|
||||
a.addEventListener('click', () => {
|
||||
if (nav.classList.contains('mobile-open')) toggleMobileMenu();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/* ===== State ===== */
|
||||
|
||||
@@ -120,7 +120,7 @@ async function renderScheduleCards() {
|
||||
<input type="text" id="checkinNames_${s.id}" class="input-field w-full px-3 py-2 rounded-lg text-sm" placeholder="홍길동, 김철수">
|
||||
</div>
|
||||
</div>
|
||||
<button onclick="doCheckIn(${s.id})" class="px-4 py-2 bg-emerald-600 text-white rounded-lg text-sm hover:bg-emerald-700">
|
||||
<button onclick="doCheckIn(${s.id})" class="w-full px-4 py-3 bg-emerald-600 text-white rounded-lg text-sm hover:bg-emerald-700">
|
||||
<i class="fas fa-play mr-1"></i>작업 시작
|
||||
</button>
|
||||
</div>
|
||||
@@ -295,7 +295,7 @@ function workerRowHtml(checkinId, idx, worker) {
|
||||
<input type="text" list="workerDatalist_${checkinId}" value="${escapeHtml(name)}" placeholder="작업자명" class="worker-name input-field flex-1 px-3 py-1.5 rounded-lg text-sm" data-pw-id="${pwId}">
|
||||
<input type="number" value="${hours}" step="0.5" min="0" max="24" class="worker-hours input-field w-20 px-2 py-1.5 rounded-lg text-sm text-center" placeholder="시간">
|
||||
<span class="text-xs text-gray-400">h</span>
|
||||
<button onclick="removeWorkerRow('${rowId}', ${checkinId})" class="text-gray-400 hover:text-red-500 text-sm"><i class="fas fa-times"></i></button>
|
||||
<button onclick="removeWorkerRow('${rowId}', ${checkinId})" class="text-gray-400 hover:text-red-500 text-sm p-2"><i class="fas fa-times"></i></button>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>업무현황 종합 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260313">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -97,8 +100,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tkpurchase-workreport-summary.js?v=20260313"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-workreport-summary.js?v=2026031401"></script>
|
||||
<script>initSummaryPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>업무현황 - TK 구매관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=20260312">
|
||||
<link rel="stylesheet" href="/static/css/tkpurchase.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-emerald-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-truck text-xl text-emerald-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 구매관리</h1>
|
||||
</div>
|
||||
@@ -35,7 +38,7 @@
|
||||
<div class="flex-1 min-w-0">
|
||||
<!-- 필터 -->
|
||||
<div class="bg-white rounded-xl shadow-sm p-4 mb-5">
|
||||
<div class="flex flex-wrap items-end gap-3">
|
||||
<div class="flex flex-wrap items-end gap-3 filter-bar">
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">업체</label>
|
||||
<select id="filterCompany" class="input-field px-3 py-2 rounded-lg text-sm">
|
||||
@@ -58,12 +61,14 @@
|
||||
<option value="true">확인완료</option>
|
||||
</select>
|
||||
</div>
|
||||
<button onclick="loadReports()" class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg text-sm hover:bg-gray-200">
|
||||
<i class="fas fa-search mr-1"></i>조회
|
||||
</button>
|
||||
<a href="/workreport-summary.html" class="px-4 py-2 bg-purple-50 text-purple-700 rounded-lg text-sm hover:bg-purple-100 border border-purple-200">
|
||||
<i class="fas fa-chart-bar mr-1"></i>종합
|
||||
</a>
|
||||
<div class="filter-actions">
|
||||
<button onclick="loadReports()" class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg text-sm hover:bg-gray-200">
|
||||
<i class="fas fa-search mr-1"></i>조회
|
||||
</button>
|
||||
<a href="/workreport-summary.html" class="px-4 py-2 bg-purple-50 text-purple-700 rounded-lg text-sm hover:bg-purple-100 border border-purple-200">
|
||||
<i class="fas fa-chart-bar mr-1"></i>종합
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -109,8 +114,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tkpurchase-core.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkpurchase-workreport.js?v=20260312"></script>
|
||||
<script src="/static/js/tkpurchase-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkpurchase-workreport.js?v=2026031401"></script>
|
||||
<script>initWorkReportPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -161,8 +164,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-checklist.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-checklist.js?v=2026031401"></script>
|
||||
<script>initChecklistPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>안전교육 - TK 안전관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tksafety.css?v=20260313">
|
||||
<link rel="stylesheet" href="/static/css/tksafety.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -187,8 +190,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-education.js?v=20260313"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-education.js?v=2026031401"></script>
|
||||
<script>initEducationPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -103,8 +106,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-entry-dashboard.js?v=1"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-entry-dashboard.js?v=2026031401"></script>
|
||||
<script>initEntryDashboard();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>방문 관리 - TK 안전관리</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tksafety.css?v=20260313">
|
||||
<link rel="stylesheet" href="/static/css/tksafety.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -83,10 +86,10 @@
|
||||
<!-- 인원 -->
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">인원</label>
|
||||
<div class="flex items-center gap-1">
|
||||
<button type="button" id="countMinus" class="w-9 h-9 flex items-center justify-center border rounded-lg hover:bg-gray-50 text-gray-600"><i class="fas fa-minus text-xs"></i></button>
|
||||
<div class="flex items-center gap-2">
|
||||
<button type="button" id="countMinus" class="w-11 h-11 flex items-center justify-center border rounded-lg hover:bg-gray-50 text-gray-600"><i class="fas fa-minus text-xs"></i></button>
|
||||
<input type="number" id="visitorCount" value="1" min="1" class="input-field w-14 text-center px-1 py-2 rounded-lg text-sm">
|
||||
<button type="button" id="countPlus" class="w-9 h-9 flex items-center justify-center border rounded-lg hover:bg-gray-50 text-gray-600"><i class="fas fa-plus text-xs"></i></button>
|
||||
<button type="button" id="countPlus" class="w-11 h-11 flex items-center justify-center border rounded-lg hover:bg-gray-50 text-gray-600"><i class="fas fa-plus text-xs"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 목적 -->
|
||||
@@ -221,7 +224,7 @@
|
||||
<button onclick="closeEditVisit()" class="text-gray-400 hover:text-gray-600"><i class="fas fa-times"></i></button>
|
||||
</div>
|
||||
<form id="editVisitForm">
|
||||
<div class="grid grid-cols-2 gap-3">
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-3">
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">방문자명</label>
|
||||
<input type="text" id="editVisitorName" class="input-field w-full px-3 py-2 rounded-lg text-sm" required>
|
||||
@@ -274,8 +277,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-visit.js?v=20260313"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-visit.js?v=2026031401"></script>
|
||||
<script>initVisitPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -66,3 +66,48 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; b
|
||||
.visit-table th, .visit-table td { padding: 0.5rem; }
|
||||
.hide-mobile { display: none; }
|
||||
}
|
||||
|
||||
/* Mobile menu */
|
||||
#mobileOverlay { z-index: 30; }
|
||||
#sideNav { transition: transform 0.3s ease; }
|
||||
@media (max-width: 1023px) {
|
||||
#sideNav {
|
||||
position: fixed; top: 3.5rem; left: 0; bottom: 0;
|
||||
width: 14rem; background: white; z-index: 40;
|
||||
transform: translateX(-100%);
|
||||
box-shadow: 2px 0 8px rgba(0,0,0,0.1);
|
||||
padding: 0.5rem; overflow-y: auto;
|
||||
display: flex !important; flex-direction: column; gap: 0.25rem;
|
||||
}
|
||||
#sideNav.mobile-open { transform: translateX(0); }
|
||||
}
|
||||
|
||||
/* Filter responsive */
|
||||
@media (max-width: 768px) {
|
||||
.filter-bar {
|
||||
display: grid !important; grid-template-columns: 1fr 1fr;
|
||||
gap: 0.5rem; align-items: end;
|
||||
}
|
||||
.filter-bar > div { width: 100%; }
|
||||
.filter-bar > div > input,
|
||||
.filter-bar > div > select { width: 100%; }
|
||||
.filter-actions {
|
||||
grid-column: 1 / -1; display: flex; gap: 0.5rem;
|
||||
}
|
||||
.filter-actions > * { flex: 1; }
|
||||
}
|
||||
|
||||
/* Table action button touch targets */
|
||||
@media (max-width: 768px) {
|
||||
.visit-table td:last-child button,
|
||||
.visit-table td:last-child a {
|
||||
display: inline-flex; align-items: center; justify-content: center;
|
||||
min-width: 36px; min-height: 36px; padding: 6px;
|
||||
}
|
||||
.visit-table td:last-child { gap: 2px; display: flex; flex-wrap: nowrap; justify-content: flex-end; align-items: center; }
|
||||
}
|
||||
|
||||
/* iOS zoom prevention */
|
||||
@media (max-width: 768px) {
|
||||
input, select, textarea { font-size: 16px !important; }
|
||||
}
|
||||
|
||||
@@ -81,6 +81,25 @@ function doLogout() {
|
||||
location.href = getLoginUrl() + '&logout=1';
|
||||
}
|
||||
|
||||
/* ===== Mobile Menu ===== */
|
||||
function toggleMobileMenu() {
|
||||
const nav = document.getElementById('sideNav');
|
||||
const overlay = document.getElementById('mobileOverlay');
|
||||
if (!overlay) {
|
||||
const o = document.createElement('div');
|
||||
o.id = 'mobileOverlay';
|
||||
o.className = 'fixed inset-0 bg-black bg-opacity-30 hidden';
|
||||
o.style.zIndex = '30';
|
||||
o.onclick = toggleMobileMenu;
|
||||
document.body.appendChild(o);
|
||||
toggleMobileMenu();
|
||||
return;
|
||||
}
|
||||
const open = nav.classList.toggle('mobile-open');
|
||||
overlay.classList.toggle('hidden', !open);
|
||||
document.body.style.overflow = open ? 'hidden' : '';
|
||||
}
|
||||
|
||||
/* ===== Navbar ===== */
|
||||
function renderNavbar() {
|
||||
const currentPage = location.pathname.replace(/\//g, '') || 'index.html';
|
||||
@@ -101,6 +120,12 @@ function renderNavbar() {
|
||||
return `<a href="${l.href}" class="nav-link flex items-center gap-3 px-4 py-2.5 rounded-lg text-sm transition-colors ${active ? 'active' : 'text-gray-600 hover:bg-gray-100'}">
|
||||
<i class="fas ${l.icon} w-5 text-center"></i><span>${l.label}</span></a>`;
|
||||
}).join('');
|
||||
// 모바일: nav-link 클릭 시 메뉴 닫기
|
||||
nav.querySelectorAll('.nav-link').forEach(a => {
|
||||
a.addEventListener('click', () => {
|
||||
if (nav.classList.contains('mobile-open')) toggleMobileMenu();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/* ===== State ===== */
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -211,7 +214,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-training.js"></script>
|
||||
<script>initTrainingPage();</script>
|
||||
</body>
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -181,8 +184,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-visit-management.js?v=2"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-visit-management.js?v=2026031401"></script>
|
||||
<script>initVisitManagementPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-blue-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-shield-alt text-xl text-blue-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 안전관리</h1>
|
||||
</div>
|
||||
@@ -145,8 +148,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksafety-core.js?v=3"></script>
|
||||
<script src="/static/js/tksafety-visit-request.js?v=2"></script>
|
||||
<script src="/static/js/tksafety-core.js?v=2026031401"></script>
|
||||
<script src="/static/js/tksafety-visit-request.js?v=2026031401"></script>
|
||||
<script>initVisitRequestPage();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>대시보드 - TK 행정지원</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=1">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -14,6 +14,9 @@
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-purple-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-building text-xl text-purple-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 행정지원</h1>
|
||||
</div>
|
||||
@@ -120,7 +123,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksupport-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tksupport-core.js?v=2026031401"></script>
|
||||
<script>
|
||||
let vacationTypes = [];
|
||||
|
||||
|
||||
@@ -48,3 +48,48 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; b
|
||||
.data-table th, .data-table td { padding: 0.5rem; }
|
||||
.hide-mobile { display: none; }
|
||||
}
|
||||
|
||||
/* Mobile menu */
|
||||
#mobileOverlay { z-index: 30; }
|
||||
#sideNav { transition: transform 0.3s ease; }
|
||||
@media (max-width: 1023px) {
|
||||
#sideNav {
|
||||
position: fixed; top: 3.5rem; left: 0; bottom: 0;
|
||||
width: 14rem; background: white; z-index: 40;
|
||||
transform: translateX(-100%);
|
||||
box-shadow: 2px 0 8px rgba(0,0,0,0.1);
|
||||
padding: 0.5rem; overflow-y: auto;
|
||||
display: flex !important; flex-direction: column; gap: 0.25rem;
|
||||
}
|
||||
#sideNav.mobile-open { transform: translateX(0); }
|
||||
}
|
||||
|
||||
/* Filter responsive */
|
||||
@media (max-width: 768px) {
|
||||
.filter-bar {
|
||||
display: grid !important; grid-template-columns: 1fr 1fr;
|
||||
gap: 0.5rem; align-items: end;
|
||||
}
|
||||
.filter-bar > div { width: 100%; }
|
||||
.filter-bar > div > input,
|
||||
.filter-bar > div > select { width: 100%; }
|
||||
.filter-actions {
|
||||
grid-column: 1 / -1; display: flex; gap: 0.5rem;
|
||||
}
|
||||
.filter-actions > * { flex: 1; }
|
||||
}
|
||||
|
||||
/* Table action button touch targets */
|
||||
@media (max-width: 768px) {
|
||||
.data-table td:last-child button,
|
||||
.data-table td:last-child a {
|
||||
display: inline-flex; align-items: center; justify-content: center;
|
||||
min-width: 36px; min-height: 36px; padding: 6px;
|
||||
}
|
||||
.data-table td:last-child { gap: 2px; display: flex; flex-wrap: nowrap; justify-content: flex-end; align-items: center; }
|
||||
}
|
||||
|
||||
/* iOS zoom prevention */
|
||||
@media (max-width: 768px) {
|
||||
input, select, textarea { font-size: 16px !important; }
|
||||
}
|
||||
|
||||
@@ -78,6 +78,25 @@ function doLogout() {
|
||||
location.href = getLoginUrl() + '&logout=1';
|
||||
}
|
||||
|
||||
/* ===== Mobile Menu ===== */
|
||||
function toggleMobileMenu() {
|
||||
const nav = document.getElementById('sideNav');
|
||||
const overlay = document.getElementById('mobileOverlay');
|
||||
if (!overlay) {
|
||||
const o = document.createElement('div');
|
||||
o.id = 'mobileOverlay';
|
||||
o.className = 'fixed inset-0 bg-black bg-opacity-30 hidden';
|
||||
o.style.zIndex = '30';
|
||||
o.onclick = toggleMobileMenu;
|
||||
document.body.appendChild(o);
|
||||
toggleMobileMenu();
|
||||
return;
|
||||
}
|
||||
const open = nav.classList.toggle('mobile-open');
|
||||
overlay.classList.toggle('hidden', !open);
|
||||
document.body.style.overflow = open ? 'hidden' : '';
|
||||
}
|
||||
|
||||
/* ===== Navbar ===== */
|
||||
function renderNavbar() {
|
||||
const currentPage = location.pathname.replace(/\//g, '') || 'index.html';
|
||||
@@ -95,6 +114,12 @@ function renderNavbar() {
|
||||
return `<a href="${l.href}" class="nav-link flex items-center gap-3 px-4 py-2.5 rounded-lg text-sm transition-colors ${active ? 'active' : 'text-gray-600 hover:bg-gray-100'}">
|
||||
<i class="fas ${l.icon} w-5 text-center"></i><span>${l.label}</span></a>`;
|
||||
}).join('');
|
||||
// 모바일: nav-link 클릭 시 메뉴 닫기
|
||||
nav.querySelectorAll('.nav-link').forEach(a => {
|
||||
a.addEventListener('click', () => {
|
||||
if (nav.classList.contains('mobile-open')) toggleMobileMenu();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/* ===== State ===== */
|
||||
|
||||
@@ -6,13 +6,16 @@
|
||||
<title>휴가 승인 - TK 행정지원</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=1">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<header class="bg-purple-700 text-white sticky top-0 z-50">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-purple-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-building text-xl text-purple-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 행정지원</h1>
|
||||
</div>
|
||||
@@ -192,7 +195,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksupport-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tksupport-core.js?v=2026031401"></script>
|
||||
<script>
|
||||
let reviewAction = '';
|
||||
let reviewRequestId = null;
|
||||
@@ -269,8 +272,8 @@
|
||||
<td class="hide-mobile max-w-[200px] truncate">${escapeHtml(r.reason || '-')}</td>
|
||||
<td class="hide-mobile text-gray-500 text-xs">${formatDate(r.created_at)}</td>
|
||||
<td class="text-right whitespace-nowrap">
|
||||
<button onclick="openReview(${r.request_id}, 'approve', '${escapeHtml(r.user_name || r.username)}', '${escapeHtml(r.vacation_type_name)}', '${formatDate(r.start_date)} ~ ${formatDate(r.end_date)}', ${r.days_used})" class="px-2.5 py-1 bg-green-500 text-white rounded text-xs hover:bg-green-600 mr-1">승인</button>
|
||||
<button onclick="openReview(${r.request_id}, 'reject', '${escapeHtml(r.user_name || r.username)}', '${escapeHtml(r.vacation_type_name)}', '${formatDate(r.start_date)} ~ ${formatDate(r.end_date)}', ${r.days_used})" class="px-2.5 py-1 bg-red-500 text-white rounded text-xs hover:bg-red-600">반려</button>
|
||||
<button onclick="openReview(${r.request_id}, 'approve', '${escapeHtml(r.user_name || r.username)}', '${escapeHtml(r.vacation_type_name)}', '${formatDate(r.start_date)} ~ ${formatDate(r.end_date)}', ${r.days_used})" class="px-3 py-1.5 bg-green-500 text-white rounded text-sm hover:bg-green-600 mr-1">승인</button>
|
||||
<button onclick="openReview(${r.request_id}, 'reject', '${escapeHtml(r.user_name || r.username)}', '${escapeHtml(r.vacation_type_name)}', '${formatDate(r.start_date)} ~ ${formatDate(r.end_date)}', ${r.days_used})" class="px-3 py-1.5 bg-red-500 text-white rounded text-sm hover:bg-red-600">반려</button>
|
||||
</td>
|
||||
</tr>
|
||||
`).join('');
|
||||
|
||||
@@ -6,13 +6,16 @@
|
||||
<title>휴가 신청 - TK 행정지원</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=1">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<header class="bg-purple-700 text-white sticky top-0 z-50">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-purple-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-building text-xl text-purple-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 행정지원</h1>
|
||||
</div>
|
||||
@@ -81,7 +84,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksupport-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tksupport-core.js?v=2026031401"></script>
|
||||
<script>
|
||||
async function initRequestPage() {
|
||||
if (!initAuth()) return;
|
||||
|
||||
@@ -6,13 +6,16 @@
|
||||
<title>내 휴가 현황 - TK 행정지원</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=1">
|
||||
<link rel="stylesheet" href="/static/css/tksupport.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<header class="bg-purple-700 text-white sticky top-0 z-50">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-14">
|
||||
<div class="flex items-center gap-3">
|
||||
<button id="mobileMenuBtn" onclick="toggleMobileMenu()" class="lg:hidden text-purple-200 hover:text-white">
|
||||
<i class="fas fa-bars text-xl"></i>
|
||||
</button>
|
||||
<i class="fas fa-building text-xl text-purple-200"></i>
|
||||
<h1 class="text-lg font-semibold">TK 행정지원</h1>
|
||||
</div>
|
||||
@@ -90,7 +93,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/tksupport-core.js?v=20260313"></script>
|
||||
<script src="/static/js/tksupport-core.js?v=2026031401"></script>
|
||||
<script>
|
||||
async function initStatusPage() {
|
||||
if (!initAuth()) return;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<link rel="preload" href="https://cdn.tailwindcss.com" as="script">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="/static/css/tkuser.css?v=20260224">
|
||||
<link rel="stylesheet" href="/static/css/tkuser.css?v=2026031401">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
@@ -74,6 +74,7 @@
|
||||
<i class="fas fa-bell mr-2"></i>알림 수신자
|
||||
</button>
|
||||
</div>
|
||||
<div class="tab-scroll-hint lg:hidden"></div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -101,7 +102,7 @@
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">비밀번호</label>
|
||||
<input type="password" id="newPassword" class="input-field w-full px-3 py-1.5 rounded-lg text-sm" placeholder="초기 비밀번호" required>
|
||||
</div>
|
||||
<div class="grid grid-cols-2 gap-3">
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-3">
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-gray-600 mb-1">부서</label>
|
||||
<select id="newDepartmentId" class="input-field w-full px-3 py-1.5 rounded-lg text-sm">
|
||||
@@ -165,7 +166,7 @@
|
||||
<div class="bg-white rounded-xl shadow-sm p-5">
|
||||
<div class="flex items-center justify-between mb-5">
|
||||
<h2 class="text-base font-semibold text-gray-800"><i class="fas fa-building text-slate-400 mr-2"></i>부서별 기본 권한</h2>
|
||||
<select id="deptPermSelect" class="input-field px-3 py-1.5 rounded-lg text-sm min-w-[200px]">
|
||||
<select id="deptPermSelect" class="input-field px-3 py-1.5 rounded-lg text-sm min-w-0 w-full sm:min-w-[200px] sm:w-auto">
|
||||
<option value="">부서 선택</option>
|
||||
</select>
|
||||
</div>
|
||||
@@ -595,9 +596,9 @@
|
||||
|
||||
<!-- ============ 작업 탭 ============ -->
|
||||
<div id="tab-tasks" class="hidden">
|
||||
<div class="flex gap-6" style="height: calc(100vh - 9rem);">
|
||||
<div class="flex flex-col lg:flex-row gap-6" style="height: calc(100vh - 9rem);">
|
||||
<!-- 공정 사이드바 -->
|
||||
<div class="w-64 flex-shrink-0 bg-white rounded-xl shadow-sm p-4 flex flex-col overflow-hidden">
|
||||
<div class="w-full lg:w-64 lg:flex-shrink-0 bg-white rounded-xl shadow-sm p-4 flex flex-col overflow-hidden">
|
||||
<div class="flex items-center justify-between mb-3">
|
||||
<div class="text-xs font-semibold text-gray-400 uppercase tracking-wider">공정</div>
|
||||
<button onclick="openWorkTypeModal()" class="text-xs text-slate-500 hover:text-slate-700 px-1.5 py-0.5 rounded hover:bg-gray-100" title="공정 추가"><i class="fas fa-plus"></i></button>
|
||||
@@ -1996,22 +1997,22 @@
|
||||
</div>
|
||||
|
||||
<!-- JS: Core (config, token, api, toast, helpers, init) -->
|
||||
<script src="/static/js/tkuser-core.js?v=20260313a"></script>
|
||||
<script src="/static/js/tkuser-core.js?v=2026031401"></script>
|
||||
<!-- JS: Tabs -->
|
||||
<script src="/static/js/tkuser-tabs.js?v=20260313"></script>
|
||||
<script src="/static/js/tkuser-tabs.js?v=2026031401"></script>
|
||||
<!-- JS: Individual modules -->
|
||||
<script src="/static/js/tkuser-users.js?v=20260313"></script>
|
||||
<script src="/static/js/tkuser-projects.js?v=20260224"></script>
|
||||
<script src="/static/js/tkuser-departments.js?v=20260224"></script>
|
||||
<script src="/static/js/tkuser-issue-types.js?v=20260224"></script>
|
||||
<script src="/static/js/tkuser-workplaces.js?v=20260305"></script>
|
||||
<script src="/static/js/tkuser-tasks.js?v=20260224"></script>
|
||||
<script src="/static/js/tkuser-vacations.js?v=20260224"></script>
|
||||
<script src="/static/js/tkuser-layout-map.js?v=20260305"></script>
|
||||
<script src="/static/js/tkuser-partners.js?v=20260312"></script>
|
||||
<script src="/static/js/tkuser-vendors.js?v=20260313"></script>
|
||||
<script src="/static/js/tkuser-consumables.js?v=20260313"></script>
|
||||
<script src="/static/js/tkuser-notificationRecipients.js?v=20260313b"></script>
|
||||
<script src="/static/js/tkuser-users.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-projects.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-departments.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-issue-types.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-workplaces.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-tasks.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-vacations.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-layout-map.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-partners.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-vendors.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-consumables.js?v=2026031401"></script>
|
||||
<script src="/static/js/tkuser-notificationRecipients.js?v=2026031401"></script>
|
||||
<!-- Boot -->
|
||||
<script>init();</script>
|
||||
</body>
|
||||
|
||||
@@ -16,3 +16,21 @@ body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; back
|
||||
.toast-message { transition: all 0.3s ease; }
|
||||
.fade-in { opacity: 0; transform: translateY(10px); transition: opacity 0.4s, transform 0.4s; }
|
||||
.fade-in.visible { opacity: 1; transform: translateY(0); }
|
||||
|
||||
/* Mobile responsive */
|
||||
@media (max-width: 768px) {
|
||||
#tabNav {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
scrollbar-width: none;
|
||||
padding: 0.25rem 0;
|
||||
position: relative;
|
||||
}
|
||||
#tabNav::-webkit-scrollbar { display: none; }
|
||||
#tabNav button { white-space: nowrap; flex-shrink: 0; font-size: 0.8rem; padding: 0.375rem 0.75rem; }
|
||||
.tab-scroll-hint {
|
||||
position: absolute; right: 0; top: 0; bottom: 0; width: 2rem;
|
||||
background: linear-gradient(to right, transparent, #fff);
|
||||
pointer-events: none;
|
||||
}
|
||||
input, select, textarea { font-size: 16px !important; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user