ソースを参照

우편번호찾기 추가

gagamel 5 年 前
コミット
5bcd67a5e3

+ 31 - 9
style24.admin/src/main/webapp/WEB-INF/views/business/SupplyCompanyForm.html

@@ -69,7 +69,7 @@
 			<!-- 버튼 배치 영역 -->
 			<ul class="panelBar">
 				<li class="right">
-					<button type="button" class="btn btn-default btn-lg" id="btnExcelDown">엑셀다운로드</button>
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
 				</li>
 			</ul>
 			<!-- //버튼 배치 영역 -->
@@ -137,7 +137,7 @@
 						<td colspan="3" rowspan="2">
 							<input type="text" name="bizZipcode"  class="w100" data-valid-name="우편번호" readonly="readonly"/>
 							&nbsp;&nbsp;&nbsp;
-							<button type="button" class="btn btn-info btn-sm" onclick="cfnOpenPostFindPopup();">우편번호찾기</button>
+							<button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr();">우편번호찾기</button>
 							<br>
 							<input type="text" name="bizBaseAddr" class="w300" maxlength="200" required="required" data-valid-name="사업장주소" readonly="readonly"/>
 							-
@@ -335,15 +335,15 @@
 		$('#detailForm textarea[name=remarks]').val(event.data.remarks);
 	}
 
-	// 신규버튼
-	$('#btnNew').on('click', function() {
-		$("#detailForm")[0].reset();
-	});
-
 	// 검색
 	$('#btnSearch').on('click', function() {
 		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
 	});
+	
+	// 신규버튼
+	$('#btnNew').on('click', function() {
+		$("#detailForm")[0].reset();
+	});
 
 	// 저장
 	$("#btnSave").on("click", function() {
@@ -351,8 +351,6 @@
 		if (!gagajf.validation('#detailForm'))
 			return false;
 
-// 		$('#detailForm input[name=useYn]').val($('#detailForm input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
-		
 		mcxDialog.confirm("저장하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -364,7 +362,31 @@
 			}
 		});
 	});
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('공급업체 목록', gridOptions);
+	});
 
+	/**
+	 * DAUM을 이용한 우편번호 팝업 레이어
+	 */
+	var fnOpenDaumAddr = function() {
+		let daumZip = new daum.Postcode({
+			oncomplete: function(data) {
+				// 우편번호와 주소 정보를 해당 필드에 넣는다.
+				$('#detailForm input[name=bizZipcode]').val(data.zonecode);
+				$('#detailForm input[name=bizBaseAddr]').val(cfnGetDaumRoadAddr(data));
+				$('#detailForm input[name=bizDtlAddr]').focus();
+				
+				cfnCloseDaumAddr();
+			},
+			width: '100%'
+		});
+		
+		cfnOpenDaumAddr(daumZip);
+	}
+	
 	$(document).ready(function() {
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);

+ 82 - 1
style24.admin/src/main/webapp/WEB-INF/views/common/fragments/footer.html

@@ -19,7 +19,88 @@
 <footer th:fragment="footer">
 	<span class="f-left"><strong>Copyright</strong> STYLE24 © 2020</span>
 	<span class="f-right">style24.com - <strong> Admin</strong></span>
-</footer>
 	
+	<!-- 우편번호찾기 레이 -->
+	<div id="zipcode_layer" style="display: none; position: fixed; overflow: hidden; -webkit-overflow-scrolling: touch; z-index: 9999;">
+		<img src="//i1.daumcdn.net/localimg/localimages/07/postcode/320/close.png" id="btnCloseLayer" style="cursor:pointer;position:absolute;right:-3px;top:-3px;z-index:1" onclick="cfnCloseDaumAddr();" alt="닫기 버튼">
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+let element_layer = document.getElementById('zipcode_layer');
+let cfnGetDaumRoadAddr = function(data) {
+	// 팝업에서 검색결과 항목을 클릭했을 때 실행할 코드를 작성하는 부분입니다.
+	// 예제를 참고하여 다양한 활용법을 확인해 보세요.
+	// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분
+
+	// 도로명 주소의 노출 규칙에 따라 주소를 조합한다.
+	// 내려오는 변수가 값이 없는 경우엔 공백('') 값을 가지므로, 이를 참고하여 분기한다.
+	let fullRoadAddr = data.roadAddress; // 도로명 주소 변수
+	let extraRoadAddr = ''; // 도로명 조합형 주소 변수
+
+	// 법정동명이 있을 경우 추가한다. (법정리는 제외)
+	// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
+	if (data.bname !== '' && /[동|로|가]$/g.test(data.bname)) {
+		extraRoadAddr += data.bname;
+	}
+
+	// 건물명이 있고, 공동주택일 경우 추가한다.
+	if (data.buildingName !== '' && data.apartment === 'Y') {
+		extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
+	}
+	
+	// 도로명, 지번 조합형 주소가 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
+	if (extraRoadAddr !== '') {
+		extraRoadAddr = ' (' + extraRoadAddr + ')';
+	}
+	
+	// 도로명, 지번 주소의 유무에 따라 해당 조합형 주소를 추가한다.
+	if (fullRoadAddr !== '') {
+		fullRoadAddr += extraRoadAddr;
+	}
+	
+	return fullRoadAddr;
+}
+
+let cfnOpenDaumAddr = function(daumZip) {
+	if ($('html').hasClass('is-ie')) {
+		daumZip.open();
+	} else {
+		daumZip.embed(element_layer);
+		
+		// iframe을 넣은 element를 보이게 한다.
+		element_layer.style.display = 'block';
+
+		// iframe을 넣은 element의 위치를 화면의 가운데로 이동시킨다.
+		cfnInitLayerPosition();
+	}
+}
+
+let cfnCloseDaumAddr = function() {
+	// iframe을 넣은 element를 안보이게 한다.
+	element_layer.style.display = 'none';
+}
+
+// 브라우저의 크기 변경에 따라 레이어를 가운데로 이동시키고자 하실때에는
+// resize이벤트나, orientationchange이벤트를 이용하여 값이 변경될때마다 아래 함수를 실행 시켜 주시거나,
+// 직접 element_layer의 top,left값을 수정해 주시면 됩니다.
+let cfnInitLayerPosition = function() {
+	let width = 420; //우편번호서비스가 들어갈 element의 width
+	let height = 470; //우편번호서비스가 들어갈 element의 height
+	let borderWidth = 1; //샘플에서 사용하는 border의 두께
+
+	// 위에서 선언한 값들을 실제 element에 넣는다.
+	element_layer.style.width = width + 'px';
+	element_layer.style.height = height + 'px';
+	element_layer.style.border = borderWidth + 'px solid';
+	
+	// 실행되는 순간의 화면 너비와 높이 값을 가져와서 중앙에 뜰 수 있도록 위치를 계산한다.
+	element_layer.style.left = (((window.innerWidth || document.documentElement.clientWidth) - width) / 2 - borderWidth) + 'px';
+	element_layer.style.top = (((window.innerHeight || document.documentElement.clientHeight) - height) / 2 - borderWidth) + 'px';
+}
+/*]]>*/
+</script>
+</footer>
+
 </body>
 </html>

+ 1 - 0
style24.admin/src/main/webapp/WEB-INF/views/common/fragments/header.html

@@ -46,6 +46,7 @@
 	<script type="text/javascript" src="/ux/plugins/dropzone/dropzone.js"></script>
 	<script type="text/javascript" src="/ux/plugins/c3/d3.v5.js"></script>
 	<script type="text/javascript" src="/ux/plugins/c3/c3.js"></script>
+	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
 	
 	<!-- Custom Common JS library -->
 	<script type="text/javascript" th:src="@{'/ux/js/admin.ui.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/ux/js/admin.ui.js"></script>