초기소스
This commit is contained in:
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>
|
||||
Reference in New Issue
Block a user