초기 커밋: 5130 레거시 시스템

- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
This commit is contained in:
2025-12-10 20:14:31 +09:00
commit aca1767eb9
6728 changed files with 1863265 additions and 0 deletions

128
output/css/mystyle.css Normal file
View File

@@ -0,0 +1,128 @@
textarea {
overflow: hidden;
resize: none; /* 사용자 크기 조절을 방지 */
}
/* 기본 스타일 설정 */
input[type="checkbox"],
input[type="radio"] {
transform: scale(1.3); /* 크기 확대 */
margin: 3px; /* 여백 추가 */
}
/* "readonly" 상태일 때 스타일 설정 */
.readonly-checkbox,
.readonly-radio {
pointer-events: none; /* 사용자 상호작용 비활성화 */
opacity: 1; /* 불투명도 설정 */
color: red;
}
/* 레이블 텍스트 크게 설정 */
label {
font-size: 1.2em; /* 글꼴 크기 확대 */
display: inline-block;
margin: 3px 0;
}
.w-40{
width: 40%!important;
}
.w-50{
width: 50%!important;
}
.w-60{
width: 60%!important;
}
.w-85{
width: 85%!important;
}
.viewNoBtn {
cursor : pointer;
}
/* 전체 모달 폰트 기본값 12px 유지 */
#fullscreenModal * {
font-size: 12px;
box-sizing: border-box;
}
/* 모달 배경 오버레이 */
#fullscreenModal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
}
/* 모달 내용 영역 (가운데 정렬) */
#fullscreenModal > div {
background: white;
width: 1920px;
margin: 40px auto;
padding: 20px;
border-radius: 8px;
position: relative;
}
/* 버튼 스타일 */
#fullscreenModal .btn {
padding: 2px 8px;
font-size: 12px;
cursor: pointer;
}
/* 테이블 관련 */
#fullscreenModal table {
width: 100%;
border-collapse: collapse;
}
#fullscreenModal table th,
#fullscreenModal table td {
padding: 4px;
vertical-align: middle;
font-size: 12px;
border: 1px solid #dee2e6;
}
#fullscreenModal table thead {
background-color: #f8f9fa;
}
/* 모달 내부 스크롤 */
#fullscreenModal .custom-modal-body {
padding: 8px;
flex: 1;
overflow-y: auto;
max-height: 800px;
}
/* 모달 열릴 때 바디 스크롤 방지 */
body.modal-open {
overflow: hidden;
}
/* 자동완성 리스트 스타일 */
/* 기존 스타일에 active 추가 */
.autocomplete-suggestions {
position: absolute;
z-index: 10000;
background: #fff;
border: 1px solid #ccc;
max-height: 200px;
overflow-y: auto;
}
.autocomplete-suggestion {
padding: 6px 12px;
cursor: pointer;
}
.autocomplete-suggestion:hover,
.autocomplete-suggestion.active {
background-color: #e9e9e9;
}
.tooltip .tooltip-inner {
font-size: 20px !important;
}

184
output/css/style.css Normal file
View File

@@ -0,0 +1,184 @@
textarea {
overflow: hidden;
resize: none; /* 사용자 크기 조절을 방지 */
}
/* 기본 스타일 설정 */
input[type="checkbox"],
input[type="radio"] {
transform: scale(1.2); /* 크기 확대 */
margin: 3px; /* 여백 추가 */
}
/* "readonly" 상태일 때 스타일 설정 */
.readonly-checkbox,
.readonly-radio {
pointer-events: none; /* 사용자 상호작용 비활성화 */
opacity: 1; /* 불투명도 설정 */
color: red;
}
/* 레이블 텍스트 크게 설정 */
label {
font-size: 1.1em; /* 글꼴 크기 확대 */
display: inline-block;
margin: 3px 0;
}
.w-40{
width: 40%!important;
}
.w-60{
width: 60%!important;
}
.hover-pointer{
cursor : pointer;
}
/* #estimate_screenDiv와 #estimate_slatDiv 안의 table에만 적용 */
#estimate_screenDiv .table td,
#estimate_slatDiv .table td {
white-space: normal; /* 텍스트가 셀 내부에서 줄바꿈이 가능하게 설정 */
overflow: visible; /* 넘치는 텍스트를 숨기지 않음 */
text-overflow: clip; /* 텍스트를 자르지 않음 */
max-width: none; /* 셀의 최대 너비를 제한하지 않음 */
word-wrap: break-word; /* 긴 단어를 줄바꿈 가능하게 설정 */
}
#estimate_screenDiv .table,
#estimate_slatDiv .table {
table-layout: auto; /* 셀의 너비를 내용에 맞게 자동으로 조정 */
width: auto; /* 테이블의 너비를 자동으로 설정 (부모 요소를 채우지 않음) */
min-width: 100%; /* 최소 너비는 부모 요소를 채우도록 설정 */
}
table, th, td {
border: 0.5px solid black !important; /* Bold border */
font-size: 12px !important;
white-space: nowrap;
}
.calculate-row {
background-color: #f0f0f0!important; /* Light gray background */
}
/* 전체 테이블에 대한 설정 */
table {
border-collapse: collapse;
}
/* 모든 td 요소에 적용되는 기본 패딩 및 행간 조정 */
td {
padding: 4px !important; /* 셀의 내부 여백을 줄임 */
line-height: 1.4 !important; /* 행간을 줄여서 상하단 여백을 줄임 */
}
/* 테이블의 상단과 하단 마진을 제거하여 전체 공백 줄이기 */
table, .d-flex {
margin-top: 0 !important;
margin-bottom: 0 !important;
}
/* 밝은 회색 배경을 가지는 th, td 요소에 적용할 클래스 */
.lightgray {
background-color: #d3d3d3 !important; /* 기존 lightgray보다 밝은 회색 */
color: black !important;
font-weight: bold !important;
}
/* 연한 노란색 배경에 검정색 굵은 글씨 */
.yellowBold {
background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */
color: black !important;
font-weight: bold !important;
}
/* 연한 노란색 배경에 붉은색 굵은 글씨 */
.yellowredBold {
background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */
color: red !important;
font-weight: bold !important;
}
/* 연한 파란색 배경에 적색 글씨 */
.blueBold {
background-color: hsl(160, 5%, 85%) !important; /* 연한 파란색 */
color: red !important;
font-weight: bold !important;
}
/* 연한 파란색 배경에 검정색 글씨 */
.blueBlackBold {
background-color: hsl(220, 60%, 90%) !important; /* 연한 파란색 */
color: black !important;
font-weight: bold !important;
}
/* 연한 주황색 배경에 붉은색 글씨 */
.orangeBold {
background-color: hsl(30, 100%, 85%) !important; /* 연한 주황색 */
color: red !important;
font-weight: bold !important;
}
/* 연한 주황색 배경에 검정 글씨 */
.orangeBlackBold {
background-color: hsl(30, 100%, 85%) !important; /* 연한 주황색 */
color: black !important;
font-weight: bold !important;
}
/* 연한 노란색 배경에 검정 굵은 글씨 */
.yellowblackBold {
background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */
color: black !important;
font-weight: bold !important;
}
/* 연한 녹색 배경에 붉은색 글씨 */
.greenredBold {
background-color: #90ee90 !important; /* 연한 녹색 (light green) */
color: red !important;
font-weight: bold !important;
}
/* 더 연한 녹색 배경에 검정 글씨 */
.greenblackBold {
background-color: hsl(120, 73%, 92%) !important; /* 기존보다 50% 더 연한 녹색 */
color: black !important;
font-weight: bold !important;
}
/* 더 연한 보라색 배경에 검정 글씨 */
.purpleblackBold {
background-color: hsl(270, 100%, 95%) !important; /* 연한 보라색 */
color: black !important;
font-weight: bold !important;
}
@media print {
body {
width: 210mm; /* A4 width */
height: 297mm; /* A4 height */
margin: 0; /* Remove default margin */
font-size: 10pt; /* Font size for printing */
}
table {
page-break-inside: auto !important;
}
tr {
page-break-inside: avoid !important;
page-break-after: auto !important;
}
thead {
display: table-header-group !important; /* 페이지 넘어가도 thead 유지 */
}
tfoot {
display: table-footer-group !important;
}
}
.avoid-break {
break-inside: avoid !important;
page-break-inside: avoid !important;
}