초기소스

This commit is contained in:
jazz
2025-10-29 17:08:05 +09:00
parent e531aa9540
commit 439a379a02
7551 changed files with 1234427 additions and 3 deletions

View 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>

View 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>

View 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>

View 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>

View 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>

View 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>