Files
sake/src/main/webapp/WEB-INF/views/sopmal/mbr/JoinAgreeTermsR.jsp
2025-12-18 14:13:40 +09:00

336 lines
13 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : JoinAgreeTermsR.jsp
Description : 회원가입 약관
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-02-05 최범식 최초 생성
2024-08-17 이대환 독립몰/통합몰 구분
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%-- 공통 include --%>
<jsp:include page="/WEB-INF/views/comm/Include.jsp"/>
</head>
<script type="text/javascript">
$(document).ready(function() {
$('#termCheckAll').prop('checked', false);
/* ********************************************************
* 약관 전체동의
******************************************************** */
$('#termCheckAll').click(function () {
if ($('#termCheckAll').is(':checked')) {
$('.termCheck').prop('checked', true);
$('[name=stplatDvCdAts]').val('Y');
} else {
$('.termCheck').prop('checked', false);
$('[name=stplatDvCdAts]').val('N');
}
});
$('.termCheck').click(function () {
if($('.termCheck:not(:checked)').length == 0) {
$('#termCheckAll').prop('checked', true);
} else {
$('#termCheckAll').prop('checked', false);
}
});
});
/* ********************************************************
* 회원가입 안내화면으로 이동(뒤로 가기)
******************************************************** */
const fn_move_joinGuidance = function() {
history.back();
if(history.length <= 1){
window.close();
}
}
/* ********************************************************
* 회원가입 화면으로 이동
******************************************************** */
const fn_move_joinC = function() {
if ($('[name="essntl"]:not(:checked)').length > 0) {
alert('[필수]항목을 체크해 주세요.');
return;
}
if ($('input[name="joinMthCd"]').length) {
disableButton('#submit');
if(!confirm('회원가입을 <spring:message code="confirm.common.predicate"/>')){
fn_regist_fail();
return;
}
let params = $('#termsForm').serialize();
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearch"/>',
data : params,
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
if(mbrWithDrawalList.length > 0) {
params = params + '&' + $.param({'extMember': mbrWithDrawalList[0].mbrInnb});
}
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertUsrJoinRegist"/>',
data : params,
success : function (result) {
const response = JSON.parse(result.resBody.result);
const errStatus = response.status;
if(errStatus === 500){
alert('회원가입에 실패하였습니다. 회원가입 안내 화면으로 돌아갑니다.');
location.replace('/sopmal/mbr/selectJoinGuidance');
fn_regist_fail();
return;
}
const mbrInnb = response.mbrInnb;
const marketingAgree = response.marketingAgree;
if (mbrInnb !== null) {
openSocialLoginPopup($('input[name="joinMthCd"]').val(), marketingAgree);
// location.replace('/sopmal/mbr/selectJoinCompleteR'+(marketingAgree=='Y'?'?stplatDvCdAts=Y':''));
}
}
});
}
});
}else{
$('#termsForm').attr('method', 'post');
$('#termsForm').attr('action', '<c:url value="/sopmal/mbr/selectJoinForm"/>');
$('#termsForm').submit();
}
}
/* ********************************************************
* 회원 가입 실패
******************************************************** */
const fn_regist_fail = function() {
enableButton('#submit');
}
/* ********************************************************
* 체크박스 값변경
******************************************************** */
const fn_set_checkbox = function(_target) {
if ($(_target).is(':checked')) {
$(_target).parent().find('.termBoolean').val('Y');
$(_target).parent().find('.termDisable').prop('disabled', false);
} else {
$(_target).parent().find('.termBoolean').val('N');
$(_target).parent().find('.termDisable').prop('disabled', true);
}
}
/* ********************************************************
* 약관 팝업 값 설정
******************************************************** */
const fn_set_termPop = function(termNm, index) {
$('#termNm').html('<c:if test="${integrated}">GC ONE </c:if>'+termNm);
$('#termCn').html($('#stplatCn'+index).html());
}
/* ********************************************************
* SNS 소셜 로그인
******************************************************** */
const openSocialLoginPopup = (provider, marketingAgree) => {
var accessUrl = '${accessUrl}';
var redirectUri = '/sopmal/mbr/selectJoinCompleteR'
+ '?joinMthCd='+(provider.length>5?provider.slice(3).toLowerCase():provider.toLowerCase())
+ (marketingAgree=='Y'?'&stplatDvCdAts=Y':'');
var width = 600;
var height = 600;
var left = (screen.width / 2) - (width / 2);
var top = (screen.height / 2) - (height / 2);
var url = '${ssoUrl}/oauth2/authorization/' + provider
+ '?redirect_uri=' + encodeURIComponent(redirectUri) + '&oauth2_type=login&access_url='+ encodeURIComponent(accessUrl);
window.open(url, 'SocialLoginPopup', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left);
}
const receiveMessage = (event) => {
if(event.origin !== "${ssoUrl}") {
return;
}
if(event.data.type === 'LOGIN_SUCCESS') {
window.location.href = event.data.redirectUrl;
}
}
window.addEventListener('message', receiveMessage, false);
</script>
<body>
<%-- 공통 Header --%>
<jsp:include page="/WEB-INF/views/comm/Header.jsp"/>
<!-- 헤더 영역(Type3) -->
<main>
<c:set var="terms" value="${resultMap.joinAgreeTerms}" />
<c:set var="sopmalInfo" value="${resultMap.sopmalInfo}" />
<c:set var="integrated" value="${sopmalInfo.sopmalTyCd == '01'}" />
<!-- 약관 세팅 -->
<div class="sub-wrapper">
<div class="sub-content">
<div class="page-title center">
<c:choose>
<c:when test="${integrated}">
<h2 class="page-title__title">GC ONE(통합회원) 가입</h2>
</c:when>
<c:otherwise>
<h2 class="page-title__title">회원가입</h2>
</c:otherwise>
</c:choose>
<div class="ck-content">
<c:out value="${sopmalInfo.joinGuidanceSj}" escapeXml="false"/>
</div>
</div>
<div class="signUpTerms">
<c:choose>
<c:when test="${integrated}">
<p class="signUpTerms__agreeText">GC ONE 회원 서비스 이용약관에 동의해 주세요.</p>
<div class="signUpTerms__all">
<div class="b-checkbox-container">
<label class="b-checkbox is-large checkbox">
<input type="checkbox" value="" id="termCheckAll">
<span class="check"></span>
<span class="control-label">GC ONE 통합회원 전체 동의</span>
</label>
</div>
<div class="signUpTerms__all__description">
<p>통합 회원과 제휴 브랜드의 가입 및 혜택 정보 수신 동의 내용을 확인하고 전체 동의합니다.</p>
<p class="important">※ 선택 항목에 대한 동의를 거부하더라도 통합 회원가입에는 영향을 미치지 않습니다.</p>
<p>단, 미동의 해당 제휴 브랜드는 이용 제한이 있거나 혜택을 받으실 수 없습니다</p>
</div>
</div>
<div class="signUpTerms__gcone">
<a class="signUpTerms__gcone__link" href="">
<p><em>GC ONE</em> 마일리지/ 혜택 통합 멤버십 서비스</p>
<svg viewBox="0 0 306 306" xml:space="preserve">
<path d="M0,277.7L28.3,306L266,68.3v131.7h40V0H106.1v40h131.7L0,277.7z"></path>
</svg>
</a>
<p class="signUpTerms__gcone__text">GC ONE은 친환경 제품, 안전성이 검증된 원료로 최고의 품질을 갖춘 브랜드만 제휴합니다.</p>
</div>
</c:when>
<c:otherwise>
<p class="signUpTerms__agreeText">서비스 이용약관에 동의해 주세요.</p>
<div class="signUpTerms__all">
<div class="b-checkbox-container">
<label class="b-checkbox is-large checkbox">
<input type="checkbox" value="" id="termCheckAll">
<span class="check"></span>
<span class="control-label">전체 동의</span>
</label>
</div>
<div class="signUpTerms__all__description">
<p>모두 확인하였으며 동의합니다.</p>
<p>전체 동의에는 필수 및 선택 정보에 대한 동의가 포함되어 있으며, 개별적으로 동의를 선택 하실 수 있습니다.</p>
<p class="important">※ 선택 항목에 대한 동의를 거부하시는 경우에도 서비스 이용이 가능합니다.</p>
</div>
</div>
</c:otherwise>
</c:choose>
<form id="termsForm">
<div class="signUpTerms__misc">
<c:if test="${not empty vo.joinMthCd}">
<input type="hidden" name="joinMthCd" value='<c:out value="${vo.joinMthCd}"/>'>
<input type="hidden" name="extrlIntrlckId" value='<c:out value="${vo.extrlIntrlckId}"/>'>
<input type="hidden" name="mbtlnb" value='<c:out value="${vo.mbtlnb}"/>'>
<input type="hidden" name="mbrNm" value='<c:out value="${vo.mbrNm}"/>'>
<input type="hidden" name="email" value='<c:out value="${vo.email}"/>'>
<input type="hidden" name="sex" value='<c:out value="${vo.sex}"/>'>
<input type="hidden" name="brthDe" value='<c:out value="${vo.brthDe}"/>'>
</c:if>
<c:choose>
<c:when test="${ not empty terms}">
<c:forEach items="${ terms }" var="term" varStatus="status">
<div class="signUpTerms__misc__item">
<div class="b-checkbox-container">
<label class="b-checkbox is-medium checkbox">
<input type="hidden" class="termDisable" name="sopmalStplatInnb" value='<c:out value="${term.sopmalStplatInnb}"/>'>
<input type="hidden" class="termDisable" name="stplatDvCds" value='<c:out value="${term.stplatDvCd}"/>'>
<input type="hidden" class="termDisable termBoolean" name="stplatDvCdAts" value="N">
<input class="termCheck" type="checkbox" <c:if test="${term.essntlAt == 'Y'}">name="essntl"</c:if> onchange="fn_set_checkbox(this);">
<span class="check"></span>
<span class="control-label">
[<c:if test="${term.essntlAt == 'Y'}">필수</c:if><c:if test="${term.essntlAt == 'N'}">선택</c:if>]
${term.cdNm}
</span>
</label>
</div>
<c:if test="${term.cnWritngAt == 'Y'}">
<a class="signUpTerms__misc__detail" href="#terms-pop" rel="modal:open" onclick="fn_set_termPop('${term.cdNm}', ${status.count}); return false;">보기</a>
<div id="stplatCn${status.count}" style="display:none"><c:out value="${term.stplatCn}" escapeXml="false"/></div>
</c:if>
</div>
</c:forEach>
</c:when>
</c:choose>
</div>
</form>
<div class="signUp__btnContainer-half">
<button type="button" class="btn xl full outline signUp__signUpBtn" onclick="fn_move_joinGuidance();">취소</button>
<button type="button" id="submit" class="btn xl full theme signUp__signUpBtn" onclick="fn_move_joinC();">동의하기</button>
</div>
<div class="signUp-promotion__introBox">
<p>
<span style="color:hsl(0,75%,60%);"><strong>※20歳未満の飲酒は法律で禁止されています。</strong></span><br>
<span style="color:hsl(0,75%,60%);"><strong>※20세 미만의 음주는 법으로 금지되어 있습니다.</strong></span>
</p>
</div>
</div>
</div>
</div>
</main>
<%-- 공통 Footer --%>
<jsp:include page="/WEB-INF/views/comm/Footer.jsp"/>
<!-- 이용약관 팝업 -->
<div id="terms-pop" class="modal default" style="max-width: 620px;">
<div class="modal-header">
<div class="modal-header__title" id="termNm"><c:if test="${integrated}">GC ONE </c:if></div>
</div>
<div class="modal-content">
<div class="terms_wrap ck-content" id="termCn"></div>
</div>
<div class="modal-footer">
<!-- <a href="#" rel="modal:close" class="btn large outline">닫기</a> -->
<a href="#" rel="modal:close" class="btn theme large">확인</a>
</div>
</div>
</body>
</html>