초기소스
This commit is contained in:
343
src/main/webapp/WEB-INF/views/comm/Footer.jsp
Normal file
343
src/main/webapp/WEB-INF/views/comm/Footer.jsp
Normal file
@@ -0,0 +1,343 @@
|
||||
<%@ 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" %>
|
||||
<footer class="footer">
|
||||
<div class="footer-top">
|
||||
<div class="footer-top__inner">
|
||||
<ul class="footer-top__link">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${topMenuList.ctgryDvCd eq '03'}">
|
||||
<li><a href='<c:out value="${topMenuList.url}"/>' onclick="setTopMenuCode()"
|
||||
<c:if test = "${fn:contains(topMenuList.url,'/sopmal/main/selectClause?stplatDvCd=02')}">class="footer-body__text01" </c:if>><c:out value="${topMenuList.ctgryNm}"/></a></li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
<c:if test = "${not empty footerInfo.footerInfo.familySite}">
|
||||
<select class="family-site-link" title="해당 셀렉트에 대한 설명">
|
||||
<option value="" disabled selected>FAMILY SITE</option>
|
||||
<c:forEach var = "familySite" items = "${footerInfo.footerInfo.familySite}">
|
||||
<option value="<c:out value="${familySite.familySiteUrl}"/>"><c:out value="${familySite.familySiteNm}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-body">
|
||||
<div class="footer-body__inner">
|
||||
|
||||
<c:set var="operBsnmInfo" value="${footerInfo.footerInfo.operBsnmInfo}"/>
|
||||
<c:set var="sleBsnmInfo" value="${footerInfo.footerInfo.sleBsnmInfo}"/>
|
||||
<c:set var="sopmalInfo" value="${footerInfo.footerInfo.sopmalInfo}"/>
|
||||
<c:set var="designSetup" value="${footerInfo.footerInfo.designSetup}"/>
|
||||
<c:set var="scriptSetup" value="${footerInfo.footerInfo.scriptSetup}"/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${ designSetup.lptManageSetupDvCd eq '01' }">
|
||||
|
||||
<c:set var="footerCn" value="${ designSetup.footerCn }"/>
|
||||
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{reprsntTelnb}', sopmalInfo.reprsntTelnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{reprsntEmail}', sopmalInfo.reprsntEmail) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscWkdayWorkTme}', sopmalInfo.cscWkdayWorkTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscLunchTme}', sopmalInfo.cscLunchTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscRstde}', sopmalInfo.cscRstde) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{cscTelnb}', sopmalInfo.cscTelnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{rejectTelnb}', sopmalInfo.rejectTelnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascEntrpsNm}', sopmalInfo.ascEntrpsNm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascWkdayWorkTme}', sopmalInfo.ascWkdayWorkTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascLunchTme}', sopmalInfo.ascLunchTme) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascZip}', sopmalInfo.ascZip) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascAdres}', sopmalInfo.ascAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{ascDtlAdres}', sopmalInfo.ascDtlAdres) }"/>
|
||||
|
||||
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operBsnmNm}', operBsnmInfo.bsnmNm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operBizrnb}', operBsnmInfo.bizrnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operReprsntvnm}', operBsnmInfo.reprsntvnm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operLnbAdres}', operBsnmInfo.lnbAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operRnmAdres}', operBsnmInfo.rnmAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operDtlAdres}', operBsnmInfo.dtlAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{operIndvdlinfoPrtcRspnberNm}', operBsnmInfo.indvdlinfoPrtcRspnberNm) }"/>
|
||||
|
||||
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleBsnmNm}', sleBsnmInfo.bsnmNm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleBizrnb}', sleBsnmInfo.bizrnb) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleReprsntvnm}', sleBsnmInfo.reprsntvnm) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleLnbAdres}', sleBsnmInfo.lnbAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleRnmAdres}', sleBsnmInfo.rnmAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleDtlAdres}', sleBsnmInfo.dtlAdres) }"/>
|
||||
<c:set var="footerCn" value="${ fn:replace(footerCn, '{sleIndvdlinfoPrtcRspnberNm}', sleBsnmInfo.indvdlinfoPrtcRspnberNm) }"/>
|
||||
|
||||
${footerCn}
|
||||
|
||||
</c:when>
|
||||
<c:when test="${ designSetup.lptManageSetupDvCd eq '02' }">
|
||||
<c:choose>
|
||||
<c:when test="${operBsnmInfo.bsnmInnb ne sleBsnmInfo.bsnmInnb}">
|
||||
<span class="footer-body__text01">
|
||||
판매사업자 : <c:out value="${sleBsnmInfo.bsnmNm}"/>
|
||||
</span>
|
||||
<p class="footer-body__text02">
|
||||
대표자 : <c:out value="${sleBsnmInfo.reprsntvnm}"/>
|
||||
주소:
|
||||
<c:choose>
|
||||
<c:when test="${not empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${not empty sleBsnmInfo.rnmAdres && empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${sleBsnmInfo.dtlAdres}"/>
|
||||
대표전화 : <c:out value="${sopmalInfo.reprsntTelnb}"/>
|
||||
대표이메일 :
|
||||
<a href="mailto:<c:out value='${sopmalInfo.reprsntEmail}'/>">
|
||||
<c:out value="${sopmalInfo.reprsntEmail}"/>
|
||||
</a>
|
||||
<br/>
|
||||
개인정보관리책임자 : <c:out value="${sleBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
사업자 등록번호: <c:out value="${sleBsnmInfo.bizrnb}"/>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value='${sleBsnmInfo.replaceBizrnb}'/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">
|
||||
[사업자정보확인]
|
||||
</a>
|
||||
통신판매업 신고번호 : <c:out value="${sleBsnmInfo.mobDclNb}"/>
|
||||
<br/>
|
||||
[ <a href="#selerInfo" rel="modal:open">판매자 정보</a> ]
|
||||
[ <a href="#indvdlInfoProcsModal" rel="modal:open" onclick="fn_get_indvdlInfoPorcsCn();">판매자 개인정보 처리방침</a> ]
|
||||
</p>
|
||||
<p class="footer-body__text03">
|
||||
통신판매중개사업자 : <c:out value="${operBsnmInfo.bsnmNm}"/>
|
||||
<br/>
|
||||
대표자 : <c:out value="${operBsnmInfo.reprsntvnm}"/>
|
||||
주소:
|
||||
<c:choose>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${operBsnmInfo.dtlAdres}"/>
|
||||
대표전화 : <c:out value="${operBsnmInfo.telnb}"/>
|
||||
대표이메일 :
|
||||
<a href="mailto:<c:out value='${operBsnmInfo.email}'/>">
|
||||
<c:out value="${operBsnmInfo.email}"/>
|
||||
</a>
|
||||
<br/>
|
||||
개인정보관리책임자 : <c:out value="${operBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
사업자 등록번호: <c:out value="${operBsnmInfo.bizrnb}"/>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value='${operBsnmInfo.replaceBizrnb}'/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">
|
||||
[사업자정보확인]
|
||||
</a>
|
||||
통신판매업 신고번호 : <c:out value="${operBsnmInfo.mobDclNb}"/>
|
||||
<br/>
|
||||
<c:out value="${operBsnmInfo.bsnmNm}"/>는 통신판매중개자이며, 통신판매의 당사자가 아닙니다.
|
||||
상품 및 거래와 관련한 의무와 책임은 판매자에게 있습니다.
|
||||
<br/>
|
||||
Copyright ⓒ<c:out value="${operBsnmInfo.bsnmNm}"/> All rights reserved.
|
||||
</p>
|
||||
<div class="footer-image-container">
|
||||
<%--
|
||||
<img src="/pc/images/푸터로고.png" alt="해당 이미지에 대한 설명">
|
||||
<div class="footer-image-container__misc">
|
||||
<img src="/pc/images/푸터이미지01.png" alt="해당 이미지에 대한 설명">
|
||||
<img src="/pc/images/푸터이미지02.png" alt="해당 이미지에 대한 설명">
|
||||
</div>
|
||||
--%>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="footer-body__text01">
|
||||
사업자명 : <c:out value="${operBsnmInfo.bsnmNm}"/>
|
||||
</span>
|
||||
<p class="footer-body__text02">
|
||||
대표자 : <c:out value="${operBsnmInfo.reprsntvnm}"/>
|
||||
주소:
|
||||
<c:choose>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test="${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${operBsnmInfo.dtlAdres}"/>
|
||||
대표전화 : <c:out value="${sopmalInfo.reprsntTelnb}"/>
|
||||
대표이메일 :
|
||||
<a href="mailto:<c:out value='${sopmalInfo.reprsntEmail}'/>">
|
||||
<c:out value="${sopmalInfo.reprsntEmail}"/>
|
||||
</a>
|
||||
<br/>
|
||||
개인정보관리책임자 : <c:out value="${operBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
사업자 등록번호: <c:out value="${operBsnmInfo.bizrnb}"/>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value='${operBsnmInfo.replaceBizrnb}'/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">
|
||||
[사업자정보확인]
|
||||
</a>
|
||||
통신판매업 신고번호 : <c:out value="${sleBsnmInfo.mobDclNb}"/>
|
||||
</p>
|
||||
<p class="footer-body__text03">
|
||||
Copyright ⓒ<c:out value="${sleBsnmInfo.bsnmNm}"/> All rights reserved.
|
||||
</p>
|
||||
<div class="footer-image-container">
|
||||
<%--
|
||||
<img src="/pc/images/푸터로고.png" alt="해당 이미지에 대한 설명">
|
||||
<div class="footer-image-container__misc">
|
||||
<img src="/pc/images/푸터이미지01.png" alt="해당 이미지에 대한 설명">
|
||||
<img src="/pc/images/푸터이미지02.png" alt="해당 이미지에 대한 설명">
|
||||
</div>
|
||||
--%>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:when>
|
||||
|
||||
|
||||
</c:choose>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<c:if test="${scriptSetup.scriptCnUseAt eq 'Y'}">
|
||||
${scriptSetup.scriptCn}
|
||||
</c:if>
|
||||
|
||||
|
||||
|
||||
<div id="selerInfo" class="modal alert" style="display: none; max-width: 600px;">
|
||||
<div class="modal-header">
|
||||
<div class="modal-header__title">판매자 정보</div>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="popModalContent__inner">
|
||||
<div class="popModalContent__reviewBenefit">
|
||||
<dl>
|
||||
<dt>상호명</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.bsnmNm}"/></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>대표자</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.reprsntvnm}"/></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>사업자등록번호</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.bizrnb}"/></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>통신판매업번호</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.mobDclNb}"/></dd>
|
||||
</dl>
|
||||
<c:if test = "${not empty sleBsnmInfo.bsnDclNb}">
|
||||
<dl>
|
||||
<dt>영업신고번호</dt>
|
||||
<dd><c:out value="${sleBsnmInfo.bsnDclNb}"/></dd>
|
||||
</dl>
|
||||
</c:if>
|
||||
<dl>
|
||||
<dt>사업장 소재지</dt>
|
||||
<dd><c:choose>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose><c:out value="${sleBsnmInfo.dtlAdres}"/></dd>
|
||||
</dl>
|
||||
<c:if test = "${footerInfo.footerInfo.sopmalInfo.cscTelnbOrdrPosblAt eq 'Y' && not empty footerInfo.footerInfo.sopmalInfo.cscTelnb}">
|
||||
<dl>
|
||||
<dt>고객센터</dt>
|
||||
<dd>
|
||||
<c:out value="${footerInfo.footerInfo.sopmalInfo.cscTelnb}"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</c:if>
|
||||
<dl>
|
||||
<dt>email</dt>
|
||||
<dd>
|
||||
<c:out value="${sleBsnmInfo.email}"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert-btn-container">
|
||||
<a href="#" rel="modal:close" class="alert-btn alert-btn--confirm">확인</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="indvdlInfoProcsModal" class="modal alert" style="display: none; max-width: 800px;">
|
||||
<div class="modal-header">
|
||||
<div class="modal-header__title">판매자 개인정보 처리 방침</div>
|
||||
</div>
|
||||
<div class="modal-content" id = "indvdlInfoProcsContent">
|
||||
<input type = "hidden" value = "N" id = "indvdlInfoProcsAjaxAt"/>
|
||||
</div>
|
||||
<div class="alert-btn-container">
|
||||
<a href="#" rel="modal:close" class="alert-btn alert-btn--confirm">확인</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
/*판매자 개인정보 처리방침 조회*/
|
||||
const fn_get_indvdlInfoPorcsCn = () => {
|
||||
const indvdlInfoProcsAjaxAt = $("#indvdlInfoProcsAjaxAt").val();
|
||||
if (indvdlInfoProcsAjaxAt === 'N') {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/main/selectIndvdlInfoProcsCn",
|
||||
data : {stplatDvCd : '08'},
|
||||
success: function (data) {
|
||||
data = data.resBody.result;
|
||||
data = JSON.parse(data);
|
||||
let clauseList = data.clauseList;
|
||||
if (clauseList) {
|
||||
let i = 0;
|
||||
clauseList.forEach(function (item) {
|
||||
if (i === 0) {
|
||||
$("#indvdlInfoProcsContent").append(item.stplatCn);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$("#indvdlInfoProcsContent").addClass("ck-content");
|
||||
}
|
||||
$("#indvdlInfoProcsAjaxAt").val("Y");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function setTopMenuCode() {
|
||||
document.cookie = "checkMenu=Y";
|
||||
}
|
||||
</script>
|
||||
|
||||
<c:if test="${sopmallInfo.shopInfo.sopmalCd eq 'DL'}">
|
||||
<script>
|
||||
(function(){var w=window;if(w.ChannelIO){return w.console.error("ChannelIO script included twice.");}var ch=function(){ch.c(arguments);};ch.q=[];ch.c=function(args){ch.q.push(args);};w.ChannelIO=ch;function l(){if(w.ChannelIOInitialized){return;}w.ChannelIOInitialized=true;var s=document.createElement("script");s.type="text/javascript";s.async=true;s.src="https://cdn.channel.io/plugin/ch-plugin-web.js";var x=document.getElementsByTagName("script")[0];if(x.parentNode){x.parentNode.insertBefore(s,x);}}if(document.readyState==="complete"){l();}else{w.addEventListener("DOMContentLoaded",l);w.addEventListener("load",l);}})();
|
||||
|
||||
|
||||
ChannelIO('boot', {
|
||||
"pluginKey": "f73ed102-2f9c-44ff-ab17-dc18045401a2" // fill your plugin key
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</c:if>
|
||||
1392
src/main/webapp/WEB-INF/views/comm/Header.jsp
Normal file
1392
src/main/webapp/WEB-INF/views/comm/Header.jsp
Normal file
File diff suppressed because it is too large
Load Diff
459
src/main/webapp/WEB-INF/views/comm/Include.jsp
Normal file
459
src/main/webapp/WEB-INF/views/comm/Include.jsp
Normal file
@@ -0,0 +1,459 @@
|
||||
<%@ page import="org.springframework.util.ObjectUtils" %>
|
||||
<%@ 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 : include.jsp
|
||||
Description : 통합관리자 CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-14 최범식 최초 생성
|
||||
--%>
|
||||
|
||||
<%-- CSS --%>
|
||||
|
||||
<!-- 모든 사이트 공통 -->
|
||||
<link rel="stylesheet" href="<c:url value='/pc/css/default.css'/>">
|
||||
|
||||
<!-- 네이버페이 확인용 css(실제 API 적용할땐 삭제하시면 됩니다.) -->
|
||||
<link rel="stylesheet" href="<c:url value='/pc/css/pay.css'/>">
|
||||
|
||||
|
||||
<!-- jquery -->
|
||||
<script src="<c:url value='/pc/vendor/jquery-3.7.1.min.js'/>"></script>
|
||||
|
||||
<!-- 슬라이드 -->
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/slick/slick.css'/>">
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/slick/slick-theme.css'/>">
|
||||
<script src="<c:url value='/pc/vendor/slick/slick.min.js'/>"></script>
|
||||
|
||||
<!-- 실시간검색 -->
|
||||
<script src="<c:url value='/pc/vendor/jquery.vticker.js'/>"></script>
|
||||
|
||||
<!-- 커스텀 셀렉트 박스 -->
|
||||
<script src="<c:url value='/pc/vendor/jquery-nice-select/jquery.nice-select.min.js'/>"></script>
|
||||
<link rel="stylesheet" href="<c:url value='/pc/vendor/jquery-nice-select/nice-select.css'/>">
|
||||
|
||||
<!-- 제이쿼리 모달 -->
|
||||
<script src="<c:url value='/pc/vendor/jquery-modal/jquery.modal.min.js'/>"></script>
|
||||
<link rel="stylesheet" href="<c:url value='/pc/vendor/jquery-modal/jquery.modal.min.css'/>">
|
||||
|
||||
<!-- 제이쿼리 모달 -->
|
||||
<script src="<c:url value='/pc/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<link rel="stylesheet" href="<c:url value='/pc/vendor/dropzone/dropzone.min.css'/>">
|
||||
|
||||
<!-- 스크립트 -->
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/js/sopmal/common.js'/>"></script>
|
||||
<script src="<c:url value='/pc/js/script.js'/>" defer></script>
|
||||
<script src="<c:url value='/js/sopmal/gcone.js'/>"></script>
|
||||
|
||||
<%--Web-App연동 스크립트--%>
|
||||
<script src="/mobile/js/bnft/common/Common_app.js" defer=""></script>
|
||||
|
||||
<!-- 파일 업로드 -->
|
||||
<script src="<c:url value='/js/sopmal/fileupload_comm.js'/>"></script>
|
||||
|
||||
<!--ckeditor-->
|
||||
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/uploadAdapter.js'/>"></script>
|
||||
|
||||
<!-- CK editor -->
|
||||
<link rel="stylesheet" href="<c:url value='/ckeditor/content.css'/>">
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
<style type="text/css">
|
||||
.ck.ck-editor {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Date Picker -->
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/jquery-ui/jquery-ui.min.css'/>">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/jquery-ui/jquery-ui.structure.css'/>">
|
||||
|
||||
<script src="<c:url value='/pc/vendor/jquery-ui/jquery-ui.min.js'/>"></script>
|
||||
|
||||
<!-- popModal -->
|
||||
<link rel="stylesheet" type="text/css" href="<c:url value='/pc/vendor/popModal/popModal.min.css'/>">
|
||||
<script src="<c:url value='/pc/vendor/popModal/popModal.min.js'/>"></script>
|
||||
<c:set var="meta" value="${sopmallInfo.shopInfo}"/>
|
||||
<!--파비콘,메타-->
|
||||
<%--파비콘--%>
|
||||
<c:choose>
|
||||
<c:when test="${fn:startsWith(meta.fviconCours, '/')}">
|
||||
<c:set var="fviconCours" value="${meta.fviconCours}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="fviconCours" value="/${meta.fviconCours}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<%--메타--%>
|
||||
<%--상품 타이틀 사용 여부 Y이면--%>
|
||||
<c:choose>
|
||||
<c:when test = "${sopmallInfo.shopInfo.metaGoodsAt eq 'Y' and fn:contains(accessUri,'/sopmal/goods/selectGoodsDtl')}">
|
||||
<c:set var = "metaGoodsSj" value="${sopmallInfo.shopInfo.metaGoodsSj}"/>
|
||||
<c:set var = "metaGoodsDc" value="${sopmallInfo.shopInfo.metaGoodsDc}"/>
|
||||
<c:set var = "metaGoodsKwrd" value="${sopmallInfo.shopInfo.metaGoodsKwrd}"/>
|
||||
<%--상품 명 있으면 set--%>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.goodsNm}">
|
||||
<c:set var="goodsNm" value="${resultMap.goodsDtl.goodsNm}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{goodsNm}', goodsNm)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{goodsNm}', goodsNm)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{goodsNm}', goodsNm)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{goodsNm}', '')}"/>
|
||||
<c:set var = "metaGoodsDc" value="${fn:replace(metaGoodsDc, '{goodsNm}', '')}"/>
|
||||
<c:set var = "metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{goodsNm}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<%--짧은 설명 있으면 set--%>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.srtDc}">
|
||||
<c:set var="srtDc" value="${resultMap.goodsDtl.srtDc}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{srtDc}', srtDc)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{srtDc}', srtDc)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{srtDc}', srtDc)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{srtDc}', '')}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{srtDc}', '')}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{srtDc}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.reprsntDc}">
|
||||
<c:set var="reprsntDc" value="${resultMap.goodsDtl.reprsntDc}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{reprsntDc}', reprsntDc)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{reprsntDc}', reprsntDc)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{reprsntDc}', reprsntDc)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{reprsntDc}', '')}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{reprsntDc}', '')}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{reprsntDc}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultMap.goodsDtl.kwrd}">
|
||||
<c:set var="kwrd" value="${resultMap.goodsDtl.kwrd}"/>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{kwrd}', kwrd)}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{kwrd}', kwrd)}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{kwrd}', kwrd)}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var = "metaGoodsSj" value="${fn:replace(metaGoodsSj, '{kwrd}', '')}"/>
|
||||
<c:set var="metaGoodsDc" value="${fn:replace(metaGoodsDc, '{kwrd}', '')}"/>
|
||||
<c:set var="metaGoodsKwrd" value="${fn:replace(metaGoodsKwrd, '{kwrd}', '')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<title>${metaGoodsSj}</title>
|
||||
<meta name="description" content="<c:out value="${metaGoodsDc}"/>">
|
||||
<meta name="keywords" content="<c:out value="${metaGoodsKwrd}"/>">
|
||||
<meta property="og:title" content="<c:out value="${metaGoodsSj}"/>">
|
||||
<meta property="og:description" content="<c:out value="${metaGoodsDc}"/>">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<title><c:out value="${meta.metaSj}"/></title>
|
||||
<meta name="description" content="<c:out value="${meta.metaDc}"/>">
|
||||
<meta name="keywords" content="<c:out value="${meta.metaKwrd}"/>">
|
||||
<meta property="og:title" content="<c:out value="${meta.metaSj}"/>">
|
||||
<meta property="og:description" content="<c:out value="${meta.metaDc}"/>">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<link rel="icon" href="<c:out value="${fviconCours}"/>">
|
||||
<meta name="robots" content="index,follow"/>
|
||||
|
||||
<%--상품상세 일 경우 파라미터 포함 전체 경로 --%>
|
||||
<c:set var="ogUrl" value=""/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(accessUri,'/sopmal/goods/selectGoodsDtl')}">
|
||||
<c:set var="ogUrl" value="${meta.pcDomnAdres}${accessUri}?goodsInnb=${pageContext.request.getParameter('goodsInnb')}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="ogUrl" value="${meta.pcDomnAdres}${accessUri}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<meta property="og:url" content="<c:out value="${ogUrl}"/>">
|
||||
<meta property="og:site_name" content="<c:out value="${meta.sopmalNm}"/>">
|
||||
|
||||
<%--상품 상세일 경우 상품 이미지, 그외 로고 --%>
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<c:set var="ogImage" value=""/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(accessUri,'/sopmal/goods/selectGoodsDtl')}">
|
||||
<c:set var="ogImage" value="${cdnurl}${fn:split(resultMap.goodsDtl.img, '|')[0]}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="ogImage" value="${ cdnurl }${ topBarInfo.topbar.topFilCours }/${ topBarInfo.topbar.topSysFilNm }"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<meta property="og:image" content="<c:out value="${ogImage}"/>">
|
||||
<meta property="og:type" content="website">
|
||||
<spring:eval expression="@environment.getProperty('meta-content.google.'+'${sopmallInfo.shopInfo.sopmalCd}')"
|
||||
var="googleMeta"/>
|
||||
<spring:eval expression="@environment.getProperty('meta-content.naver.'+'${sopmallInfo.shopInfo.sopmalCd}')"
|
||||
var="naverMeta"/>
|
||||
<spring:eval expression="@environment.getProperty('meta-content.facebook.'+'${sopmallInfo.shopInfo.sopmalCd}')"
|
||||
var="facebookMeta"/>
|
||||
<meta name="google-site-verification" content="${googleMeta}"/>
|
||||
<meta name="naver-site-verification" content="${naverMeta}"/>
|
||||
<meta name="facebook-domain-verification" content="${facebookMeta}"/>
|
||||
<script type="text/javascript">
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
const loding = function (isShow) {
|
||||
if (isShow) {
|
||||
$('.loadingImg').show();
|
||||
} else {
|
||||
$('.loadingImg').hide();
|
||||
}
|
||||
};
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX', true);
|
||||
$("#overlay").fadeIn();
|
||||
loding(true);
|
||||
},
|
||||
complete: function () {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function () {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
}, 500);
|
||||
},
|
||||
error: function (data, status, error) {
|
||||
fn_ajax_error(data, status, error);
|
||||
}
|
||||
});
|
||||
|
||||
//ajax error 공통 처리 함수
|
||||
//* 개별처리 필요 할 시 공통 함수 선언 후 개별 처리 할 수 있음
|
||||
function fn_ajax_error(data, status, error) {
|
||||
$("#overlay").fadeOut();
|
||||
loding(true);
|
||||
console.log(data);
|
||||
if (data?.responseJSON?.resBody?.message != null) {
|
||||
if (fn_check_json(data.responseJSON.resBody.message)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||
console.log(errorObject);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.message) {
|
||||
alert(data.responseJSON.resBody.message);
|
||||
}else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
console.log(errorObject);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (data.status !== 200) {
|
||||
if (data.status !== 0) {
|
||||
if(data.responseJSON.resBody.result){
|
||||
const result = JSON.parse(data.responseJSON.resBody.result);
|
||||
alert(result.errorMsg);
|
||||
}else{
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<%--광고스크립트--%>
|
||||
<%--광고스크립트 공통--%>
|
||||
<script src="<c:url value='/js/adscript/common/adscript_common.js'/>"></script>
|
||||
|
||||
<%--광고스크립트 광고 매체별--%>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscirpt_mobion.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_adn2dot0.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_criteo.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_googleAds.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_googleAnalytics.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_googleTagManager.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_kakaoMoments.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_meta.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_naverSrchAds.js'/>"></script>
|
||||
<script src="<c:url value='/js/adscript/admedia/adscript_tgscript.js'/>"></script>
|
||||
|
||||
<%--광고스크립트 트리거 액션--%>
|
||||
<script src="<c:url value='/js/adscript/trigger/adscript_trigger.js'/>"></script>
|
||||
|
||||
<%--광고 스크립트 실행 스크립트--%>
|
||||
<script src="<c:url value='/js/adscript/adscript.js'/>"></script>
|
||||
<%--theme적용--%>
|
||||
<link rel="stylesheet" type="text/css" href="${sopmallInfo.themaPath}">
|
||||
|
||||
<script>
|
||||
<%--장바구니 갯수 조회--%>
|
||||
fn_reflesh_cart_cnt()
|
||||
|
||||
|
||||
/*비밀번호 변경 알림 여부 확인*/
|
||||
$(document).ready(function () {
|
||||
|
||||
const url = '<c:url value="/sopmal/mbr/selectPasswordChng"/>';
|
||||
const originalUrl = window.location.href;
|
||||
let passwordAt = '<%=(String)session.getAttribute("passwordChngDeAt")%>'
|
||||
|
||||
if (passwordAt === 'Y') {
|
||||
location.href = url + '?originalUrl=' + encodeURIComponent(originalUrl);
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<%--광고스크립트 정보--%>
|
||||
<input type="hidden" id="adScriptDeviceTy" value="${deviceType}"/>
|
||||
<% String adscriptMbrId = "";
|
||||
if (!ObjectUtils.isEmpty(session.getAttribute("adscriptMbrId"))) {
|
||||
adscriptMbrId = session.getAttribute("adscriptMbrId").toString();
|
||||
request.setAttribute("adscriptMbrId", adscriptMbrId);
|
||||
|
||||
}%>
|
||||
<input type="hidden" id="adscriptMbrId" value="${adscriptMbrId}"/>
|
||||
<div id="mbrMarktClauseAgreeDiv"></div>
|
||||
|
||||
<script>
|
||||
|
||||
/*최초 로그인시 마케팅 수신동의를 받지 않았을 경우 마케팅 수신동의 팝업 띄우기*/
|
||||
$(document).ready(function () {
|
||||
const name = 'marktAgreeAt'
|
||||
const cookieValue = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
|
||||
const agreeAt = cookieValue ? cookieValue[2] : null;
|
||||
|
||||
//현재경로
|
||||
let locationUrl = window.location.pathname;
|
||||
|
||||
//마케팅 수신동의 여부가 없으면 마케팅 수신동의 여부 팝업 띄우기
|
||||
//회원 주문서 작성페이지에는 미노출함
|
||||
if (agreeAt === 'N' && !locationUrl.includes("selectMbrPurchsForm")) {
|
||||
|
||||
document.cookie = 'marktAgreeAt=P; path=/'
|
||||
|
||||
//해당팝업이 오픈된건 마케팅수신동의여부가 없어서 열림
|
||||
const stplatDvCd = '05'
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/mbr/selectMbrMarktAgreePopup",
|
||||
data: {stplatDvCd: stplatDvCd},
|
||||
success: function (data) {
|
||||
$('#mbrMarktClauseAgreePopup').remove();
|
||||
$('#mbrMarktClauseAgreeDiv').html(data)
|
||||
$('#mbrMarktClauseAgreePopup').modal()
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//회원 주문서 작성페이지에는 미노출 처리
|
||||
if (locationUrl.includes("selectMbrPurchsForm")) {
|
||||
document.cookie = 'marktAgreeAt=P; path=/'
|
||||
}
|
||||
})
|
||||
|
||||
//광고 수신동의여부 수정
|
||||
function fn_global_mbr_markt_agree_at(agreeAt) {
|
||||
|
||||
|
||||
//광고수신동의 여부 수정
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/mbr/updateMarkRecptnAgreUpdt",
|
||||
data: {marktRecptnAgreAt: agreeAt},
|
||||
success: function (data) {
|
||||
console.log(data)
|
||||
|
||||
const result = JSON.parse(data.resBody.result)
|
||||
|
||||
//신규회원가입쿠폰 발행되었을 경우 메시지
|
||||
if (result.status === '0') {
|
||||
|
||||
alert(result.message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mobile/images/loading.svg" alt="loading"></div>
|
||||
</div>
|
||||
74
src/main/webapp/WEB-INF/views/comm/admin/Header.jsp
Normal file
74
src/main/webapp/WEB-INF/views/comm/admin/Header.jsp
Normal file
@@ -0,0 +1,74 @@
|
||||
<%@ 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"%>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<a href="/admin/main">
|
||||
<img src="/admin/images/logo_default.png" alt="GC ONE 관리자">
|
||||
<span class="header__logo-title">통합관리자</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<a href="#notification-list-pop" rel="modal:open" class="header-right__notification">
|
||||
<i class="icon icon_notification"></i>
|
||||
<span class="visually-hidden">알림</span>
|
||||
<span class="number-badge">3</span>
|
||||
</a>
|
||||
<c:if test="${isAuthenticated}">
|
||||
<div class="header-right__user-info">
|
||||
<i class="icon icon_user-info"></i>
|
||||
<c:out value="${userNm}"/>님
|
||||
<div class="userInfo-float">
|
||||
<div class="userInfo-float__top">
|
||||
<i class="icon icon_user-info-big"></i>
|
||||
<div class="userInfo-float__info">
|
||||
<p class="userInfo-float__info-row">
|
||||
<c:out value="${userNm}"/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="userInfo-float__bottom">
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('','/admin/use/mngr/selectMngrInfoInqireForm')" class="btn outline sm">정보수정</a>
|
||||
<a href="/admin/logout" class="btn dark sm">로그아웃</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header__bottom">
|
||||
<nav class="header-nav">
|
||||
<div class="header-nav__fullMenu-trigger">
|
||||
<a class="header-nav__fullMenu-trigger-btn" href="#full-menu" rel="modal:open" style="pointer-events: none">
|
||||
<span>통합관리자시스템</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-nav__right">
|
||||
<ul>
|
||||
<c:if test="${!empty topMenuList}">
|
||||
<c:forEach var="topMenuList" items="${topMenuList.menuList}" varStatus="status">
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<li <c:if test="${topMenuCd eq topMenuList.menuCd}"> class="current" </c:if>>
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('<c:out value="${topMenuList.menuCd}"/>','<c:out value="${topMenuList.url}"/>')"><c:out value ="${topMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<script>
|
||||
function setTopMenuCode(topMenuCd, topMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/admin";
|
||||
document.cookie = "leftMenuCd=" + "" + "; path=/admin";
|
||||
document.cookie = "upperMenuCd=" + "" + "; path=/admin";
|
||||
document.cookie = "topMenuUrl=" + topMenuUrl + "; path=/admin";
|
||||
document.cookie = "checkMenu=Y" + "; path=/admin";
|
||||
window.location.href = topMenuUrl;
|
||||
}
|
||||
</script>
|
||||
190
src/main/webapp/WEB-INF/views/comm/admin/Include.jsp
Normal file
190
src/main/webapp/WEB-INF/views/comm/admin/Include.jsp
Normal file
@@ -0,0 +1,190 @@
|
||||
<%@ 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" %>
|
||||
|
||||
<%--
|
||||
Class Name : include.jsp
|
||||
Description : 통합관리자 CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-14 박철민 최초 생성
|
||||
--%>
|
||||
|
||||
<!-- CK editor -->
|
||||
<link rel="stylesheet" href="<c:url value='/ckeditor/content.css'/>">
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
<style type="text/css">
|
||||
.ck.ck-editor{
|
||||
width:100%;
|
||||
}
|
||||
</style>
|
||||
<%--파비콘 , 메타정보--%>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" type="image/png" href="\assets\favicon\gcone.ico">
|
||||
<title>GC ONE 통합관리자</title>
|
||||
|
||||
<%--mixed Contents 대응--%>
|
||||
<spring:eval expression="@environment.getProperty('spring.profiles.active')" var="profiles"/>
|
||||
<c:if test="${profiles eq 'stage'}">
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</c:if>
|
||||
|
||||
<%-- CSS --%>
|
||||
<link rel="stylesheet" href="/admin/css/style.css"> <!-- ADMIN CSS -->
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-nice-select/nice-select.css">
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-ui/jquery-ui.structure.css">
|
||||
<link rel="stylesheet" href="/admin/vendor/jquery-modal/jquery.modal.min.css">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/time-picker/timepicker.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/dropzone/dropzone.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/jstree/themes/default/style.min.css'/>">
|
||||
|
||||
<%-- JS --%>
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<%--<script src="/webjars/jquery/3.7.1/jquery.min.js"></script>--%>
|
||||
<script src="/admin/vendor/jquery-3.7.1.min.js""></script>
|
||||
<%--<script src="/webjars/jquery-nice-select/1.1.0/js/jquery.nice-select.min.js"></script> --%>
|
||||
<script src="/admin/vendor/jquery-nice-select/jquery.nice-select.min.js"></script>
|
||||
<%--<script src="/webjars/jquery-ui/jquery-ui.min.js"></script>--%>
|
||||
<script src="/admin/vendor/jquery-ui/jquery-ui.min.js"></script>
|
||||
<%--<script src="/webjars/jquery-modal/0.9.1/jquery.modal.min.js"></script>--%>
|
||||
<script src="/admin/vendor/jquery-modal/jquery.modal.min.js"></script>
|
||||
|
||||
<script src="<c:url value='/admin/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/time-picker/timepicker.min.js'/>"></script>
|
||||
<script src="<c:url value='/admin/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/chart.js/chart.umd.min.js'/>"></script>
|
||||
<script src="<c:url value='/admin/vendor/jstree/jstree.min.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/uploadAdapter.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.system.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.coreVector.js'/>"></script>
|
||||
|
||||
<script src="<c:url value='/admin/js/script.js'/>" defer></script> <!-- ADMIN 스크립트 함수 -->
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script> <!-- 공통 스크립트 함수 -->
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<script type="text/javascript">
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX', true);
|
||||
$("#overlay").fadeIn();
|
||||
},
|
||||
complete: function () {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function () {
|
||||
$("#overlay").fadeOut();
|
||||
}, 500);
|
||||
},
|
||||
error: function (data) {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
if (!data.responseJSON.resBody.result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info = function(obj, mbrInnb, mbrDvCd, modalDiv,sopmalCd){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/admin/use/mbr/selectMbrInfo'/>",
|
||||
data: {
|
||||
mbrDvCd : mbrDvCd,
|
||||
mbrInnb : mbrInnb,
|
||||
sopmalCd : sopmalCd
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
|
||||
$("#" + info).css({
|
||||
top: offset.top + element.outerHeight(), // 첫 번째 모달의 아래로 설정
|
||||
left: offset.left-150,
|
||||
width: $("#" + info).width() + 50,
|
||||
zIndex: 9998 // 첫 번째 모달보다 위에 표시되도록 설정
|
||||
});
|
||||
$("#" + info).show();
|
||||
}
|
||||
});
|
||||
};
|
||||
/**********************************************************************
|
||||
* CMR 레이어 팝업 닫기 버튼 클릭 이벤트
|
||||
**********************************************************************/
|
||||
$(document).on('click', '.mini-info-content__close', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest(".mini-info-content").hide();
|
||||
});
|
||||
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
$(document).on("click", '.loading', function(){
|
||||
loding(true);
|
||||
});
|
||||
|
||||
const loding = function(isShow) {
|
||||
if(isShow){
|
||||
$('.loding_wrap').show();
|
||||
}else{
|
||||
$('.loding_wrap').hide();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<!--로딩영역-->
|
||||
<div class="loding_wrap" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mngr/images/loding.gif" alt="loading"></div>
|
||||
</div>
|
||||
84
src/main/webapp/WEB-INF/views/comm/admin/Left.jsp
Normal file
84
src/main/webapp/WEB-INF/views/comm/admin/Left.jsp
Normal file
@@ -0,0 +1,84 @@
|
||||
<%@ 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"%>
|
||||
<aside class="side-nav">
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2">
|
||||
|
||||
<c:if test="${!empty leftMenuList}">
|
||||
<c:forEach var="leftMenuList" items="${leftMenuList.menuList}" varStatus="status">
|
||||
<!-- 선택한 TOP메뉴코드 -->
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴코드 -->
|
||||
<c:set var="leftMenuCd" value="${sessionScope.leftMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴의 상위 코드 -->
|
||||
<c:set var="upperMenuCd" value="${sessionScope.upperMenuCd}" />
|
||||
|
||||
<!-- 2뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'2' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<%-- 2뎁스 밑에 3뎁스가 있는 경우 Sample --%>
|
||||
<c:when test="${'1' eq leftMenuList.nextDepth3}">
|
||||
<c:set var="depth2MenuCd" value="${leftMenuList.menuCd}" />
|
||||
<c:choose>
|
||||
<c:when test="${depth2MenuCd eq upperMenuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="has-sub opened">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="has-sub">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<div class="depth2-title"><c:out value ="${leftMenuList.menuNm}"/></div>
|
||||
<ul class="depth3">
|
||||
</c:when>
|
||||
<%-- 2뎁스 밑에 3뎁스가 없는 경우 Sample --%>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a class="depth2-title" href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'3' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 1 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스가 끝나고 새로운 2뎁스가 시작되면 태그를 닫아준다-->
|
||||
<c:if test="${'1' eq leftMenuList.nextDepth2}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<script>
|
||||
function fn_select_left(topMenuCd, leftMenuCd, upperMenuCd, leftMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/admin";
|
||||
document.cookie = "leftMenuCd=" + leftMenuCd + "; path=/admin";
|
||||
document.cookie = "upperMenuCd=" + upperMenuCd + "; path=/admin";
|
||||
document.cookie = "leftMenuUrl=" + leftMenuUrl + "; path=/admin";
|
||||
document.cookie = "checkMenu=Y" + "; path=/admin";
|
||||
window.location.href = leftMenuUrl;
|
||||
}
|
||||
</script>
|
||||
340
src/main/webapp/WEB-INF/views/comm/crm/Header.jsp
Normal file
340
src/main/webapp/WEB-INF/views/comm/crm/Header.jsp
Normal file
@@ -0,0 +1,340 @@
|
||||
<%@ 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="spring" uri="http://www.springframework.org/tags" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<script>
|
||||
// 현재 창의 이름을 'crmWin'로 설정
|
||||
window.onload = function() {
|
||||
if (!window.name) {
|
||||
window.name = 'crmWin';
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function (){
|
||||
// 전화와 왔을 경우
|
||||
if (window.parent !== window) {
|
||||
var sopmalCd = parent.document.ValidForm.sopmalCd.value;
|
||||
// console.log('header > sopmalCd (쇼핑몰 이름, 로고 get) : ' + sopmalCd);
|
||||
// fn_select_sopmal_name(sopmalCd);
|
||||
}
|
||||
/*
|
||||
* crm버튼 선택 이벤트
|
||||
*/
|
||||
$(document).on('click', '#btnCrm', function() {
|
||||
const td = $(this).closest('td');
|
||||
|
||||
const mbrInnb = $(td).find('.mbrInnb').val();
|
||||
const mbrDvCd = $(td).find('.mbrDvCd').val();
|
||||
|
||||
fn_move_crm_cnslt(mbrInnb, mbrDvCd);
|
||||
});
|
||||
|
||||
$("#srchKyword").on('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_crm_mbr_popup(1);
|
||||
}
|
||||
});
|
||||
$("#mainSrchKyword").on('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_crm_mbr_popup(1);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 전화 쇼피몽 이름 창 닫기
|
||||
const fn_sopmal_bar_close = function() {
|
||||
$('#callSopmalNm').hide();
|
||||
}
|
||||
|
||||
// 쇼핑몰 이름 조회
|
||||
const fn_select_sopmal_name = function (sopmalCd) {
|
||||
const url = '<c:url value="/crm/main/selectSopmalNm"/>';
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: url,
|
||||
data: {
|
||||
sopmalCd : sopmalCd
|
||||
},
|
||||
success: function (data) {
|
||||
let result = JSON.parse(data.resBody.result);
|
||||
//콜 들어올 시 회색 바 노출
|
||||
let message = result.sopmalNm + ' 전화';
|
||||
$('#sopmalNm').text(message);
|
||||
$('#callSopmalNm').show();
|
||||
//해당 브랜드 로고 header로고에 등록
|
||||
if(!fn_is_empty(result.topFilCours)){
|
||||
const cdnurl = '${cdnurl}';
|
||||
const logoImgSrc = cdnurl + result.topFilCours + '/' + result.topSysFilNm;
|
||||
$("#crmMainLogo").attr("src",logoImgSrc);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// window.addEventListener('message', function(event) {
|
||||
// if(event.data.functionName == 'recordKeyLoad') {
|
||||
// fn_sopmal_bar_close()
|
||||
// }
|
||||
// }, false);
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************
|
||||
* CRM 회원 검색 조회
|
||||
*******************************************************/
|
||||
const fn_select_crm_mbr_popup = function () {
|
||||
const url = '<c:url value="/crm/main/selectCrmMbrSrchForm"/>';
|
||||
// 전화와 왔을 경우
|
||||
if (window.parent !== window) {
|
||||
var sopmalCd = parent.document.ValidForm.sopmalCd.value;
|
||||
$("#mainSopmalCd").val(sopmalCd);
|
||||
$("#ctiAt").val("Y");
|
||||
}
|
||||
let data = $('#mainMbrSrchFrom').serialize();
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: url,
|
||||
data: data,
|
||||
success: function (data) {
|
||||
$('#crmSearchPopup').remove();
|
||||
$('#popupDiv').html(data);
|
||||
$('#crmSearchPopup').modal();
|
||||
// $("#searchBtn").click();
|
||||
}
|
||||
});
|
||||
// 하나면 바로 이동
|
||||
// 여러개명 팝업 호출
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
* CRM 회원 검색 조회
|
||||
*******************************************************/
|
||||
const fn_select_crm_mbr_list = function (pageIndex, pageUnit, srchKywordDv, srchKyword) {
|
||||
if (srchKywordDv !== undefined && srchKywordDv !== '') {
|
||||
$('#popSrchKywordDv').val(srchKywordDv);
|
||||
}
|
||||
if (srchKyword !== undefined && srchKyword !== '') {
|
||||
$('#popSrchKyword').val(srchKyword);
|
||||
}
|
||||
|
||||
let dataStr;
|
||||
if (!pageIndex) {
|
||||
$('#mbrPopPageIndex').val(1);
|
||||
} else {
|
||||
$('#mbrPopPageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
if (!pageUnit) {
|
||||
dataStr = $('#mbrSrchForm').serialize();
|
||||
} else {
|
||||
if ($('#pageUnit').length) {
|
||||
$('#pageUnit').val(pageUnit);
|
||||
dataStr = $('#mbrSrchForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#mbrSrchForm').serialize() + '&pageUnit=' + pageUnit;
|
||||
}
|
||||
}
|
||||
$('#pageIndex').val(pageIndex);
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value="/crm/main/selectCrmMbrSrch"/>",
|
||||
data: dataStr,
|
||||
success: function (resultHtml) {
|
||||
$('#mbrPageDiv').html(resultHtml);
|
||||
let bool;
|
||||
if(fn_is_empty($("#popSrchKyword"))){
|
||||
bool = isValidPhoneNumber($("#mainSrchKyword").val().replaceAll('-',''));
|
||||
}else{
|
||||
bool = isValidPhoneNumber($("#popSrchKyword").val().replaceAll('-',''));
|
||||
}
|
||||
if (fn_return_parents_totcnt().totalRecordCount == 0 && $("#headerSrch").val() === 'phone' && bool) {//검색조건이 휴대폰번호이고 비회원이면 비회원으로 crm 넘어감
|
||||
fn_move_crm_cnslt('', '', $("#mainSrchKyword").val());
|
||||
} else if (fn_return_parents_totcnt().totalRecordCount == 1) {//회원 1명
|
||||
fn_move_crm_cnslt(fn_return_parents_totcnt().mbrInnb, fn_return_parents_totcnt().mbrDvCd);
|
||||
} else { //회원 다수
|
||||
$(".mbtlnb").each(function () {
|
||||
let mbtlnb = fn_format_mbtlnb($(this).text().trim());
|
||||
mbtlnb = mbtlnb.replace(/(\d{3})-(\d{4})-(\d{4})/, "$1-****-$3");
|
||||
$(this).text(mbtlnb);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
//휴대폰번호 숫자만 허용
|
||||
function isValidPhoneNumber(phoneNumber) {
|
||||
// 한국 전화번호 형식: 010-1234-5678, 02-123-4567 등
|
||||
const phoneRegex = /^[0-9]+$/;
|
||||
return phoneRegex.test(phoneNumber);
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
* 회원 목록 총 개수 반환
|
||||
*******************************************************/
|
||||
const fn_return_parents_totcnt = function () {
|
||||
let totCnt = $('#totCnt').val();
|
||||
|
||||
let mbrInnb = null;
|
||||
let mbrDvCd = null;
|
||||
|
||||
if (totCnt === '1') {
|
||||
mbrInnb = $('input[name="oneMbrInnb"]').val();
|
||||
mbrDvCd = $('input[name="oneMbrDvCD"]').val();
|
||||
}
|
||||
|
||||
const data = {
|
||||
totalRecordCount: totCnt,
|
||||
mbrInnb: mbrInnb,
|
||||
mbrDvCd: mbrDvCd
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
</script>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<%
|
||||
if(request.getCookies() != null){
|
||||
for(Cookie cookie : request.getCookies()){
|
||||
if("authSopmalCd".equals(cookie.getName())){
|
||||
request.setAttribute("cookieAuthSopmalCd", cookie.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var = "crmTopMenuList" items = "${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test = "${crmTopMenuList.expsrLcDvCd eq '01' && crmTopMenuList.sortOrdr eq '1'}">
|
||||
<a href="<c:out value="${crmTopMenuList.url}"/>" style="background:#eeeeee;margin-right: 18px;">
|
||||
<c:choose>
|
||||
<c:when test = "${not empty siteList && not empty cookieAuthSopmalCd}">
|
||||
<c:forEach var="site" items="${siteList}">
|
||||
<c:if test = "${cookieAuthSopmalCd eq site.sopmalCd}">
|
||||
<img src="<c:out value="${cdnurl}${site.topFilCours}/${site.topSysFilNm}"/>" alt="<c:out value="${site.sopmalNm}"/>">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<img src="/crm/images/logo_white.png" alt="GC ONE 관리자" id="crmMainLogo">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<span class="header__logo-title"><c:out value="${crmTopMenuList.menuNm}"/></span>
|
||||
</a>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="header-searchBar">
|
||||
<form id="mainMbrSrchFrom">
|
||||
<div class="header-searchBar__inner">
|
||||
<div class="header-searchBar__select">
|
||||
<select name="srchKywordDv" title="검색어 구분" id = "headerSrch">
|
||||
<option value="phone" selected>휴대전화</option>
|
||||
<option value="name">이름</option>
|
||||
<option value="id">아이디</option>
|
||||
<option value="email">이메일</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="header-searchBar__input" id ="mainSrchKyword" type="text" name="srchKyword" title="검색어 입력" placeholder="검색어를 입력하세요" value="<c:out value="${ mainVO.phone }"/>">
|
||||
<input type="hidden" name="sopmalCd" id="mainSopmalCd" value="<c:out value="${ mainVO.sopmalCd }"/>"/>
|
||||
<input type="hidden" name="ctiAt" id="ctiAt"/>
|
||||
<button class="header-searchBar__btn" type="button" id="srchBtn" onclick="fn_select_crm_mbr_popup(); return false;"><span class="visually-hidden">검색</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<ul class="header-crmLink">
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '01' && crmTopMenuList.sortOrdr ne '1'}">
|
||||
<c:choose>
|
||||
<c:when test = "${fn:contains(crmTopMenuList.url,'/sopmal/mbr/selectJoinGuidance')}"><%--회원등록은 사용자 url로 이동--%>
|
||||
<li><a onclick="fn_move_sopmal_bbs_list('','','<c:out value="${crmTopMenuList.url}"/>')" target="_blank" style="cursor:pointer"><c:out value="${crmTopMenuList.menuNm}"/></a></li>
|
||||
</c:when>
|
||||
<c:when test = "${fn:contains(crmTopMenuList.url,'/crm/ordr/selectMngrOrdrRegistForm')}"><%--주문등록--%>
|
||||
<li><a onclick="fn_move_mngr_ordr_regist_form('${cnsltVO.mbrInnb}','${cnsltVO.mbrDvCd}','${cnsltVO.mbtlnb}')" target="_blank" style="cursor:pointer"><c:out value="${crmTopMenuList.menuNm}"/></a></li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li><a href="<c:out value="${crmTopMenuList.url}"/>" target="_blank"><c:out value="${crmTopMenuList.menuNm}"/></a></li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="header-right__linkContainer">
|
||||
<a class="btn outline xsm" href="/mngr/main" title="관리자 바로가기" target="adminWin">
|
||||
<i class="icon icon_headerLaptop"></i>
|
||||
관리자 바로가기
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-right__user-info">
|
||||
<c:out value="${userNm}"/>님
|
||||
<div class="userInfo-float">
|
||||
<div class="userInfo-float__top">
|
||||
<i class="icon icon_user-info-big"></i>
|
||||
<div class="userInfo-float__info">
|
||||
<p class="userInfo-float__info-row">
|
||||
${userNm}
|
||||
</p>
|
||||
<p class="userInfo-float__info-row">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="userInfo-float__bottom">
|
||||
<a href="/mngr/setup/mngr/selectMngrInfoInqireForm" class="btn outline sm">정보수정</a>
|
||||
<a href="/logout" class="btn dark sm">로그아웃</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="header-right__logout" onclick="location.href='/logout'">
|
||||
<i class="icon icon_logout-white"></i>
|
||||
로그아웃
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id = 'popupDiv'></div>
|
||||
|
||||
<!-- crm 전화 쇼핑몰 이름 -->
|
||||
<div id="callSopmalNm" style="
|
||||
width:100%; height:35px;
|
||||
background-color:#ccc;
|
||||
position:absolute; top:0px;
|
||||
/* display: flex; */
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding-right: 10px;
|
||||
display: none;
|
||||
">
|
||||
<span id="sopmalNm" style="
|
||||
display: inline-block; /* 인라인 블록으로 변경 */
|
||||
line-height: 35px; /* 세로 중앙 정렬 */
|
||||
width: calc(100% - 100px); /* 버튼 공간을 고려한 너비 */
|
||||
text-align: center; /* 텍스트 중앙 정렬 */
|
||||
"></span>
|
||||
|
||||
<button onclick="fn_sopmal_bar_close();" style="
|
||||
position: absolute; /* 절대 위치로 설정 */
|
||||
right: 10px; /* 오른쪽 끝에서 약간 떨어짐 */
|
||||
line-height: 35px; /* 세로 중앙 정렬 */
|
||||
">닫기</button>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
</html>
|
||||
218
src/main/webapp/WEB-INF/views/comm/crm/Include.jsp
Normal file
218
src/main/webapp/WEB-INF/views/comm/crm/Include.jsp
Normal file
@@ -0,0 +1,218 @@
|
||||
<%@ 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"%>
|
||||
|
||||
<%--
|
||||
Class Name : include.jsp
|
||||
Description : CRM CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-25 김혜인 최초 생성
|
||||
--%>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<%--mixed Contents 대응--%>
|
||||
<spring:eval expression="@environment.getProperty('spring.profiles.active')" var="profiles"/>
|
||||
<c:if test="${profiles eq 'stage'}">
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</c:if>
|
||||
|
||||
<%-- CSS --%>
|
||||
<link rel="stylesheet" href="<c:url value='/crm/css/style.css'/>">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-nice-select/nice-select.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-ui/jquery-ui.structure.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-modal/jquery.modal.min.css">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/time-picker/timepicker.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/dropzone/dropzone.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/jstree/themes/default/style.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/ckeditor/content.css'/>">
|
||||
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
<style type="text/css">
|
||||
.ck.ck-editor{
|
||||
width:100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<%-- JS --%>
|
||||
<script src="/mngr/vendor/jquery-3.7.1.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-nice-select/jquery.nice-select.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-ui/jquery-ui.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-modal/jquery.modal.min.js"></script>
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/mngr/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/time-picker/timepicker.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<script src="<c:url value='/crm/js/script.js'/>" defer></script>
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script>
|
||||
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
||||
<script src="<c:url value='/ckeditor/ckeditor.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/chart.js/chart.umd.min.js'/>"></script>
|
||||
<script src="<c:url value='/admin/vendor/jstree/jstree.min.js'/>"></script>
|
||||
|
||||
<%--파비콘--%>
|
||||
<link rel="icon" type="image/png" href="\assets\favicon\gcone.ico">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>GC ONE 고객CRM</title>
|
||||
<script type="text/javascript">
|
||||
$.ajaxSetup({
|
||||
beforeSend : function(jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX',true);
|
||||
$("#overlay").fadeIn();
|
||||
loding(true);
|
||||
},
|
||||
complete : function() {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function(){
|
||||
$("#overlay").fadeOut();
|
||||
},500);
|
||||
loding(false);
|
||||
},
|
||||
error: function(data){
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
console.log(data);
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
if (!data.responseJSON.resBody.result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg);
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info = function(obj, mbrInnb, mbrDvCd, modalDiv){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/crm/mbr/selectMbrCrmInfoPopupForm'/>",
|
||||
data: {
|
||||
mbrDvCd : mbrDvCd,
|
||||
mbrInnb : mbrInnb
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
|
||||
$("#" + info).css({
|
||||
top: offset.top + element.outerHeight(), // 첫 번째 모달의 아래로 설정
|
||||
left: offset.left-150,
|
||||
width: $("#" + info).width() + 50,
|
||||
zIndex: 9998 // 첫 번째 모달보다 위에 표시되도록 설정
|
||||
});
|
||||
$("#" + info).show();
|
||||
}
|
||||
});
|
||||
};
|
||||
/**********************************************************************
|
||||
* CMR 레이어 팝업 닫기 버튼 클릭 이벤트
|
||||
**********************************************************************/
|
||||
$(document).on('click', '.mini-info-content__close', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest(".mini-info-content").hide();
|
||||
});
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
* 회원 crm정보 모달 : 상담 등록 이동
|
||||
****************************************************************/
|
||||
const fn_move_crm_cnslt = function(mbrInnb, mbrDvCd, nmbrMbtlnb, customer_record_key) {
|
||||
console.log("param 확인 : ", mbrInnb, mbrDvCd, customer_record_key);
|
||||
|
||||
let form = $('<form></form>');
|
||||
if(fn_is_empty(mbrDvCd)){//비회원
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbtlnb', value:nmbrMbtlnb}));
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbrTyCd', value:'02'}));
|
||||
}else{//회원
|
||||
$(form).append($('<input/>', {type: 'hidden', name: 'mbrInnb', value: mbrInnb}));
|
||||
$(form).append($('<input/>', {type: 'hidden', name: 'mbrDvCd', value: mbrDvCd}));
|
||||
}
|
||||
|
||||
//$(form).append($('<input/>', {type:'hidden', name:'customer_record_key', value:customer_record_key}));
|
||||
|
||||
|
||||
if (window.parent !== window) {
|
||||
console.log("부모 프레임이 있습니다.");
|
||||
|
||||
var uRecordKey = parent.document.ValidForm.Customer_CRecFile.value;
|
||||
console.log('uRecordKey : ' + uRecordKey);
|
||||
$(form).append($('<input/>', {type:'hidden', name:'customer_record_key', value:uRecordKey}));
|
||||
|
||||
} else {
|
||||
console.log("부모 프레임이 없습니다.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(form).attr('method', 'post');
|
||||
$(form).attr('action', '<c:url value="/crm/cnslt/selectCnsltDtlsForm"/>');
|
||||
|
||||
$(form).appendTo('body');
|
||||
|
||||
$(form).submit();
|
||||
$(form).remove();
|
||||
};
|
||||
|
||||
const loding = function(isShow) {
|
||||
if(isShow){
|
||||
$('.loadingImg').show();
|
||||
}else{
|
||||
$('.loadingImg').hide();
|
||||
}
|
||||
};
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
|
||||
</script>
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mngr/images/loding.gif" alt="loading"></div>
|
||||
</div>
|
||||
270
src/main/webapp/WEB-INF/views/comm/crm/Left.jsp
Normal file
270
src/main/webapp/WEB-INF/views/comm/crm/Left.jsp
Normal file
@@ -0,0 +1,270 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<script>
|
||||
$(document).ready(function (){
|
||||
/*발송팝업*/
|
||||
$(document).on("click",".sndng",function(){
|
||||
let url = $(this).val();
|
||||
let actionDv = '';
|
||||
let sndngInfo = '';
|
||||
if(url.indexOf("selectEmailSndngPopupForm") > 0){
|
||||
actionDv = 'email';
|
||||
if($("#mbrTyCd").val() === '01'){//회원일시 이메일 값 set
|
||||
sndngInfo = $("#leftEmail").val();
|
||||
}
|
||||
}else if (url.indexOf("selectMssageSndngPopupForm") > 0){
|
||||
actionDv = 'mssage';
|
||||
if ($("#mbrTyCd").val() === '02') {//회원일시 sms 값 set
|
||||
sndngInfo = $("#leftMbtlnb").val();
|
||||
}
|
||||
}else {
|
||||
actionDv = '';
|
||||
}
|
||||
if(actionDv !== ''){
|
||||
fn_select_sndng_target($(this).val(),actionDv,sndngInfo);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 회원 탈퇴 함수
|
||||
******************************************************** */
|
||||
const fn_regist_mbr_secsn = function () {
|
||||
let mbrInnb = [];
|
||||
mbrInnb.push($("#secsnMbrInnb").val());
|
||||
let mbrDvCd = [];
|
||||
mbrDvCd.push($("#secsnMbrDvCd").val())
|
||||
let secsnResn = $("input[name='secsnResn']").val();
|
||||
if (confirm('회원 탈퇴하시겠습니까?')) {
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: '<c:url value="/mngr/mbr/updateMbrSecsnUpdt"/>',
|
||||
data: {mbrarr: mbrInnb, mbrDvCdArr: mbrDvCd, secsnResn: secsnResn},
|
||||
success: function (data) {
|
||||
alert('정상적으로 탈퇴 되었습니다.');
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/*******************************************************
|
||||
* 회원 탈퇴 팝업 호출
|
||||
*******************************************************/
|
||||
const fn_secsn_popup = function (modalDivSltr, modalSlrt) {
|
||||
const data = null;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '<c:url value="/crm/mbr/selectMbrSecsnProcsPopupForm"/>',
|
||||
data: $("#leftForm").serializeArray(),
|
||||
success: function (data) {
|
||||
$(modalSlrt).remove();
|
||||
$(modalDivSltr).html(data);
|
||||
$(modalSlrt).modal();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* 발송 팝업 호출 메소드
|
||||
* url = 호출 url
|
||||
* targetParam = vo에 담을 변수 명
|
||||
* target = 해당 정보에 접근자 이름
|
||||
* IndvdlVal = 단일 회원 클릭시 정보
|
||||
*/
|
||||
const fn_select_sndng_target = (url,actionDv,sndngInfo) => {
|
||||
if(sndngInfo !== ''){
|
||||
let resultArr = [];
|
||||
resultArr.push({mbrInnb: $("#leftMbrInnb").val(), recpntNm: $("#leftMbrNm").val(), sndngInfo: sndngInfo});
|
||||
const sndngCnt = resultArr.length;
|
||||
const mbrInfo = JSON.stringify(resultArr);
|
||||
const encodedMbrInfo = encodeURIComponent(mbrInfo);
|
||||
PopupCenter(url + "?mbrInfo=" + encodedMbrInfo + "&sndngCnt=" + sndngCnt, '팝업', '1280', '840');
|
||||
}else{
|
||||
PopupCenter(url, '팝업', '1280', '840');
|
||||
}
|
||||
}
|
||||
// 메뉴 이동
|
||||
const fn_move_menu = (target) => {
|
||||
let url = $(target).attr("url");
|
||||
console.log(url);
|
||||
if (url) {
|
||||
$("#leftForm").attr("method", "post");
|
||||
$("#leftForm").attr("action", url);
|
||||
$("#leftForm").submit();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<%--회원인지 비회원인지 set--%>
|
||||
<c:choose>
|
||||
<c:when test = "${cnsltVO.mbrInnb > 0}"><%--회원--%>
|
||||
<c:set var = "mbrTyCd" value = "01"/>
|
||||
</c:when>
|
||||
<c:otherwise><%--비회원 --%>
|
||||
<c:set var = "mbrTyCd" value = "02"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<aside class="side-nav">
|
||||
<div class="header-fixed">
|
||||
<div class="header-fixed__logo">
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '01' && crmTopMenuList.sortOrdr eq '1'}">
|
||||
<a href="<c:out value="${crmTopMenuList.url}"/>">
|
||||
<span id = "sopmalLogo"><img src="/crm/images/logo_default.png" alt="GC ONE 관리자"></span>
|
||||
<span class="header__logo-title"><c:out value="${crmTopMenuList.menuNm}"/></span>
|
||||
</a>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2"><%--반복문--%>
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '02'}">
|
||||
<c:choose>
|
||||
<c:when test = "${mbrTyCd eq '01'}"><%--회원 메뉴 --%>
|
||||
<li class="<c:if test="${fn:contains(crmTopMenuList.url,accessUri)}">current</c:if> <c:if test = "${status.index % 3 == 0}">upper-line</c:if>"><%--메뉴 3개씩 나눠서 줄 처리--%>
|
||||
<a class="depth2-title" url="<c:out value="${crmTopMenuList.url}"/>" onclick="fn_move_menu(this);" style="cursor:pointer;" mbr="${mbr}"><%--비회원이면 회원 정보 메뉴이동 x--%>
|
||||
<c:out value="${crmTopMenuList.menuNm}"/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMbrActInfoInqire')}"> <%--활동정보--%>
|
||||
<span id="mbrActInfo"></span>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMbrOrdrListInqireForm')}"> <%--주문--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="rcpmnyWaitCnt" title="입금대기 주문건">0</span>
|
||||
<span class="depth2__number comma" id="exportWaitCnt" title="미출고완료 주문건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${(fn:contains(crmTopMenuList.url,'selectMbrRtngudRefndDtlsInqireForm'))}"> <%--반품/환불--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="refundCnt" title="미처리 반품/환불건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMlgDtlsForm')}"> <%--마일리지--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="totMlg"
|
||||
title="총 마일리지">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectCashDtlsForm')}"> <%--GC 머니--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="cashAmt"
|
||||
title="GC 머니">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectHoldCouponDtlsForm')}"> <%--쿠폰--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="couponCnt" title="사용가능 쿠폰 수">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectGoodsRvwInqireForm')}"> <%--상품후기--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="rvwCnt" title="상품 후기건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectGoodsInqryInqireForm')}"> <%--상품문의--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="qnaCnt" title="상품 문의건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectCnsltDtlsForm')}"> <%--상담--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="CnsltWaitCnt" title="미처리 상담건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:if test = "${ fn:contains(crmTopMenuList.url, 'selectCstmrInfoInqire')
|
||||
|| fn:contains(crmTopMenuList.url,'selectMbrOrdrListInqireForm')
|
||||
|| fn:contains(crmTopMenuList.url,'selectMbrRtngudRefndDtlsInqireForm')
|
||||
|| fn:contains(crmTopMenuList.url,'selectCnsltDtlsForm') }"><%--비회원 허용 메뉴 (주문,반품,상담)--%>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url, 'selectCstmrInfoInqire')}">
|
||||
<li>
|
||||
<a class="depth2-title" id="nmbrMbr">
|
||||
${cnsltVO.mbtlnb}
|
||||
</a>
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="<c:if test="${fn:contains(crmTopMenuList.url,accessUri)}">current</c:if> <c:if test = "${status.index % 3 == 0}">upper-line</c:if>"><%--메뉴 3개씩 나눠서 줄 처리--%>
|
||||
<a class="depth2-title" url="<c:out value="${crmTopMenuList.url}"/>" onclick="fn_move_menu(this);" style="cursor:pointer;"><%--비회원이면 회원 정보 메뉴이동 x--%>
|
||||
<c:out value="${crmTopMenuList.menuNm}"/>
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectMbrOrdrListInqireForm')}"> <%--주문--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="rcpmnyWaitCnt" title="입금대기 주문건">0</span>
|
||||
<span class="depth2__number comma" id="exportWaitCnt" title="미출고완료 주문건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${(fn:contains(crmTopMenuList.url,'selectMbrRtngudRefndDtlsInqireForm'))}"> <%--반품/환불--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="refundCnt"
|
||||
title="미처리 반품/환불건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${fn:contains(crmTopMenuList.url,'selectCnsltDtlsForm')}"> <%--상담--%>
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="CnsltWaitCnt" title="미처리 상담건">0</span>
|
||||
</div>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
<div class="side-nav__crmBtn-container" id="sndngDiv">
|
||||
<c:if test="${not empty crmMenuList.menuList}">
|
||||
<c:forEach var="crmTopMenuList" items="${crmMenuList.menuList}" varStatus="status">
|
||||
<c:if test="${crmTopMenuList.expsrLcDvCd eq '04'}">
|
||||
<button type="button"
|
||||
class="side-nav__crm-btn light <c:if test = "${fn:contains(crmTopMenuList.url,'ntcn')}">sndng</c:if>" <%--email,sms발송시 해당 팝업 체크--%>
|
||||
value="<c:out value="${crmTopMenuList.url}"/>">
|
||||
<c:out value="${crmTopMenuList.menuNm}"/>
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
<c:if test = "${mbrTyCd eq '01'}">
|
||||
<div class="side-nav__crmBtn-container" id="secsnModalDiv">
|
||||
<button class="side-nav__crm-btn dark" type="button" onclick="fn_secsn_popup('#secsnModalDiv', '#delete-account-pop');">회원탈퇴 처리</button>
|
||||
</div>
|
||||
</c:if>
|
||||
</nav>
|
||||
</aside>
|
||||
<form id = "leftForm">
|
||||
<c:choose>
|
||||
<c:when test = "${mbrTyCd eq '01'}">
|
||||
<input type="hidden" id="leftMbrInnb" name="mbrInnb" value="<c:out value="${cnsltVO.mbrInnb}"/>"/>
|
||||
<input type="hidden" id="leftMbrDvCd" name="mbrDvCd" value="<c:out value="${cnsltVO.mbrDvCd}"/>"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:if test = "${not empty cnsltVO.ordrInnb}">
|
||||
<input type="hidden" id="leftOrdrInnb" name= "ordrInnb" value = "<c:out value="${cnsltVO.ordrInnb}"/>"/>
|
||||
</c:if>
|
||||
<input type="hidden" id="leftMbrNm" name= "mbrNm" value = "<c:out value="${cnsltVO.mbrNm}"/>"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<input type="hidden" id="leftMbtlnb" name= "mbtlnb" value = "<c:out value="${cnsltVO.mbtlnb}"/>"/>
|
||||
<input type="hidden" id="leftEmail"/>
|
||||
<input type="hidden" id="mbrTyCd" value="${mbrTyCd}" name="mbrTyCd"/><%--콜 들어올 시 해당 sopmalCd로 이동--%>
|
||||
</form>
|
||||
<!-- 회원 탈퇴 모달 영역 -->
|
||||
<div id="secsnModalDiv">
|
||||
|
||||
</div>
|
||||
148
src/main/webapp/WEB-INF/views/comm/crm/Right.jsp
Normal file
148
src/main/webapp/WEB-INF/views/comm/crm/Right.jsp
Normal file
@@ -0,0 +1,148 @@
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ 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"%>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
let customer_record_key = '${ cnsltVO.customer_record_key }';
|
||||
let mbrInnb = '${cnsltVO.mbrInnb}';
|
||||
let mbrDvCd = '${cnsltVO.mbrDvCd}';
|
||||
|
||||
fn_regist_crm_cnslt_form(customer_record_key, mbrInnb, mbrDvCd);
|
||||
});
|
||||
|
||||
/******************************************************
|
||||
* CRM 상담 등록 폼
|
||||
*******************************************************/
|
||||
const fn_regist_crm_cnslt_form = function(customer_record_key, mbrInnb, mbrDvCd) {
|
||||
console.log("상담 등록 폼");
|
||||
let dataStr;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/crm/cnslt/selectCnsltRegistPopupForm"/>",
|
||||
data : {
|
||||
customer_record_key : customer_record_key,
|
||||
mbrInnb : mbrInnb,
|
||||
mbrDvCd : mbrDvCd
|
||||
},
|
||||
success:function(resultHtml) {
|
||||
$('#crmRegistPopupFormDiv').html(resultHtml);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 대분류 선태값에 따른 중분류 생성
|
||||
******************************************************** */
|
||||
const fn_select_lrgeClCd = function(cdValue, target) {
|
||||
console.log("cdValue : ", cdValue);
|
||||
let dataStr;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/crm/cnslt/selectCnsltRegistPopupFormCmmnCdArray"/>",
|
||||
data : dataStr,
|
||||
success:function(data) {
|
||||
console.log("data : ", data);
|
||||
let jsonData;
|
||||
|
||||
switch (cdValue) {
|
||||
case '01':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList01;
|
||||
break;
|
||||
case '02':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList02;
|
||||
break;
|
||||
case '03':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList03;
|
||||
break;
|
||||
case '04':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList04;
|
||||
break;
|
||||
case '05':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList05;
|
||||
break;
|
||||
case '06':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList06;
|
||||
break;
|
||||
case '07':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList07;
|
||||
break;
|
||||
case '08':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList08;
|
||||
break;
|
||||
}
|
||||
console.log("jsonData : ", jsonData);
|
||||
|
||||
fn_create_selectBox(jsonData, target);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 중분류 셀렉트 생성
|
||||
******************************************************** */
|
||||
function fn_create_selectBox(jsonData, tartget) {
|
||||
$('#middlClCdDiv').empty();
|
||||
console.log("jsonData f : ", jsonData);
|
||||
let trClone = '';
|
||||
trClone = '<select name="middlCl" title="중분류">'
|
||||
+ '<option value="" selected disabled>선택</option>'
|
||||
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
trClone +=' <option value="' + jsonData[i].cd + '">' + jsonData[i].cdNm + '</option>';
|
||||
}
|
||||
|
||||
trClone += '</select>';
|
||||
|
||||
$('#middlClCdDiv').append(trClone);
|
||||
$('#middlClCdDiv > select').niceSelect();
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 상담 등록
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
const data = $('#registForm').serialize();
|
||||
console.log("data : ", data);
|
||||
if (confirm('상담을 <spring:message code="confirm.common.insert"/>')) {
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/crm/cnslt/insertCnsltRegist"/>',
|
||||
data: data,
|
||||
success: function (result) {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
if($("#mbrTyCd").val() !== '02'){ //회원 조회
|
||||
const mbrInnb = '<c:out value="${cnsltVO.mbrInnb}"/>';
|
||||
const mbrDvCd = '<c:out value="${cnsltVO.mbrDvCd}"/>';
|
||||
location.href="/crm/cnslt/selectCnsltDtlsForm?mbrInnb="+mbrInnb+"&mbrDvCd="+mbrDvCd;
|
||||
}else{ //비회원 조회
|
||||
const mbtlnb = '<c:out value="${cnsltVO.mbtlnb}"/>';
|
||||
const mbrTyCd = '<c:out value="${cnsltVO.mbrTyCd}"/>';
|
||||
location.href="/crm/cnslt/selectCnsltDtlsForm?mbtlnb="+mbtlnb+"&mbrTyCd="+mbrTyCd;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
const fn_only_num = function(target) {
|
||||
//숫자만 허용
|
||||
target.val(target.val().replace(/[^0-9]/g, ''));
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="crmRegistPopupFormDiv">
|
||||
|
||||
</div>
|
||||
17
src/main/webapp/WEB-INF/views/comm/csc/CscLeft.jsp
Normal file
17
src/main/webapp/WEB-INF/views/comm/csc/CscLeft.jsp
Normal file
@@ -0,0 +1,17 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
|
||||
<aside class="sub-left-menu">
|
||||
<h2 class="sub-left-menu__title"><button type = "button" onclick="location.href='/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=csc&bbsId=notice'">고객센터</button></h2>
|
||||
<div class="sub-left-menu__list">
|
||||
<ul class="sub-left-menu__sub-list customer">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${topMenuList.ctgryDvCd eq '04'}">
|
||||
<li><a class = "cscMenu" href='<c:out value="${topMenuList.url}"/>' id = "<c:out value="${topMenuList.bbsId}"/>"><c:out value="${topMenuList.ctgryNm}"/></a></li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
51
src/main/webapp/WEB-INF/views/comm/itrnt/Header.jsp
Normal file
51
src/main/webapp/WEB-INF/views/comm/itrnt/Header.jsp
Normal file
@@ -0,0 +1,51 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<a href="/itrnt">
|
||||
<img src="<c:url value="/itrnt/images/logo_default.png"/>" alt="GC ONE 관리자">
|
||||
<span class="header__logo-title">인트라넷</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<button class="header-right__user-info">
|
||||
<i class="icon icon_user-info"></i>
|
||||
<c:out value="${userNm}"/>님
|
||||
</button>
|
||||
<button class="header-right__logout" onclick="location.href='/logout'">
|
||||
<i class="icon icon_logout"></i>
|
||||
로그아웃
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header__bottom">
|
||||
<nav class="header-nav">
|
||||
<div class="header-nav__right">
|
||||
<ul>
|
||||
<c:if test="${!empty topMenuList}">
|
||||
<c:forEach var="topMenuList" items="${topMenuList.menuList}" varStatus="status">
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<li <c:if test="${topMenuCd eq topMenuList.menuCd}"> class="current" </c:if>>
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('<c:out value="${topMenuList.menuCd}"/>','<c:out value="${topMenuList.url}"/>')"><c:out value ="${topMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<script>
|
||||
function setTopMenuCode(topMenuCd, topMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/itrnt";
|
||||
document.cookie = "leftMenuCd=" + "" + "; path=/itrnt";
|
||||
document.cookie = "upperMenuCd=" + "" + "; path=/itrnt";
|
||||
document.cookie = "topMenuUrl=" + topMenuUrl + "; path=/itrnt";
|
||||
document.cookie = "checkMenu=Y" + "; path=/itrnt";
|
||||
window.location.href = topMenuUrl;
|
||||
}
|
||||
</script>
|
||||
225
src/main/webapp/WEB-INF/views/comm/itrnt/Include.jsp
Normal file
225
src/main/webapp/WEB-INF/views/comm/itrnt/Include.jsp
Normal file
@@ -0,0 +1,225 @@
|
||||
<%@ 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"%>
|
||||
|
||||
<%--
|
||||
Class Name : Include.jsp
|
||||
Description : 인트라넷 CSS 및 JS 공통 include
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-18 유재현 최초 생성
|
||||
--%>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GC ONE 인트라넷</title>
|
||||
|
||||
<%--mixed Contents 대응--%>
|
||||
<spring:eval expression="@environment.getProperty('spring.profiles.active')" var="profiles"/>
|
||||
<c:if test="${profiles eq 'stage'}">
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</c:if>
|
||||
<!-- CK editor -->
|
||||
<script src='/ckeditor/ckeditor.js' data-cke-editor="editor"></script>
|
||||
<script src='/ckeditor/uploadAdapter.js' data-cke-editor="editor"></script>
|
||||
<link rel="stylesheet" href="/ckeditor/content.css">
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
|
||||
<%--파비콘--%>
|
||||
<link rel="icon" type="image/png" href="\assets\favicon\gcone.ico">
|
||||
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/itrnt/css/style.css">
|
||||
<link rel="stylesheet" href="/itrnt/vendor/jquery-nice-select/nice-select.css">
|
||||
<link rel="stylesheet" href="/itrnt/vendor/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="/itrnt/vendor/jquery-ui/jquery-ui.structure.css">
|
||||
<link rel="stylesheet" href="/itrnt/vendor/jquery-modal/jquery.modal.min.css">
|
||||
<link rel="stylesheet" href="<c:url value='/itrnt/vendor/time-picker/timepicker.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/itrnt/vendor/dropzone/dropzone.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/itrnt/vendor/jstree/themes/default/style.min.css'/>">
|
||||
|
||||
<!-- JS -->
|
||||
<script src="/itrnt/vendor/jquery-3.7.1.min.js"></script>
|
||||
<script src="/itrnt/vendor/jquery-nice-select/jquery.nice-select.min.js"></script>
|
||||
<script src="/itrnt/vendor/jquery-ui/jquery-ui.min.js"></script>
|
||||
<script src="/itrnt/vendor/jquery-modal/jquery.modal.min.js"></script>
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/time-picker/timepicker.min.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/jstree/jstree.min.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/chart.js/chart.umd.min.js'/>"></script>
|
||||
<script src="<c:url value='/itrnt/vendor/emoji-mart/browser.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.system.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.coreVector.js'/>"></script>
|
||||
|
||||
|
||||
<script src="<c:url value='/itrnt/js/script.js'/>" defer></script> <!-- itrnt 스크립트 함수 -->
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script> <!-- 공통 스크립트 함수 -->
|
||||
|
||||
<script type="text/javascript">
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX', true);
|
||||
$("#overlay").fadeIn();
|
||||
loding(true);
|
||||
},
|
||||
complete: function () {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function () {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
}, 500);
|
||||
},
|
||||
error: function (data) {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
|
||||
console.log("data");
|
||||
console.log(data);
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
|
||||
if (!data.responseJSON.resBody.result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg); //vo 에러메시지 띄움
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log("here 1");
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log("here 2");
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
$(document).on("click", '.loading', function(){
|
||||
loding(true);
|
||||
});
|
||||
|
||||
const loding = function(isShow) {
|
||||
if(isShow){
|
||||
$('.loadingImg').show();
|
||||
}else{
|
||||
$('.loadingImg').hide();
|
||||
}
|
||||
};
|
||||
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info = function(obj, mbrInnb, mbrDvCd, modalDiv){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/itrnt/crm/mbr/selectMbrCrmInfoPopupForm'/>",
|
||||
data: {
|
||||
mbrDvCd : mbrDvCd,
|
||||
mbrInnb : mbrInnb
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
|
||||
const modal = $("#" + info);
|
||||
const modalWidth = modal.outerWidth(); // 모달 너비
|
||||
const buttonWidth = element.outerWidth(); // 버튼 너비
|
||||
const buttonHeight = element.outerHeight(); // 버튼 높이
|
||||
const viewportWidth = $(window).width(); // 화면 너비
|
||||
|
||||
// 모달의 기본 위치: 버튼 아래, 버튼 오른쪽 끝 정렬
|
||||
let leftPosition = offset.left + buttonWidth - modalWidth;
|
||||
let topPosition = offset.top + buttonHeight; // 버튼 바로 아래
|
||||
|
||||
// 화면 경계를 넘어가면 조정
|
||||
if (leftPosition < 0) {
|
||||
leftPosition = offset.left; // 화면 왼쪽으로 넘어가면 버튼 왼쪽 정렬
|
||||
} else if (leftPosition + modalWidth > viewportWidth) {
|
||||
leftPosition = offset.left + buttonWidth - modalWidth; // 화면 오른쪽 경계
|
||||
}
|
||||
|
||||
modal.css({
|
||||
top: topPosition, // 버튼 아래로 위치
|
||||
left: leftPosition, // 오른쪽 끝에 맞추거나 화면 경계에 조정
|
||||
position: 'absolute', // 화면 기준 고정 위치
|
||||
zIndex: 9998 // 화면 위로 표시
|
||||
});
|
||||
|
||||
modal.show();
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_move_crm = function(mbrInnb, mbrDvCd){
|
||||
let form = $('<form></form>');
|
||||
$(form).append($('<input/>', {type: 'hidden', name: 'mbrInnb', value: mbrInnb}));
|
||||
$(form).append($('<input/>', {type: 'hidden', name: 'mbrDvCd', value: mbrDvCd}));
|
||||
|
||||
$(form).attr('method', 'post');
|
||||
$(form).attr('action', '/itrnt/crm/mbr/selectCstmrInfoInqire');
|
||||
|
||||
$(form).appendTo('body');
|
||||
|
||||
$(form).submit();
|
||||
$(form).remove();
|
||||
};
|
||||
</script>
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mngr/images/loding.gif" alt="loading"></div>
|
||||
</div>
|
||||
82
src/main/webapp/WEB-INF/views/comm/itrnt/Left.jsp
Normal file
82
src/main/webapp/WEB-INF/views/comm/itrnt/Left.jsp
Normal file
@@ -0,0 +1,82 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<aside class="side-nav">
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2">
|
||||
|
||||
<c:if test="${!empty leftMenuList}">
|
||||
<c:forEach var="leftMenuList" items="${leftMenuList.menuList}" varStatus="status">
|
||||
<!-- 선택한 TOP메뉴코드 -->
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴코드 -->
|
||||
<c:set var="leftMenuCd" value="${sessionScope.leftMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴의 상위 코드 -->
|
||||
<c:set var="upperMenuCd" value="${sessionScope.upperMenuCd}" />
|
||||
|
||||
<!-- 2뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'2' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<%-- 2뎁스 밑에 3뎁스가 있는 경우 Sample --%>
|
||||
<c:when test="${'1' eq leftMenuList.nextDepth3}">
|
||||
<c:set var="depth2MenuCd" value="${leftMenuList.menuCd}" />
|
||||
<c:choose>
|
||||
<c:when test="${depth2MenuCd eq upperMenuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="has-sub opened">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="has-sub">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<div class="depth2-title"><c:out value ="${leftMenuList.menuNm}"/></div>
|
||||
<ul class="depth3">
|
||||
</c:when>
|
||||
<%-- 2뎁스 밑에 3뎁스가 없는 경우 Sample --%>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a class="depth2-title" href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'3' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 1 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스가 끝나고 새로운 2뎁스가 시작되면 태그를 닫아준다-->
|
||||
<c:if test="${'1' eq leftMenuList.nextDepth2}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
<script>
|
||||
function fn_select_left(topMenuCd, leftMenuCd, upperMenuCd, leftMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/itrnt";
|
||||
document.cookie = "leftMenuCd=" + leftMenuCd + "; path=/itrnt";
|
||||
document.cookie = "upperMenuCd=" + upperMenuCd + "; path=/itrnt";
|
||||
document.cookie = "leftMenuUrl=" + leftMenuUrl + "; path=/itrnt";
|
||||
document.cookie = "checkMenu=Y" + "; path=/itrnt";
|
||||
window.location.href = leftMenuUrl;
|
||||
}
|
||||
</script>
|
||||
47
src/main/webapp/WEB-INF/views/comm/itrnt/crm/Header.jsp
Normal file
47
src/main/webapp/WEB-INF/views/comm/itrnt/crm/Header.jsp
Normal file
@@ -0,0 +1,47 @@
|
||||
<%@ 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="spring" uri="http://www.springframework.org/tags" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<script>
|
||||
// 현재 창의 이름을 'crmWin'로 설정
|
||||
window.onload = function() {
|
||||
if (!window.name) {
|
||||
window.name = 'crmWin';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<a href="/itrnt">
|
||||
<img src="/itrnt/images/logo_default.png" alt="GC ONE 인트라넷" id="crmMainLogo">
|
||||
<span class="header__logo-title">인트라넷CRM</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-searchBar">
|
||||
</div>
|
||||
<ul class="header-crmLink">
|
||||
</ul>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="header-right__linkContainer">
|
||||
<a class="btn outline xsm" href="/itrnt" title="인트라넷 바로가기" target="itrntWin">
|
||||
<i class="icon icon_headerLaptop"></i>
|
||||
인트라넷 바로가기
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-right__user-info">
|
||||
<c:out value="${userNm}"/>님
|
||||
</div>
|
||||
<button class="header-right__logout" onclick="location.href='/logout'">
|
||||
<i class="icon icon_logout-white"></i>
|
||||
로그아웃
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id = 'popupDiv'></div>
|
||||
</header>
|
||||
</html>
|
||||
81
src/main/webapp/WEB-INF/views/comm/itrnt/crm/Left.jsp
Normal file
81
src/main/webapp/WEB-INF/views/comm/itrnt/crm/Left.jsp
Normal file
@@ -0,0 +1,81 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<script>
|
||||
// 메뉴 이동
|
||||
const fn_move_menu = (target) => {
|
||||
let url = $(target).attr("url");
|
||||
if (url) {
|
||||
$("#leftForm").attr("method", "post");
|
||||
$("#leftForm").attr("action", url);
|
||||
$("#leftForm").submit();
|
||||
}
|
||||
};
|
||||
$(document).ready(function () {
|
||||
const accessUri= '<c:out value="${accessUri}"/>';
|
||||
$(".url").each(function (){
|
||||
const url = $(this).attr("url");
|
||||
if(url === accessUri){
|
||||
$(this).closest("li").addClass("current");
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
.url{
|
||||
cursor:pointer;
|
||||
}
|
||||
</style>
|
||||
<aside class="side-nav">
|
||||
<div class="header-fixed">
|
||||
<div class="header-fixed__logo">
|
||||
<a href="/itrnt/index">
|
||||
<span id = "sopmalLogo"><img src="/itrnt/images/logo_default.png" alt="GC ONE 인트라넷"></span>
|
||||
<span class="header__logo-title">GC ONE 인트라넷</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2">
|
||||
<li>
|
||||
<a class="depth2-title url" url="/itrnt/crm/mbr/selectCstmrInfoInqire" onclick="fn_move_menu(this);">회원정보</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="depth2-title url" url="/itrnt/crm/ordr/selectMbrOrdrListInqireForm" onclick="fn_move_menu(this);">주문</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="depth2-title url" url="/itrnt/crm/coupon/selectHoldCouponDtlsForm" onclick="fn_move_menu(this);">쿠폰
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="couponCnt" title="사용가능 쿠폰 수">0</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="depth2-title url" url="/itrnt/crm/cnslt/selectCnsltDtlsForm" onclick="fn_move_menu(this);">상담</a>
|
||||
</li>
|
||||
<li class="upper-line">
|
||||
<a class="depth2-title url" url="/itrnt/crm/mlg/selectMlgDtlsForm" id="mlgBtn" onclick="fn_move_menu(this);">마일리지 내역
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="totMlg">0</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="depth2-title url" url="/itrnt/crm/mlg/selectCashDtlsForm"
|
||||
onclick="fn_move_menu(this);">GC 머니 내역
|
||||
<div class="depth2__number-container">
|
||||
<span class="depth2__number comma" id="cashAmt">0</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="side-nav__crmBtn-container">
|
||||
<a class="side-nav__crm-btn light url" url="/itrnt/crm/mbr/selectMbrInfoUpdtInqire" onclick="fn_move_menu(this);">회원정보 수정</a>
|
||||
</div>
|
||||
</nav>
|
||||
</aside>
|
||||
<form id = "leftForm">
|
||||
<input type="hidden" id="leftMbrInnb" name="mbrInnb" value="<c:out value="${cnsltVO.mbrInnb}"/>"/>
|
||||
<input type="hidden" id="leftMbrDvCd" name="mbrDvCd" value="<c:out value="${cnsltVO.mbrDvCd}"/>"/>
|
||||
<input type="hidden" id="leftMbtlnb" name="mbtlnb" value="<c:out value="${cnsltVO.mbtlnb}"/>"/>
|
||||
<input type="hidden" id="leftSopmalCd" name="sopmalCd" value="<c:out value="${cnsltVO.sopmalCd}"/>"/>
|
||||
</form>
|
||||
147
src/main/webapp/WEB-INF/views/comm/itrnt/crm/Right.jsp
Normal file
147
src/main/webapp/WEB-INF/views/comm/itrnt/crm/Right.jsp
Normal file
@@ -0,0 +1,147 @@
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ 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"%>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
let mbrInnb = '${cnsltVO.mbrInnb}';
|
||||
let mbrDvCd = '${cnsltVO.mbrDvCd}';
|
||||
|
||||
fn_regist_crm_cnslt_form(mbrInnb, mbrDvCd);
|
||||
});
|
||||
|
||||
/******************************************************
|
||||
* CRM 상담 등록 폼
|
||||
*******************************************************/
|
||||
const fn_regist_crm_cnslt_form = function(mbrInnb, mbrDvCd) {
|
||||
console.log("상담 등록 폼");
|
||||
let dataStr;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/itrnt/crm/cnslt/selectCnsltRegistPopupForm"/>",
|
||||
data : {
|
||||
mbrInnb : mbrInnb,
|
||||
mbrDvCd : mbrDvCd
|
||||
},
|
||||
success:function(resultHtml) {
|
||||
$('#crmRegistPopupFormDiv').html(resultHtml);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 대분류 선태값에 따른 중분류 생성
|
||||
******************************************************** */
|
||||
const fn_select_lrgeClCd = function(cdValue, target) {
|
||||
console.log("cdValue : ", cdValue);
|
||||
let dataStr;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value="/itrnt/crm/cnslt/selectCnsltRegistPopupFormCmmnCdArray"/>",
|
||||
data : dataStr,
|
||||
success:function(data) {
|
||||
console.log("data : ", data);
|
||||
let jsonData;
|
||||
|
||||
switch (cdValue) {
|
||||
case '01':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList01;
|
||||
break;
|
||||
case '02':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList02;
|
||||
break;
|
||||
case '03':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList03;
|
||||
break;
|
||||
case '04':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList04;
|
||||
break;
|
||||
case '05':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList05;
|
||||
break;
|
||||
case '06':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList06;
|
||||
break;
|
||||
case '07':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList07;
|
||||
break;
|
||||
case '08':
|
||||
jsonData = JSON.parse(data.resBody.result).middlClCdList08;
|
||||
break;
|
||||
}
|
||||
console.log("jsonData : ", jsonData);
|
||||
|
||||
fn_create_selectBox(jsonData, target);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 중분류 셀렉트 생성
|
||||
******************************************************** */
|
||||
function fn_create_selectBox(jsonData, tartget) {
|
||||
$('#middlClCdDiv').empty();
|
||||
console.log("jsonData f : ", jsonData);
|
||||
let trClone = '';
|
||||
trClone = '<select name="middlCl" title="중분류">'
|
||||
+ '<option value="" selected disabled>선택</option>'
|
||||
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
trClone +=' <option value="' + jsonData[i].cd + '">' + jsonData[i].cdNm + '</option>';
|
||||
}
|
||||
|
||||
trClone += '</select>';
|
||||
|
||||
$('#middlClCdDiv').append(trClone);
|
||||
$('#middlClCdDiv > select').niceSelect();
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 상담 등록
|
||||
******************************************************** */
|
||||
const fn_regist = function() {
|
||||
const data = $('#registForm').serialize();
|
||||
console.log("data : ", data);
|
||||
if (confirm('상담을 <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/itrnt/crm/cnslt/insertCnsltRegist"/>',
|
||||
data: data,
|
||||
success: function (result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
console.log(result);
|
||||
if(result.result > 0){
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
$(".url").each(function () {//상담 폼으로 이동
|
||||
if ($(this).attr("url") === '/itrnt/crm/cnslt/selectCnsltDtlsForm') {
|
||||
$(this).click();
|
||||
}
|
||||
});
|
||||
}else{
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
const fn_only_num = function(target) {
|
||||
//숫자만 허용
|
||||
target.val(target.val().replace(/[^0-9]/g, ''));
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="crmRegistPopupFormDiv">
|
||||
|
||||
</div>
|
||||
305
src/main/webapp/WEB-INF/views/comm/mngr/Header.jsp
Normal file
305
src/main/webapp/WEB-INF/views/comm/mngr/Header.jsp
Normal file
@@ -0,0 +1,305 @@
|
||||
<%@ 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" %>
|
||||
<header class="header">
|
||||
<div class="header__top">
|
||||
<div class="header-left">
|
||||
<div class="header__logo">
|
||||
<a href="/mngr/main?authSopmalCd=<c:out value="${authSopmalCd}"/>">
|
||||
<%
|
||||
|
||||
if(request.getCookies() != null){
|
||||
for(Cookie cookie : request.getCookies()){
|
||||
if("authSopmalCd".equals(cookie.getName())){
|
||||
request.setAttribute("cookieAuthSopmalCd", cookie.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
<c:choose>
|
||||
<c:when test="${not empty siteList && not empty cookieAuthSopmalCd}">
|
||||
<c:forEach var="site" items="${siteList}">
|
||||
<c:if test = "${cookieAuthSopmalCd eq site.sopmalCd}">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<img src="<c:out value="${cdnurl}${site.topFilCours}/${site.topSysFilNm}"/>" alt="<c:out value="${site.sopmalNm}"/>">
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<img src="/mngr/images/logo_default.png" alt="GC ONE 관리자">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</a>
|
||||
<div class="header__siteSelectArrow"><span class="visually-hidden">사이트 선택</span></div>
|
||||
<div class="siteSelect">
|
||||
<ul class="siteSelect__list" style="width: 300%">
|
||||
<c:if test = "${not empty siteList}">
|
||||
<c:forEach var = "site" items = "${siteList}">
|
||||
<li>
|
||||
<button class="siteSelect__btn" data-value="${site.sopmalCd}" ><c:out value="${site.sopmalNm}"/></button>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<%--<div class="header-searchBar">
|
||||
<form>
|
||||
<div class="header-searchBar__inner">
|
||||
<div class="header-searchBar__select">
|
||||
<select title="해당 셀렉트에 대한 설명">
|
||||
<option value="">주문</option>
|
||||
<option value="">출고</option>
|
||||
<option value="">실물</option>
|
||||
<option value="">회원</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="header-searchBar__input" type="text" title="검색어 입력" placeholder="검색어를 입력하세요">
|
||||
<button class="header-searchBar__btn"><span class="visually-hidden">검색</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<a href="#quick-search-info" class="ml-4 mt-4" rel="modal:open">
|
||||
<i class="icon icon_question"></i>
|
||||
</a>--%>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="header-right__linkContainer">
|
||||
<c:if test = "${cookieAuthSopmalCd eq 'CH' || cookieAuthSopmalCd eq 'NC'}">
|
||||
<a class="btn outline xsm" title="인트라넷 바로가기" onclick="fn_move_itrnt()" style="cursor:pointer">
|
||||
<i class="icon icon_headerSetting"></i>
|
||||
인트라넷 바로가기
|
||||
</a>
|
||||
</c:if>
|
||||
<a class="btn outline xsm" title="쇼핑몰 바로가기" onclick="fn_move_sopmal_bbs_list('','','')" style="cursor:pointer">
|
||||
<i class="icon icon_headerCart"></i>
|
||||
쇼핑몰 바로가기
|
||||
</a>
|
||||
<a class="btn outline xsm" href="/crm/main" title="CRM 바로가기" target="crmWin">
|
||||
<i class="icon icon_headerLaptop"></i>
|
||||
CRM 바로가기
|
||||
</a>
|
||||
</div>
|
||||
<!--
|
||||
<a href="#notification-list-pop" rel="modal:open" class="header-right__notification" title="알림">
|
||||
<i class="icon icon_notification"></i>
|
||||
<span class="visually-hidden">알림</span>
|
||||
<span class="number-badge">3</span>
|
||||
</a>
|
||||
-->
|
||||
<div class="header-right__user-info">
|
||||
<i class="icon icon_user-info"></i>
|
||||
<c:out value="${userNm}"/>님
|
||||
<div class="userInfo-float">
|
||||
<div class="userInfo-float__top">
|
||||
<i class="icon icon_user-info-big"></i>
|
||||
<div class="userInfo-float__info">
|
||||
<p class="userInfo-float__info-row">
|
||||
<c:out value="${userNm}"/>
|
||||
</p>
|
||||
<p class="userInfo-float__info-row">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="userInfo-float__bottom">
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('','/mngr/setup/mngr/selectMngrInfoInqireForm')" class="btn outline sm">정보수정</a>
|
||||
<a href="/mngr/logout" class="btn dark sm">로그아웃</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header__bottom">
|
||||
<nav class="header-nav">
|
||||
<div class="header-nav__fullMenu-trigger">
|
||||
<a class="header-nav__fullMenu-trigger-btn" href="#full-menu" rel="modal:open" style="pointer-events: none">
|
||||
<span>관리자시스템</span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="20" height="20"
|
||||
viewBox="0 0 50 50">
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="header-nav__right">
|
||||
<ul>
|
||||
<c:if test="${!empty topMenuList}">
|
||||
<c:forEach var="topMenuList" items="${topMenuList.menuList}" varStatus="status">
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<li <c:if test="${topMenuCd eq topMenuList.menuCd}"> class="current" </c:if>>
|
||||
<a href="javascript:void(0)" onclick="setTopMenuCode('<c:out value="${topMenuList.menuCd}"/>','<c:out value="${topMenuList.url}"/>')"><c:out value ="${topMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<script>
|
||||
|
||||
// 현재 창의 이름을 'adminWin'로 설정
|
||||
window.onload = function() {
|
||||
if (!window.name) {
|
||||
window.name = 'adminWin';
|
||||
}
|
||||
}
|
||||
let pcDomainUrl = '';
|
||||
/*도메인 주소 get*/
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/mngr/getPcUrl",
|
||||
success: function (data) {
|
||||
let sopmalInfo = data.resBody.result;
|
||||
sopmalInfo = JSON.parse(sopmalInfo);
|
||||
let pcDomnAdres = sopmalInfo.sopmalInfo.pcDomnAdres;
|
||||
$('.header__logo').attr('data-pcurl', pcDomnAdres);
|
||||
}
|
||||
});
|
||||
|
||||
function setTopMenuCode(topMenuCd, topMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/mngr";
|
||||
document.cookie = "leftMenuCd=" + "" + "; path=/mngr";
|
||||
document.cookie = "upperMenuCd=" + "" + "; path=/mngr";
|
||||
document.cookie = "topMenuUrl=" + topMenuUrl + "; path=/mngr";
|
||||
document.cookie = "checkMenu=Y" + "; path=/mngr";
|
||||
window.location.href = topMenuUrl;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
* 관리자 쇼핑몰 변경
|
||||
****************************************************************/
|
||||
$(document).on('click', '.siteSelect__btn', function (event) {
|
||||
event.preventDefault()
|
||||
|
||||
const url = '<c:url value="/mngr/auth/selectMngrSopmalSite"/>'
|
||||
|
||||
const sopmalCd = $(this).data('value')
|
||||
|
||||
console.log('sopmalCd', sopmalCd)
|
||||
const data = {
|
||||
"sopmalCd" : sopmalCd
|
||||
}
|
||||
|
||||
|
||||
$.ajax({
|
||||
contentType:"application/json",
|
||||
url: url,
|
||||
type:'post',
|
||||
data: JSON.stringify(data),
|
||||
dataType:"json",
|
||||
success: function (data) {
|
||||
const result = data.resBody.result.result
|
||||
|
||||
if(result ==='success'){
|
||||
location.href='/mngr/main'
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
/*****************************************************************
|
||||
* 인트라넷 로그인
|
||||
****************************************************************/
|
||||
const fn_move_itrnt = function(tentcpnId, tentcpnPassword){
|
||||
|
||||
const hostname = window.location.hostname;
|
||||
let itrntDomain = null;
|
||||
if (hostname.match(/^loc\./)) { // loc.로 시작하는지 검사
|
||||
itrntDomain = 'http://loc.itrnt.gcone.co.kr:18310';
|
||||
} else if (hostname.match(/^dev\./)) { // dev.로 시작하는지 검사
|
||||
itrntDomain = 'http://dev.itrnt.gcone.co.kr';
|
||||
} else {
|
||||
itrntDomain = 'https://itrnt.gcone.co.kr';
|
||||
}
|
||||
|
||||
// 본사 아이디 CH와 NC일 경우 분기 처리
|
||||
if(fn_is_empty(tentcpnId)){
|
||||
let authSopmalCd = '<c:out value="${cookieAuthSopmalCd}"/>';
|
||||
if ("CH" === authSopmalCd) {
|
||||
tentcpnId = 'store9';
|
||||
tentcpnPassword = '99ec233bbf655681512400e638be4fac2ec9ebc5c29227a471d14f6abf387ec5';
|
||||
} else if ("NC" === authSopmalCd) {
|
||||
tentcpnId = 'base';
|
||||
tentcpnPassword = '99ec233bbf655681512400e638be4fac2ec9ebc5c29227a471d14f6abf387ec5';
|
||||
} else {
|
||||
alert("참다한 또는 뉴트리코어만 로그인 가능 합니다.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const popupWindow = window.open(itrntDomain+"/login", "_blank");
|
||||
|
||||
// 팝업창 초기 화면 설정
|
||||
popupWindow.document.write(`
|
||||
<html>
|
||||
<head><title>Login Result</title></head>
|
||||
<body>
|
||||
<h3>로그인 진행 중...</h3>
|
||||
<p id="resultMessage"></p>
|
||||
</body>
|
||||
</html>
|
||||
`);
|
||||
|
||||
const realm = 'ITRNT';
|
||||
const username = tentcpnId;
|
||||
const password = tentcpnPassword;
|
||||
const accessUrl = itrntDomain;
|
||||
const redirectUri = accessUrl+"/itrnt" ;
|
||||
const sopMalCd = "ITRNT";
|
||||
const itrntDv = "02"; // 01: 로그인화면, 02 : 관리자 화면
|
||||
|
||||
const loginUrl = "/login/"+realm;
|
||||
// 서버에 요청 보내기
|
||||
fetch(loginUrl, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
username: username,
|
||||
password: password,
|
||||
redirectUri: redirectUri,
|
||||
accessUrl: accessUrl,
|
||||
sopMalCd: sopMalCd,
|
||||
itrntDv: itrntDv
|
||||
})
|
||||
})
|
||||
.then(response => {
|
||||
if (response.ok) {
|
||||
return response.text(); // 응답 데이터를 텍스트로 반환
|
||||
} else {
|
||||
switch(response.status) {
|
||||
case 401:
|
||||
throw new Error('회원아이디 또는 비밀번호를 확인해주세요.');
|
||||
case 404:
|
||||
throw new Error('페이지를 찾을 수 없습니다.');
|
||||
default:
|
||||
throw new Error('회원 로그인에 실패하였습니다. 관리자에게 문의해주세요.');
|
||||
}
|
||||
}
|
||||
})
|
||||
.then(data => {
|
||||
// 팝업창에 리다이렉트 링크 제공
|
||||
const encodedRedirectURL = encodeURIComponent(redirectUri);
|
||||
const ssoURL = "/sso/"+realm+"?redirectUrl="+encodedRedirectURL;
|
||||
popupWindow.document.write(`
|
||||
<script>
|
||||
setTimeout(() => {
|
||||
window.location.href ='`+ssoURL+`';
|
||||
}, 1000);
|
||||
<\/script>
|
||||
`);
|
||||
}).catch(error => {
|
||||
// 에러 메시지를 팝업창에 표시
|
||||
console.error('Error:', error);
|
||||
const resultMessage = popupWindow.document.getElementById('resultMessage');
|
||||
if (resultMessage) {
|
||||
resultMessage.innerText = '로그인 실패: ' + error.message;
|
||||
}
|
||||
// 3초 후 팝업창 닫기
|
||||
setTimeout(() => {
|
||||
popupWindow.close();
|
||||
}, 3000);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
322
src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp
Normal file
322
src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp
Normal file
@@ -0,0 +1,322 @@
|
||||
<%@ 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" %>
|
||||
|
||||
<% response.setHeader("Cache-Control","no-cache");
|
||||
response.setHeader("Pragma","no-cache");
|
||||
response.setDateHeader("Expires",0);
|
||||
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
|
||||
%>
|
||||
|
||||
<!-- CK editor -->
|
||||
<script src='/ckeditor/ckeditor.js' data-cke-editor="editor"></script>
|
||||
<script src='/ckeditor/uploadAdapter.js' data-cke-editor="editor"></script>
|
||||
<link rel="stylesheet" href="/ckeditor/content.css">
|
||||
<%-- CK editor 적용 시 width 설정 --%>
|
||||
|
||||
<%--파비콘, 메타, 타이틀--%>
|
||||
<title>GC ONE 관리자</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" type="image/png" href="\assets\favicon\gcone.ico">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
|
||||
<%--mixed Contents 대응--%>
|
||||
<spring:eval expression="@environment.getProperty('spring.profiles.active')" var="profiles"/>
|
||||
<c:if test="${profiles eq 'stage'}">
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</c:if>
|
||||
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/mngr/css/style.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-nice-select/nice-select.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-ui/jquery-ui.structure.css">
|
||||
<link rel="stylesheet" href="/mngr/vendor/jquery-modal/jquery.modal.min.css">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/time-picker/timepicker.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/dropzone/dropzone.min.css'/>">
|
||||
<link rel="stylesheet" href="<c:url value='/mngr/vendor/jstree/themes/default/style.min.css'/>">
|
||||
<!-- JChartFX -->
|
||||
<link rel="stylesheet" href="/jchartfx/styles/Attributes/jchartfx.attributes.css" />
|
||||
<link rel="stylesheet" href="/jchartfx/styles/Palettes/jchartfx.paletteTemp.css" />
|
||||
|
||||
<!-- JS -->
|
||||
<script src="/mngr/vendor/jquery-3.7.1.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-nice-select/jquery.nice-select.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-ui/jquery-ui.min.js"></script>
|
||||
<script src="/mngr/vendor/jquery-modal/jquery.modal.min.js"></script>
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/mngr/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/time-picker/timepicker.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/tablednd/jquery.tablednd.1.0.5.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/dropzone/dropzone.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/jstree/jstree.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/chart.js/chart.umd.min.js'/>"></script>
|
||||
<script src="<c:url value='/mngr/vendor/emoji-mart/browser.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.system.js'/>"></script>
|
||||
<script src="<c:url value='/jchartfx/js/jchartfx.coreVector.js'/>"></script>
|
||||
|
||||
|
||||
<script src="<c:url value='/mngr/js/script.js'/>" defer></script> <!-- MNGR 스크립트 함수 -->
|
||||
<script src="<c:url value='/js/mngr/gcone.js'/>"></script> <!-- 공통 스크립트 함수 -->
|
||||
<script src="<c:url value='/js/alarmCount.js'/>"></script> <!-- 알림 카운트 js -->
|
||||
|
||||
<script type="text/javascript">
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (jqXhr, settins) {
|
||||
jqXhr.setRequestHeader('AJAX', true);
|
||||
$("#overlay").fadeIn();
|
||||
loding(true);
|
||||
},
|
||||
complete: function () {
|
||||
//동시에 여러개의 AJAX가 수행될 경우를 대비하여 delay를 설정
|
||||
setTimeout(function () {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
}, 500);
|
||||
},
|
||||
error: function (data) {
|
||||
$("#overlay").fadeOut();
|
||||
loding(false);
|
||||
|
||||
console.log("data");
|
||||
console.log(data);
|
||||
if (data?.responseJSON?.resBody?.result != null) {
|
||||
|
||||
if (!data.responseJSON.resBody.result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (fn_check_json(data.responseJSON.resBody.result)) {
|
||||
const errorObject = JSON.parse(data.responseJSON.resBody.result);
|
||||
if (!errorObject) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
if (!errorObject.errorMsg) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
} else {
|
||||
alert(errorObject.errorMsg); //vo 에러메시지 띄움
|
||||
let isMtched = false;
|
||||
$('.main').eq(0).find('input,select,textarea').each(function () {
|
||||
for (let idx = 0; idx < errorObject.errorFields.length; idx++) {
|
||||
if (errorObject.errorFields[idx].indexOf($(this).attr('name')) >= 0) {
|
||||
isMtched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMtched) {
|
||||
$(this).focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log("here 1");
|
||||
if (data.responseJSON.resBody.result) {
|
||||
alert(data.responseJSON.resBody.result);
|
||||
} else {
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log("here 2");
|
||||
alert('<spring:message code="error.ajax"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
* 회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbrInnb : 회원 고유번호
|
||||
* mbrDvCd : 회원 구분코드
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info = function(obj, mbrInnb, mbrDvCd, modalDiv){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/crm/mbr/selectMbrCrmInfoPopupForm'/>",
|
||||
data: {
|
||||
mbrDvCd : mbrDvCd,
|
||||
mbrInnb : mbrInnb
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
const target = $("#" + info);
|
||||
let top;
|
||||
let left;
|
||||
let width = $("#" + info).width() + 50;
|
||||
let zIndex = 9998
|
||||
if (fn_is_empty($("#board-list-detail"))) {
|
||||
top = offset.top + element.outerHeight(); // 첫 번째 모달의 아래로 설정
|
||||
left = offset.left - 150;
|
||||
} else { //게시글 상세에서는 위로 위치
|
||||
top = offset.top + (element.outerHeight() / 2) - (target.outerHeight() / 2);
|
||||
left = offset.left + element.outerWidth() + 10; // 오른쪽으로 10px 띄움
|
||||
}
|
||||
|
||||
target.css({
|
||||
top: top,
|
||||
left: left,
|
||||
width: width,
|
||||
zIndex: zIndex
|
||||
});
|
||||
|
||||
target.show();
|
||||
}
|
||||
});
|
||||
};
|
||||
/**********************************************************************
|
||||
* 비회원 crm정보 모달 호출(공통)
|
||||
* 파라미터 설명 {
|
||||
* obj : 호출버튼 객체
|
||||
* mbtlnb : 주문자번호
|
||||
* modalDiv : 모달 selector
|
||||
* }
|
||||
**********************************************************************/
|
||||
const fn_select_crm_mini_info_nmbr = function(obj, mbtlnb,ordrInnb,mbrNm,modalDiv){
|
||||
const element = $(obj); // 클릭된 요소
|
||||
let offset = element.offset();
|
||||
const info = $(obj).attr("data-info");
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "<c:url value='/crm/mbr/selectNmbrCrmInfoPopupForm'/>",
|
||||
data: {
|
||||
mbtlnb : mbtlnb,
|
||||
ordrInnb : ordrInnb,
|
||||
mbrNm : mbrNm
|
||||
},
|
||||
success : function(html) {
|
||||
fn_close_modal(info);
|
||||
$(modalDiv).html(html);
|
||||
|
||||
const target = $("#" + info);
|
||||
let top;
|
||||
let left;
|
||||
let width = $("#" + info).width() + 50;
|
||||
let zIndex = 9998
|
||||
if (fn_is_empty($("#board-list-detail"))) {
|
||||
top = offset.top + element.outerHeight(); // 첫 번째 모달의 아래로 설정
|
||||
left = offset.left - 150;
|
||||
} else { //게시글 상세에서는 위로 위치
|
||||
top = offset.top + (element.outerHeight() / 2) - (target.outerHeight() / 2);
|
||||
left = offset.left + element.outerWidth() + 10; // 오른쪽으로 10px 띄움
|
||||
}
|
||||
|
||||
target.css({
|
||||
top: top,
|
||||
left: left,
|
||||
width: width,
|
||||
zIndex: zIndex
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**********************************************************************
|
||||
* CMR 레이어 팝업 닫기 버튼 클릭 이벤트
|
||||
**********************************************************************/
|
||||
$(document).on('click', '.mini-info-content__close', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest(".mini-info-content").hide();
|
||||
});
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
* 회원 crm정보 모달 : 상담 등록 이동
|
||||
****************************************************************/
|
||||
const fn_move_crm_cnslt = function(mbrInnb, mbrDvCd) {
|
||||
console.log("param 확인 : ", mbrInnb, mbrDvCd);
|
||||
|
||||
let form = $('<form></form>');
|
||||
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbrInnb', value:mbrInnb}));
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbrDvCd', value:mbrDvCd}));
|
||||
|
||||
$(form).attr('method', 'post');
|
||||
$(form).attr('action', '<c:url value="/crm/cnslt/selectCnsltDtlsForm"/>');
|
||||
|
||||
$(form).appendTo('body');
|
||||
|
||||
$(form).submit();
|
||||
$(form).remove();
|
||||
};
|
||||
|
||||
/*****************************************************************
|
||||
* 비회원 주문 목록 이동
|
||||
****************************************************************/
|
||||
const fn_move_crm_cnslt_nmbr = function(mbtlnb, ordrInnb,mbrNm) {
|
||||
let form = $('<form></form>');
|
||||
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbtlnb', value:mbtlnb}));
|
||||
$(form).append($('<input/>', {type:'hidden', name:'ordrInnb', value:ordrInnb}));
|
||||
$(form).append($('<input/>', {type:'hidden', name:'mbrNm', value:mbrNm}));
|
||||
|
||||
$(form).attr('method', 'post');
|
||||
$(form).attr('action', '<c:url value="/crm/cnslt/selectCnsltDtlsForm"/>');
|
||||
|
||||
$(form).appendTo('body');
|
||||
|
||||
$(form).submit();
|
||||
$(form).remove();
|
||||
};
|
||||
|
||||
/*****************************************************************
|
||||
* 로딩이미지
|
||||
****************************************************************/
|
||||
const loding = function(isShow) {
|
||||
if(isShow){
|
||||
$('.loadingImg').show();
|
||||
}else{
|
||||
$('.loadingImg').hide();
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.top_menu_req_cnt {
|
||||
width: 15px ;
|
||||
height: 15px ;
|
||||
border-radius: 10px ;
|
||||
background-color: red ;
|
||||
color: white ;
|
||||
font-size: 10px ;
|
||||
line-height: 15px ;
|
||||
text-align: center ;
|
||||
float: right ;
|
||||
margin-top: -45px ;
|
||||
padding-right: 2px;
|
||||
|
||||
}
|
||||
|
||||
.top_menu_req_cnt2 {
|
||||
width: 15px ;
|
||||
height: 15px ;
|
||||
border-radius: 10px ;
|
||||
background-color: yellow ;
|
||||
color: black ;
|
||||
font-size: 10px ;
|
||||
line-height: 15px ;
|
||||
text-align: center ;
|
||||
float: right ;
|
||||
margin-top: -45px ;
|
||||
margin-right: 20px;
|
||||
padding-right: 2px;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mngr/images/loding.gif" alt="loading"></div>
|
||||
</div>
|
||||
84
src/main/webapp/WEB-INF/views/comm/mngr/Left.jsp
Normal file
84
src/main/webapp/WEB-INF/views/comm/mngr/Left.jsp
Normal file
@@ -0,0 +1,84 @@
|
||||
<%@ 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"%>
|
||||
<aside class="side-nav">
|
||||
<nav class="side-nav__inner">
|
||||
<ul class="depth2">
|
||||
|
||||
<c:if test="${!empty leftMenuList}">
|
||||
<c:forEach var="leftMenuList" items="${leftMenuList.menuList}" varStatus="status">
|
||||
<!-- 선택한 TOP메뉴코드 -->
|
||||
<c:set var="topMenuCd" value="${sessionScope.topMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴코드 -->
|
||||
<c:set var="leftMenuCd" value="${sessionScope.leftMenuCd}" />
|
||||
<!-- 선택한 LEFT메뉴의 상위 코드 -->
|
||||
<c:set var="upperMenuCd" value="${sessionScope.upperMenuCd}" />
|
||||
|
||||
<!-- 2뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'3' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<%-- 2뎁스 밑에 3뎁스가 있는 경우 Sample --%>
|
||||
<c:when test="${'1' eq leftMenuList.nextDepth3}">
|
||||
<c:set var="depth2MenuCd" value="${leftMenuList.menuCd}" />
|
||||
<c:choose>
|
||||
<c:when test="${depth2MenuCd eq upperMenuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="has-sub opened">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="has-sub">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<div class="depth2-title"><c:out value ="${leftMenuList.menuNm}"/></div>
|
||||
<ul class="depth3">
|
||||
</c:when>
|
||||
<%-- 2뎁스 밑에 3뎁스가 없는 경우 Sample --%>
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 0 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a class="depth2-title" href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스의 메뉴 조회 -->
|
||||
<c:if test="${'4' eq leftMenuList.menuDepth}">
|
||||
<c:choose>
|
||||
<c:when test="${leftMenuCd eq leftMenuList.menuCd || (status.index eq 1 && empty leftMenuCd)}">
|
||||
<li class="current">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<a href="javascript:void(0)" onclick="fn_select_left('<c:out value="${topMenuCd}"/>','<c:out value="${leftMenuList.menuCd}"/>','<c:out value="${leftMenuList.upperMenuCd}"/>', '<c:out value="${leftMenuList.url}"/>')"><c:out value ="${leftMenuList.menuNm}"/></a>
|
||||
</li>
|
||||
</c:if>
|
||||
|
||||
<!-- 3뎁스가 끝나고 새로운 2뎁스가 시작되면 태그를 닫아준다-->
|
||||
<c:if test="${'1' eq leftMenuList.nextDepth2}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<script>
|
||||
function fn_select_left(topMenuCd, leftMenuCd, upperMenuCd, leftMenuUrl) {
|
||||
document.cookie = "topMenuCd=" + topMenuCd + "; path=/mngr";
|
||||
document.cookie = "leftMenuCd=" + leftMenuCd + "; path=/mngr";
|
||||
document.cookie = "upperMenuCd=" + upperMenuCd + "; path=/mngr";
|
||||
document.cookie = "leftMenuUrl=" + leftMenuUrl + "; path=/mngr";
|
||||
document.cookie = "checkMenu=Y" + "; path=/mngr";
|
||||
window.location.href = leftMenuUrl;
|
||||
}
|
||||
</script>
|
||||
296
src/main/webapp/WEB-INF/views/comm/mobile/Footer.jsp
Normal file
296
src/main/webapp/WEB-INF/views/comm/mobile/Footer.jsp
Normal file
@@ -0,0 +1,296 @@
|
||||
<%@ 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" %>
|
||||
<footer class="footer">
|
||||
<ul class="footer__first">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${ topBarInfo.topbar.gnbTyCd eq '04'}">
|
||||
<li>
|
||||
<a href='<c:out value="${topMenuList.url}"/>' onclick="setTopMenuCode()">
|
||||
<c:choose>
|
||||
<c:when test = "${fn:contains(topMenuList.url,'/sopmal/main/selectClause?stplatDvCd=02')}">
|
||||
<strong><c:out value="${topMenuList.ctgryNm}"/></strong>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${topMenuList.ctgryNm}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</a>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
<div class="footer__second">
|
||||
<button type="button" class="footer__second__detailBtn">사업자 정보 확인</button>
|
||||
<c:if test = "${not empty footerInfo.footerInfo.familySite}">
|
||||
<select class="family-site-link" title="해당 셀렉트에 대한 설명">
|
||||
<option value="" disabled selected>FAMILY SITE</option>
|
||||
<c:forEach var = "familySite" items = "${footerInfo.footerInfo.familySite}">
|
||||
<option value="<c:out value="${familySite.familySiteUrl}"/>"><c:out value="${familySite.familySiteNm}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="footerHide">
|
||||
<c:set var="operBsnmInfo" value="${footerInfo.footerInfo.operBsnmInfo}"/>
|
||||
<c:set var="sleBsnmInfo" value="${footerInfo.footerInfo.sleBsnmInfo}"/>
|
||||
<c:set var="sopmalInfo" value="${footerInfo.footerInfo.sopmalInfo}"/>
|
||||
<c:set var="scriptSetup" value="${footerInfo.footerInfo.scriptSetup}"/>
|
||||
|
||||
<ul class="footer__third">
|
||||
<c:choose>
|
||||
<c:when test="${operBsnmInfo.bsnmInnb ne sleBsnmInfo.bsnmInnb}">
|
||||
<li>
|
||||
<span class="footer__third__th">판매사업자</span>
|
||||
<span class="footer__third__td">
|
||||
<c:out value="${sleBsnmInfo.bsnmNm}"/>
|
||||
</span>
|
||||
</li>
|
||||
<li><span class="footer__third__th">대표자</span><span class="footer__third__td"><c:out value="${sleBsnmInfo.reprsntvnm}"/></span></li>
|
||||
<li><span class="footer__third__th">주소</span><span class="footer__third__td">
|
||||
<c:choose>
|
||||
<c:when test = "${not empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${empty operBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${not empty sleBsnmInfo.rnmAdres && empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose> <c:out value="${sleBsnmInfo.dtlAdres}"/></span></li>
|
||||
<li><span class="footer__third__th">대표전화</span><span class="footer__third__td"><c:out value="${sopmalInfo.reprsntTelnb}"/></span>
|
||||
</li>
|
||||
<li><span class="footer__third__th">대표이메일</span>
|
||||
<a href="mailto:<c:out value='${sopmalInfo.reprsntEmail}'/>" class="footer__third__td"><strong><c:out value="${sopmalInfo.reprsntEmail}"/></strong></a>
|
||||
</li>
|
||||
<li><span class="footer__third__th">사업자 등록번호</span><span
|
||||
class="footer__third__td"><c:out value="${sleBsnmInfo.bizrnb}"/></span>
|
||||
[ <a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value="${sleBsnmInfo.replaceBizrnb}"/>','communicationViewPopup','width=750,height=700,scrollbars=yes')" class="footer__underLine">사업자정보확인</a> ]
|
||||
</li>
|
||||
<li><span class="footer__third__th">개인정보관리책임자</span><span class="footer__third__td"><c:out value="${sleBsnmInfo.indvdlinfoPrtcRspnberNm}"/></span>
|
||||
</li>
|
||||
<li><span class="footer__third__th">통신판매업 신고번호</span><span class="footer__third__td"><c:out value="${sleBsnmInfo.mobDclNb}"/></span></li>
|
||||
<li>[ <a onclick="openModal('selerInfo');" class="footer__underLine">판매자 정보</a> ]
|
||||
[ <a onclick="fn_get_indvdlInfoPorcsCn();" class="footer__underLine">판매자 개인정보 처리방침</a> ]</li>
|
||||
</ul>
|
||||
<div class="footer__logo">
|
||||
</div>
|
||||
<ul class="footer__third" style="font-size:12px; color:#888888;">
|
||||
<li>
|
||||
통신판매중개사업자 | <c:out value="${operBsnmInfo.bsnmNm}"/>
|
||||
</li>
|
||||
<li>대표자 | <c:out value="${operBsnmInfo.reprsntvnm}"/></li>
|
||||
<li>주소 |
|
||||
<c:choose>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose> <c:out value="${operBsnmInfo.dtlAdres}"/></span></li>
|
||||
<li>대표전화 | <c:out value="${operBsnmInfo.telnb}"/>
|
||||
</li>
|
||||
<li>대표이메일 |
|
||||
<a href="mailto:<c:out value='${operBsnmInfo.email}'/>"><c:out value="${operBsnmInfo.email}"/></a>
|
||||
</li>
|
||||
<li>사업자 등록번호 | <c:out value="${operBsnmInfo.bizrnb}"/>
|
||||
[ <a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value="${operBsnmInfo.replaceBizrnb}"/>','communicationViewPopup','width=750,height=700,scrollbars=yes')">사업자정보확인</a> ]
|
||||
</li>
|
||||
<li>개인정보관리책임자 | <c:out value="${operBsnmInfo.indvdlinfoPrtcRspnberNm}"/>
|
||||
</li>
|
||||
<li>통신판매업 신고번호 | <c:out value="${operBsnmInfo.mobDclNb}"/></li>
|
||||
</ul>
|
||||
<br/>
|
||||
<p class="footer__description">
|
||||
<c:out value="${operBsnmInfo.bsnmNm}"/>는 통신판매중계자이며, 통신판매의 당사자가
|
||||
아닙니다. 상품 및 거래와 관련한 의무와 책임은 판매자에게 있습니다.</p>
|
||||
<p class="footer__copyright">ⓒ<c:out value="${operBsnmInfo.bsnmNm}"/> All rights reserved.</p>
|
||||
<%--로딩이미지--%>
|
||||
<img src="/mobile/images/loading.svg" style = "display:none" class = "loadingImg">
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li>
|
||||
<span class="footer__third__th">사업자명</span>
|
||||
<span class="footer__third__td">
|
||||
<c:out value="${operBsnmInfo.bsnmNm}"/>
|
||||
</span>
|
||||
</li>
|
||||
<li><span class="footer__third__th">대표자</span><span class="footer__third__td"><c:out value="${operBsnmInfo.reprsntvnm}"/></span></li>
|
||||
<li><span class="footer__third__th">주소</span><span class="footer__third__td">
|
||||
<c:choose>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${empty operBsnmInfo.rnmAdres && not empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${not empty operBsnmInfo.rnmAdres && empty operBsnmInfo.lnbAdres}">
|
||||
<c:out value="${operBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose> <c:out value="${operBsnmInfo.dtlAdres}"/></span></li>
|
||||
<li><span class="footer__third__th">대표전화</span><span class="footer__third__td"><c:out value="${sopmalInfo.reprsntTelnb}"/></span>
|
||||
</li>
|
||||
<li><span class="footer__third__th">대표이메일</span>
|
||||
<a href="mailto:<c:out value='${sopmalInfo.reprsntEmail}'/>" class="footer__third__td"><strong><c:out value="${sopmalInfo.reprsntEmail}"/></strong></a>
|
||||
</li>
|
||||
<li><span class="footer__third__th">사업자 등록번호</span><span
|
||||
class="footer__third__td"><c:out value="${operBsnmInfo.bizrnb}"/></span>
|
||||
<a href="javascript:;" onclick="window.open('https://www.ftc.go.kr/bizCommPop.do?wrkr_no=<c:out value="${operBsnmInfo.replaceBizrnb}"/>','communicationViewPopup','width=750,height=700,scrollbars=yes')" class="footer__underLine">사업자정보확인</a>
|
||||
</li>
|
||||
<li><span class="footer__third__th">개인정보관리책임자</span><span class="footer__third__td"><c:out value="${operBsnmInfo.indvdlinfoPrtcRspnberNm}"/></span>
|
||||
</li>
|
||||
<li><span class="footer__third__th">통신판매업 신고번호</span><span class="footer__third__td"><c:out value="${sleBsnmInfo.mobDclNb}"/></span></li>
|
||||
</ul>
|
||||
<div class="footer__logo">
|
||||
</div>
|
||||
<p class="footer__copyright">ⓒ<c:out value="${sleBsnmInfo.bsnmNm}"/> All rights reserved.</p>
|
||||
<%--로딩이미지--%>
|
||||
<img src="/mobile/images/loading.svg" style = "display:none" class = "loadingImg">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</footer>
|
||||
<div class="microModal microBottomSheet" id="selerInfo" aria-hidden="true">
|
||||
<div class="microModal__overlay" tabindex="-1">
|
||||
<div class="microModal__container" role="dialog" aria-modal="true">
|
||||
<div class="microModal__body">
|
||||
<div class="microModal__top">
|
||||
<button class="microModal__close" aria-label="창 닫기" data-micromodal-close></button>
|
||||
</div>
|
||||
<div class="microModal__content">
|
||||
<div class="deliveryFeeInfo">
|
||||
<div class="deliveryFeeInfo__item">
|
||||
<div class="deliveryFeeInfo__controls">
|
||||
<em>판매자 정보</em>
|
||||
</div>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 40%;">
|
||||
<col style="width: 60%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>상호명</th>
|
||||
<td><c:out value="${sleBsnmInfo.bsnmNm}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>대표자</th>
|
||||
<td><c:out value="${sleBsnmInfo.reprsntvnm}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자등록번호</th>
|
||||
<td><c:out value="${sleBsnmInfo.bizrnb}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>통신판매업번호</th>
|
||||
<td><c:out value="${sleBsnmInfo.mobDclNb}"/></td>
|
||||
</tr>
|
||||
<c:if test="${not empty sleBsnmInfo.bsnDclNb}">
|
||||
<tr>
|
||||
<th>영업신고번호</th>
|
||||
<td><c:out value="${sleBsnmInfo.bsnDclNb}"/></td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<tr>
|
||||
<th>사업장 소재지</th>
|
||||
<td><c:choose>
|
||||
<c:when test = "${not empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${empty sleBsnmInfo.rnmAdres && not empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.lnbAdres}"/>
|
||||
</c:when>
|
||||
<c:when test = "${not empty sleBsnmInfo.rnmAdres && empty sleBsnmInfo.lnbAdres}">
|
||||
<c:out value="${sleBsnmInfo.rnmAdres}"/>
|
||||
</c:when>
|
||||
</c:choose><c:out value="${sleBsnmInfo.dtlAdres}"/></td>
|
||||
</tr>
|
||||
<c:if test="${footerInfo.footerInfo.sopmalInfo.cscTelnbOrdrPosblAt eq 'Y' && not empty footerInfo.footerInfo.sopmalInfo.cscTelnb}">
|
||||
<tr>
|
||||
<th>고객센터</th>
|
||||
<td><c:out value="${footerInfo.footerInfo.sopmalInfo.cscTelnb}"/></td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<tr>
|
||||
<th>email</th>
|
||||
<td><c:out value="${sleBsnmInfo.email}"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<c:if test="${scriptSetup.scriptCnUseAt eq 'Y'}">
|
||||
${scriptSetup.scriptCn}
|
||||
</c:if>
|
||||
|
||||
<div class="microModal microFullScreen" id="indvdlInfoProcsModal" aria-hidden="true">
|
||||
<div class="microModal__overlay" tabindex="-1">
|
||||
<div class="microModal__container" role="dialog" aria-modal="true">
|
||||
<div class="microModal__body">
|
||||
<div class="microModal__top">
|
||||
<h4 class="microModal__title" style="width:105%;">
|
||||
판매자 개인정보 처리방침
|
||||
</h4>
|
||||
<button class="microModal__close" aria-label="창 닫기" data-micromodal-close></button>
|
||||
</div>
|
||||
<div class="microModal__content ck-content" id = "indvdlInfoProcsContent">
|
||||
<input type = "hidden" value = "N" id = "indvdlInfoProcsAjaxAt"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
/*판매자 개인정보 처리방침 조회*/
|
||||
const fn_get_indvdlInfoPorcsCn = () => {
|
||||
const indvdlInfoProcsAjaxAt = $("#indvdlInfoProcsAjaxAt").val();
|
||||
if (indvdlInfoProcsAjaxAt === 'N') {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "/sopmal/main/selectIndvdlInfoProcsCn",
|
||||
data : {stplatDvCd : '08'},
|
||||
success: function (data) {
|
||||
data = data.resBody.result;
|
||||
data = JSON.parse(data);
|
||||
let clauseList = data.clauseList;
|
||||
if (clauseList) {
|
||||
let i = 0;
|
||||
clauseList.forEach(function (item) {
|
||||
if (i === 0) {
|
||||
$("#indvdlInfoProcsAjaxAt").after(item.stplatCn);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
$("#indvdlInfoProcsAjaxAt").val("Y");
|
||||
}
|
||||
});
|
||||
}
|
||||
openModal('indvdlInfoProcsModal');
|
||||
};
|
||||
</script>
|
||||
|
||||
<c:if test="${sopmallInfo.shopInfo.sopmalCd eq 'DL'}">
|
||||
<script>
|
||||
(function(){var w=window;if(w.ChannelIO){return w.console.error("ChannelIO script included twice.");}var ch=function(){ch.c(arguments);};ch.q=[];ch.c=function(args){ch.q.push(args);};w.ChannelIO=ch;function l(){if(w.ChannelIOInitialized){return;}w.ChannelIOInitialized=true;var s=document.createElement("script");s.type="text/javascript";s.async=true;s.src="https://cdn.channel.io/plugin/ch-plugin-web.js";var x=document.getElementsByTagName("script")[0];if(x.parentNode){x.parentNode.insertBefore(s,x);}}if(document.readyState==="complete"){l();}else{w.addEventListener("DOMContentLoaded",l);w.addEventListener("load",l);}})();
|
||||
|
||||
|
||||
ChannelIO('boot', {
|
||||
"pluginKey": "f73ed102-2f9c-44ff-ab17-dc18045401a2" // fill your plugin key
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</c:if>
|
||||
44
src/main/webapp/WEB-INF/views/comm/mobile/Header.jsp
Normal file
44
src/main/webapp/WEB-INF/views/comm/mobile/Header.jsp
Normal file
@@ -0,0 +1,44 @@
|
||||
<%@ 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="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<div class="header__wrapper">
|
||||
<div class="header__controls-wrapper">
|
||||
<div class="header__controls">
|
||||
<div class="header__toBack">
|
||||
<c:if test = "${!(fn:contains('/sopmal/ordr/selectOrdrCompt',accessUri)||fn:contains('/sopmal/ordr/selectOrdrFailr',accessUri))}"><%--주문완료와 주문실패는 뒤로가기 버튼 미노출--%>
|
||||
<button type="button" class="header__toBack__btn" >
|
||||
<span class="visually-hidden">뒤로가기</span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"
|
||||
viewBox="0 0 24 24">
|
||||
<path fill="#1A1A1A"
|
||||
d="M16.598 3.338a.75.75 0 0 0-1.061 0l-8.132 8.131a.75.75 0 0 0 0 1.061l8.132 8.132a.75.75 0 0 0 1.06-1.06L8.998 12l7.6-7.602a.75.75 0 0 0 0-1.06Z">
|
||||
</path>
|
||||
</svg>
|
||||
</button>
|
||||
</c:if>
|
||||
</div>
|
||||
<h1 class="header__title" id="headerTitle"></h1><%--각자 페이지에 맞게 set해야함--%>
|
||||
<div class="header__btn-container">
|
||||
<button class="header__btn" onclick="fn_search_open();" type="button"><i class="icon icon_nav-search"></i><span
|
||||
class="visually-hidden">검색</span></button>
|
||||
<button type="button" class="header__btn" onclick="location.href='/sopmal/ordr/selectSpbk';">
|
||||
<span class="number-badge headerCartCnt"><c:out value="${topBarInfo.cartCnt}"/></span>
|
||||
<i class="icon icon_nav-cart"></i>
|
||||
<span class="visually-hidden">장바구니</span>
|
||||
</button>
|
||||
<button type="button" class="header__btn" onclick="fn_select_mbrInfo('<c:out value="${cdnurl}"/>',${isAuthenticated}); openModal('hamburger-menu');">
|
||||
<i class="icon icon_nav-menu"></i>
|
||||
<span class="visually-hidden">메뉴</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//뒤로가기 이벤트 부여, 각 페이지 마다 이벤트 삭제 후 다른 이벤트 사용 가능
|
||||
$(".header__toBack__btn").on("click",function (){
|
||||
fn_go_back();
|
||||
});
|
||||
</script>
|
||||
1163
src/main/webapp/WEB-INF/views/comm/mobile/Include.jsp
Normal file
1163
src/main/webapp/WEB-INF/views/comm/mobile/Include.jsp
Normal file
File diff suppressed because it is too large
Load Diff
93
src/main/webapp/WEB-INF/views/comm/mobile/MainHeader.jsp
Normal file
93
src/main/webapp/WEB-INF/views/comm/mobile/MainHeader.jsp
Normal file
@@ -0,0 +1,93 @@
|
||||
<%@ 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"%>
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<!-- 헤더 영역 -->
|
||||
<header class="header">
|
||||
<c:choose>
|
||||
<c:when test = "${not empty topBarInfo.case15}">
|
||||
<!-- 최상단 띠배너 -->
|
||||
<div class="top-banner">
|
||||
<div class="swiper top-banner-swiper">
|
||||
<div class="swiper-wrapper">
|
||||
<c:forEach items="${ topBarInfo.case15 }" var="case15" varStatus="status">
|
||||
<div class="swiper-slide top-banner__image">
|
||||
<a href="${ case15.itmeCnncUrl }">
|
||||
<img src="${cdnurl}${ case15.filCours }/${ case15.sysFilNm }"
|
||||
alt="해당 이미지에 대한 설명">
|
||||
</a>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
<div class=" top-banner__btn-container">
|
||||
<button class="top-banner__close">
|
||||
<span class="visually-hidden">닫기</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<!-- 최상단 띠배너 -->
|
||||
<div class="top-banner" style="display: none;">
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<div class="header__wrapper">
|
||||
<div class="header__controls-wrapper">
|
||||
<div class="header__controls">
|
||||
<a class="header__home-link" href="">
|
||||
<img src="${ cdnurl }${ topBarInfo.topbar.topFilCours }/${ topBarInfo.topbar.topSysFilNm }" alt="<c:out value="${sopmallInfo.shopInfo.sopmalNm}"/>">
|
||||
</a>
|
||||
<div class="header__btn-container">
|
||||
<button class="header__btn" onclick="fn_search_open();" type="button">
|
||||
<i class="icon icon_nav-search"></i>
|
||||
<span class="visually-hidden">검색</span>
|
||||
</button>
|
||||
|
||||
<!-- <button class="header__btn" onclick="setTopMenuCode(); location.href='/sopmal/ordr/selectSpbk';"> -->
|
||||
<button class="header__btn" onclick="location.href='/sopmal/ordr/selectSpbk';">
|
||||
<span class="number-badge headerCartCnt">${ topBarInfo.cartCnt }</span>
|
||||
<i class="icon icon_nav-cart"></i><span class="visually-hidden">장바구니</span></button>
|
||||
<button class="header__btn" onclick="fn_select_mbrInfo('<c:out value="${cdnurl}"/>',${isAuthenticated}); openModal('hamburger-menu');">
|
||||
<i class="icon icon_nav-menu"></i>
|
||||
<span class="visually-hidden">메뉴</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="home-category">
|
||||
<div class="home-category__content">
|
||||
<ul class="home-category__list">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${topMenuList.ctgryDvCd eq '01' && topMenuList.menuExpsrAt eq 'Y'}">
|
||||
<c:if test="${topMenuList.rnum eq '2'}">
|
||||
<li class="home-category__item">
|
||||
<a href="<c:out value="${topMenuList.url}"/>" onclick="setTopMenuCode()" <c:if test="${not empty topMenuList.menuChrColor}"> style="color:${topMenuList.menuChrColor};"</c:if>><c:out value ="${topMenuList.ctgryNm}"/></a>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<script>
|
||||
// 상단 띠 배너 스크립트
|
||||
const topBannerSwiper = new Swiper(".top-banner-swiper", {
|
||||
loop: true,
|
||||
autoplay: {
|
||||
delay: 4000,
|
||||
},
|
||||
});
|
||||
|
||||
// 상단 띠 배너 닫기 버튼
|
||||
$(".top-banner__close").click(function () {
|
||||
$(".top-banner").remove();
|
||||
});
|
||||
</script>
|
||||
273
src/main/webapp/WEB-INF/views/comm/mobile/TabBar.jsp
Normal file
273
src/main/webapp/WEB-INF/views/comm/mobile/TabBar.jsp
Normal file
@@ -0,0 +1,273 @@
|
||||
<%@ 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="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<aside class="tab-bar">
|
||||
<nav class="tab-bar__nav">
|
||||
<a class="tab-bar__link" onclick="fn_select_mbrInfo('<c:out value="${cdnurl}"/>',${isAuthenticated}); openModal('hamburger-menu');">
|
||||
<i class="icon icon_tab-bar-category"></i>
|
||||
카테고리</a>
|
||||
|
||||
<a class="tab-bar__link" href="/sopmal/mpage/ordr/selectWslistInqireForm" id="tabBarWishOrBnft" data-sopmalcd="${sopmallInfo.shopInfo.sopmalCd}">
|
||||
<i class="icon icon_tab-bar-wishlist"></i>
|
||||
위시리스트</a>
|
||||
<div class="tab-bar__home-wrapper">
|
||||
<div class="tab-bar__home">
|
||||
<a href="/" class="hide-text">
|
||||
<i class="icon icon_tab-bar-home"></i>
|
||||
<span class="visually-hidden">홈</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="tab-bar__link" href="/sopmal/ordr/selectSpbk">
|
||||
<i class="icon icon_tab-bar-cart"></i>
|
||||
장바구니</a>
|
||||
<a class="tab-bar__link active" href="/sopmal/mpage/mbr/selectMpageMainInqire">
|
||||
<i class="icon icon_tab-bar-mypage"></i>
|
||||
마이페이지
|
||||
</a>
|
||||
</nav>
|
||||
<div class="tab-bar__bg">
|
||||
<div class="tab-bar__bg-fraction"></div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- 햄버거 메뉴 모달 -->
|
||||
<div class="microModal microFullMenu" id="hamburger-menu" aria-hidden="true">
|
||||
<div class="microModal__overlay" tabindex="-1">
|
||||
<div class="microModal__container" role="dialog" aria-modal="true">
|
||||
<div class="microModal__body" id = "hambergerModal">
|
||||
<div class="microModal__top">
|
||||
<h2 class="microModal__title">
|
||||
전체메뉴
|
||||
</h2>
|
||||
<button type="button" class="microModal__close" onclick="closeModal('hamburger-menu');"></button>
|
||||
</div>
|
||||
<div class="microModal__content">
|
||||
<div class="fullMenu">
|
||||
<c:if test="${not isAuthenticated}">
|
||||
<div class="sub-box">
|
||||
<div class="fullMenu__top">
|
||||
<button type="button" class="btn md outline" onclick="fn_move_login();">로그인</button>
|
||||
<button type="button" class="btn md theme" onclick="location.href='/sopmal/mbr/selectJoinGuidance'; setTopMenuCode(); ">회원가입</button>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
<div class="sub-box">
|
||||
<div class="fullMenu__top">
|
||||
<div class="member-rank-summary">
|
||||
<div class="textBtns">
|
||||
<a href="/sopmal/ordr/selectSpbk" class="textBtns__btn">장바구니</a>
|
||||
<c:choose>
|
||||
<c:when test="${isAuthenticated}"><%--회원일시--%>
|
||||
<a href="/sopmal/mpage/mbr/selectMpageMainInqire" class="textBtns__btn">마이페이지</a>
|
||||
<a href="/logout" class="textBtns__btn">로그아웃</a>
|
||||
</c:when>
|
||||
<c:otherwise><%--비회원일시--%>
|
||||
<a href="/sopmal/mpage/ordr/selectMbrOrdrListInqire" class="textBtns__btn">주문조회</a>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
<c:if test = "${isAuthenticated}">
|
||||
<div class="member-rank-summary__top">
|
||||
<div class="member-rank-summary__icon" id = "hambergerGradImg"></div>
|
||||
<a href="/sopmal/mpage/mbr/selectMpageMainInqire" class="member-rank-summary__user">
|
||||
<span class="member-rank-summary__rank" id = "hambergerGradNm"></span>
|
||||
<span class="member-rank-summary__name" id = "hambergermbrNm"></span>
|
||||
</a>
|
||||
<a class="member-rank-summary__benefit-link" href="/sopmal/mpage/bnef/selectMbrGradInqire">등급별 혜택</a>
|
||||
</div>
|
||||
<div class="member-rank-summary__bottom">
|
||||
<div class="member-rank-summary__summary">
|
||||
<a href="/sopmal/mpage/bnef/selectMlgDtlsInqireForm" class="member-rank-summary__summary-item">
|
||||
<img src="/mobile/images/icon_member-rank-mileage.png"
|
||||
alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">마일리지</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span
|
||||
class="member-rank-summary__summary-number comma"
|
||||
id = "hambergerMbrMlgAmt"></span>
|
||||
<span
|
||||
class="member-rank-summary__summary-numberUnit">원</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/sopmal/mpage/bnef/selectCouponDtlsForm" class="member-rank-summary__summary-item">
|
||||
<img src="/mobile/images/icon_member-rank-coupon.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">쿠폰</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number comma" id = "hambergerCoupnCnt"></span>
|
||||
<span
|
||||
class="member-rank-summary__summary-numberUnit">장</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/sopmal/mpage/ordr/selectWslistInqireForm" class="member-rank-summary__summary-item">
|
||||
<img src="/mobile/images/icon_member-rank-wishlist.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">위시리스트</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number comma"
|
||||
id = "hambergerWslistCnt"></span>
|
||||
<span
|
||||
class="member-rank-summary__summary-numberUnit">개</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sub-box">
|
||||
<div class="menu_navigation_wrap">
|
||||
<!-- 카테고리 -->
|
||||
<ul class="side_menu accordion">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${topMenuList.ctgryDvCd eq '01' && topMenuList.gnbExpsrAt eq 'Y'}">
|
||||
<c:if test="${topMenuList.rnum eq '2'}">
|
||||
<li class="isSub list">
|
||||
<div class="isSubDv">
|
||||
<a href="<c:out value="${topMenuList.url}"/>" class="depth"><c:out value ="${topMenuList.ctgryNm}"/><em class="visually-hidden">상세내용닫기</em></a>
|
||||
<a href="<c:out value="${topMenuList.url}"/>" class="moer"></a>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${'3' eq topMenuList.rnum}">
|
||||
<!-- 메뉴 하위가 메뉴인 경우-->
|
||||
<c:if test="${chkUpperMenuCd ne topMenuList.upperCtgryId}">
|
||||
<ul class="view">
|
||||
</c:if>
|
||||
<li><a href='<c:out value="${topMenuList.url}"/>'><c:out value ="${topMenuList.ctgryNm}"/></a></li>
|
||||
<c:if test="${'0' eq topMenuList.nextDepth3 && '0' eq topMenuList.nextDepth2}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:if>
|
||||
<c:if test="${topMenuList.rnum < 4}">
|
||||
<c:set var="chkUpperMenuCd" value="${ topMenuList.upperCtgryId }"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</ul>
|
||||
|
||||
<!-- 최근 본 상품(SIDE) -->
|
||||
<div class="recently_side" id="recentlySite">
|
||||
<!-- <div class="swiper recentlySide-swiper"> -->
|
||||
<!-- <div class="swiper-wrapper" id="recentlySite"> -->
|
||||
|
||||
<!-- <div class="swiper-slide recentlySide__image"> -->
|
||||
<!-- <a href=""> -->
|
||||
<!-- <img src="/mobile/images/상품이미지01.png" alt="해당 이미지에 대한 설명"> -->
|
||||
<!-- </a> -->
|
||||
<!-- </div> -->
|
||||
<!-- <div class="swiper-slide recentlySide__image"> -->
|
||||
<!-- <a href=""> -->
|
||||
<!-- <img src="/mobile/images/상품이미지01.png" alt="해당 이미지에 대한 설명"> -->
|
||||
<!-- </a> -->
|
||||
<!-- </div> -->
|
||||
<!-- <div class="swiper-slide recentlySide__image"> -->
|
||||
<!-- <a href=""> -->
|
||||
<!-- <img src="/mobile/images/상품이미지01.png" alt="해당 이미지에 대한 설명"> -->
|
||||
<!-- </a> -->
|
||||
<!-- </div> -->
|
||||
|
||||
<!-- <div class="swiper-slide recentlySide__image"> -->
|
||||
<!-- <a href=""> -->
|
||||
<!-- <img src="/mobile/images/상품이미지01.png" alt="해당 이미지에 대한 설명"> -->
|
||||
<!-- </a> -->
|
||||
<!-- </div> -->
|
||||
<!-- <div class="swiper-slide recentlySide__image"> -->
|
||||
<!-- <a href=""> -->
|
||||
<!-- <img src="/mobile/images/상품이미지01.png" alt="해당 이미지에 대한 설명"> -->
|
||||
<!-- </a> -->
|
||||
<!-- </div> -->
|
||||
|
||||
<!-- </div> -->
|
||||
<!-- <div class="swiper-pagination theme-pagination"></div> -->
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sub-box">
|
||||
<div class="fullMenu__miscLinks">
|
||||
<h5 class="fullMenu__miscLinks__title">서비스</h5>
|
||||
<ul class="fullMenu__miscLinks__list">
|
||||
<li>
|
||||
<a href="/sopmal/csc/selectCscMainForm" class="fullMenu__miscLinks__link">고객센터</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<c:if test = "${sopmallInfo.shopInfo.cscTelnbOrdrPosblAt eq 'Y'}">
|
||||
<div class="sub-box">
|
||||
<div class="mainNotice__customerContact mainNotice__customerContact--moreInfo">
|
||||
<i class="icon icon_notice03"></i>
|
||||
<div class="mainNotice__customerContact__right">
|
||||
<h4 class="notice__title customer-service">고객센터</h4>
|
||||
<span class="notice__number"><c:out value="${sopmallInfo.shopInfo.cscTelnb}"/></span>
|
||||
<p class="notice__paragraph">
|
||||
<span class="notice__text01"><c:out value="${sopmallInfo.shopInfo.cscWkdayWorkTme}"/></span>
|
||||
<span class="notice__text02">(<c:out value="${sopmallInfo.shopInfo.cscLunchTme}"/>)</span>
|
||||
<br>
|
||||
<span class="notice__text03"><c:out value="${sopmallInfo.shopInfo.cscRstde}"/></span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
////햄버거 메뉴 관련 스크립트
|
||||
// 좌측 메뉴 클릭시 해당 메뉴 보여주기
|
||||
$('.fullMenu__menu__btn').on('click', function () {
|
||||
$(this).addClass('current');
|
||||
$(this).closest('li').siblings().find('.fullMenu__menu__btn').removeClass('current');
|
||||
var index = $(this).closest('li').index() - 1; // 전체 메뉴 버튼을 뺀 나머지 버튼의 인덱스
|
||||
$(this).closest('.fullMenu__content').find('.fullMenu__itemSection').eq(index).siblings().hide();
|
||||
$(this).closest('.fullMenu__content').find('.fullMenu__itemSection').eq(index).show();
|
||||
});
|
||||
|
||||
// 전체 메뉴 클릭시 전체 메뉴 보여주기
|
||||
$('.fullMenuAll').on('click', function () {
|
||||
$(this).addClass('current');
|
||||
$(this).closest('li').siblings().find('.fullMenu__menu__btn').removeClass('current');
|
||||
$(this).closest('.fullMenu__content').find('.fullMenu__itemSection').show();
|
||||
});
|
||||
|
||||
//
|
||||
$('.hamburgerTabBtn').on('click', function () {
|
||||
$('.hamburgerTabBtn').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
var index = $(this).closest('li').index();
|
||||
$('.fullMenu__content').removeClass('active');
|
||||
$('.fullMenu__content').eq(index).addClass('active');
|
||||
});
|
||||
|
||||
$(document).ready(function(){
|
||||
MicroModal.init({
|
||||
disableScroll: true,
|
||||
awaitCloseAnimation: true,
|
||||
});
|
||||
|
||||
$(".menu_navigation_wrap .depth").on('click', function () {
|
||||
/*하위레벨 없을 시 페이지 이동*/
|
||||
if ($(this).closest(".isSub").find(".view").length === 0) {
|
||||
const href = $(this).attr("href");
|
||||
location.href = href;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
35
src/main/webapp/WEB-INF/views/comm/mpage/MypageLeft.jsp
Normal file
35
src/main/webapp/WEB-INF/views/comm/mpage/MypageLeft.jsp
Normal file
@@ -0,0 +1,35 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
|
||||
<aside class="sub-left-menu">
|
||||
<c:if test="${!empty sopmallInfo}">
|
||||
<h2 class="sub-left-menu__title">마이페이지</h2>
|
||||
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}" varStatus="status">
|
||||
<c:if test="${topMenuList.ctgryDvCd eq '05'}">
|
||||
<c:if test="${topMenuList.rnum eq '2'}">
|
||||
<div class="sub-left-menu__list">
|
||||
<a class="sub-left-menu__list-title"><c:out value="${topMenuList.ctgryNm}"/></a>
|
||||
<ul class="sub-left-menu__sub-list">
|
||||
</c:if>
|
||||
<c:if test="${topMenuList.rnum eq '3'}">
|
||||
<c:set var="ctgryId" value="${sessionScope.ctgryId}" />
|
||||
<%-- <li><a href="javascript:void(0)" onclick="setMenuCode('<c:out value="${topMenuList.ctgryId}"/>','<c:out value="${topMenuList.url}"/>')" <c:if test="${ctgryId eq topMenuList.ctgryId}"> class="current" </c:if>><c:out value="${topMenuList.ctgryNm}"/></a></li> --%>
|
||||
<li><a href="javascript:void(0)" onclick="setMenuCode('<c:out value="${topMenuList.ctgryId}"/>','<c:out value="${topMenuList.url}"/>')" <c:if test="${ctgryId eq topMenuList.ctgryId}"> class="current" </c:if>><c:out value="${topMenuList.ctgryNm}"/></a></li>
|
||||
<!-- 4뎁스가 끝나고 새로운 3뎁스가 시작되면 태그를 닫아준다-->
|
||||
<c:if test="${'0' eq topMenuList.nextDepth3 && '0' eq topMenuList.nextDepth2}">
|
||||
</ul>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</aside>
|
||||
|
||||
<script>
|
||||
function setMenuCode(ctgryId, myMenuUrl) {
|
||||
document.cookie = "ctgryId=" + ctgryId + "; path=/sopmal";
|
||||
document.cookie = "myMenuUrl=" + myMenuUrl + "; path=/sopmal";
|
||||
window.location.href = myMenuUrl;
|
||||
}
|
||||
</script>
|
||||
113
src/main/webapp/WEB-INF/views/comm/mpage/MypageRight.jsp
Normal file
113
src/main/webapp/WEB-INF/views/comm/mpage/MypageRight.jsp
Normal file
@@ -0,0 +1,113 @@
|
||||
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<div class="member-rank-summary">
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<div class="member-rank-summary__top">
|
||||
<div class="member-rank-summary__user">
|
||||
<div class="member-rank-summary__rank2">
|
||||
<c:if test = "${not empty mpageResultMap.info.mbrGradIconCours}">
|
||||
<input type = "hidden" name = "" value = "<c:out value = "${cdnurl}${mpageResultMap.info.mbrGradIconCours}"/>" id = "" class = ""/>
|
||||
<img src="${cdnurl}${mpageResultMap.info.mbrGradIconCours}" onerror="this.src='/pc/images/image_placeholder.png'" alt="${ mpageResultMap.info.mbrGradNm }">
|
||||
</c:if>
|
||||
<span class="member-rank-summary__rank"><c:out value="${ mpageResultMap.info.mbrGradNm }"/></span>
|
||||
</div>
|
||||
<span class="member-rank-summary__name"><c:out value="${ mpageResultMap.info.mbrNm }"/><span class="append">님</span></span>
|
||||
</div>
|
||||
<c:if test = "${sopmallInfo.shopInfo.cashAt eq 'Y'}">
|
||||
<div class="member-rank-summary__summary-info">
|
||||
<c:choose>
|
||||
<c:when test="${ mpageResultMap.info.mbrGradAmt gt mpageResultMap.info.rlSetleAmt }">
|
||||
<p>지금부터 <em>
|
||||
<c:out value="${ mpageResultMap.info.attiNeedAmtWon }"/> 더 주문</em>, 총 결제 금액이<em><c:out
|
||||
value="${ mpageResultMap.info.mbrGradAmtWon }"/> 이상</em>이면
|
||||
<span class="member-badge vip"><c:out value="${ mpageResultMap.info.nextMbrGradNm}"/></span>
|
||||
등급이 될 수 있어요!
|
||||
</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p>현재 회원님은
|
||||
<span class="member-badge vip"><c:out value="${ mpageResultMap.info.mbrGradNm }"/></span>등급이에요.
|
||||
</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="member-rank-summary__bottom">
|
||||
<div class="member-rank-summary__summary" style="justify-content: center;">
|
||||
<c:if test="${sopmallInfo.shopInfo.cashAt eq 'Y'}">
|
||||
<a href="/sopmal/mpage/bnef/selectCashDtlsInqireForm" class="member-rank-summary__summary-item">
|
||||
<img src="/pc/images/icon_member-rank-mileage.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">GC 머니</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number three-digit-comma"><c:out value="${mpageResultMap.info.mbrCashAmt}"/></span>
|
||||
<span class="member-rank-summary__summary-numberUnit">점</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</c:if>
|
||||
<a href="/sopmal/mpage/bnef/selectMlgDtlsInqireForm" class="member-rank-summary__summary-item">
|
||||
<img src="/pc/images/icon_member-rank-mileage.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">마일리지</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number three-digit-comma"><fmt:formatNumber value="${mpageResultMap.info.mbrMlgAmt}" pattern="#,###"/></span>
|
||||
<span class="member-rank-summary__summary-numberUnit">점</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/sopmal/mpage/bnef/selectCouponDtlsForm" class="member-rank-summary__summary-item">
|
||||
<img src="/pc/images/icon_member-rank-coupon.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">쿠폰</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number three-digit-comma"><c:out value="${ mpageResultMap.info.couponCnt }"/></span>
|
||||
<span class="member-rank-summary__summary-numberUnit">장</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/sopmal/mpage/ordr/selectWslistInqireForm" class="member-rank-summary__summary-item">
|
||||
<img src="/pc/images/icon_member-rank-wishlist.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">위시리스트</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number three-digit-comma"><c:out value="${ mpageResultMap.info.wishGoodsCnt }"/></span>
|
||||
<span class="member-rank-summary__summary-numberUnit">개</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/sopmal/mpage/ordr/selectMbrOrdrListInqire" class="member-rank-summary__summary-item">
|
||||
<img src="/pc/images/icon_member-rank-delivery.png" alt="">
|
||||
<div class="member-rank-summary__summary-description">
|
||||
<span class="member-rank-summary__summary-name">배송중</span>
|
||||
<p class="member-rank-summary__summary-numberContainer">
|
||||
<span class="member-rank-summary__summary-number three-digit-comma"><c:out value="${ mpageResultMap.info.dlvyingOrdrCnt }"/></span>
|
||||
<span class="member-rank-summary__summary-numberUnit">개</span>
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<c:if test="${sopmallInfo.shopInfo.cashAt eq 'N'}"> <%--충전형마일리지 사용야부에 따라 화면 위치 다름--%>
|
||||
<div class="member-rank-summary__summary-info">
|
||||
<c:choose>
|
||||
<c:when test="${ mpageResultMap.info.mbrGradAmt gt mpageResultMap.info.rlSetleAmt }">
|
||||
<p>지금부터 <em>
|
||||
<c:out value="${ mpageResultMap.info.attiNeedAmtWon }"/> 더 주문</em>, 총 결제 금액이<em><c:out
|
||||
value="${ mpageResultMap.info.mbrGradAmtWon }"/> 이상</em>이면
|
||||
<span class="member-badge vip"><c:out value="${ mpageResultMap.info.nextMbrGradNm}"/></span>
|
||||
등급이 될 수 있어요!
|
||||
</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p>현재 회원님은
|
||||
<span class="member-badge vip"><c:out value="${ mpageResultMap.info.mbrGradNm }"/></span>등급이에요.
|
||||
</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user