File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit 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="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import="itn.com.cmm.LoginVO" %>
<script src="/publish/js/content.js"></script>
<script src="/publish/js/popupLayer.js"></script>
<script type="text/javascript">
var lastfulstday = ""; //전월 시작일
var lastfuledday = ""; //전월 마지막일
var thisfulstlday = ""; //당월 시작일
var thisfuledtlday = ""; //당원 마지막일
var threefulstday = ""; //3개월전 시작일
var threefuledday = ""; //3개월전 마지막일
$(document).ready(function(){
//초기 전체 리스트 페이지 보여주기
linkPage(1);
var date = new Date() ;
//이전달 첫날/마지막날 조회
if(date.getMonth()+1 == 1){
lastfulstday = date.getFullYear()-1 + "/12" + "/01";
lastfuledday = date.getFullYear()-1 + "/12" + "/"+new Date(date.getFullYear()-1, 12, 0).getDate()+"";
}else{
lastfulstday = date.getFullYear() + "/" ;
lastfulstday += date.getMonth() < 10 ? "0"+ (date.getMonth()) : date.getMonth()+"" ;
lastfuledday = lastfulstday + "/"+ new Date(date.getFullYear(), date.getMonth(), 0).getDate()+"" ;
lastfulstday += "/01" ;
}
//당월 첫날/마지막날 조회
thisfulstlday = date.getFullYear() + "/" ;
thisfulstlday += date.getMonth()+1 < 10 ? "0"+ (date.getMonth()+1) : date.getMonth()+1+"" ;
thisfuledtlday = thisfulstlday + "/"+ new Date(date.getFullYear(), date.getMonth()+1, 0).getDate()+"";
thisfulstlday += "/01" ;
//3개월 이전 날짜 구해오기
threefulstday = prevMonth(3);
threefuledday = today();
/* 목록 정렬 항목 아이콘 표시 */
var searchSortCnd = $("[name='searchSortCnd']").val();
var searchSortOrd = $("[name='searchSortOrd']").val();
if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) {
var $sort_div = $("#sort_"+ searchSortCnd);
var sortClass = 'sortBtn' ;
if (searchSortOrd == "desc") sortClass = "sortBtnDesc";
$sort_div.replaceClass('sortBtn' , sortClass) ;
$sort_div.attr("sortOrd", searchSortOrd);
}
// 정렬 항목 이벤트
$(document).on('click', '.sort', function (){
listSortOrd(this);
});
//목록 정렬 항목 클릭
function listSortOrd(obj){
var sortOrd = $(obj).attr("sortOrd");
var sortCnd = $(obj).attr("id");
$("[name='searchSortCnd']").val(sortCnd.substring(5)); // 구분자 제거
if (sortOrd == "desc") $("[name='searchSortOrd']").val("asc");
else $("[name='searchSortOrd']").val("desc");
linkPage('1'); //각 JSP마다 다를때 메소드 정의해 줘야됨
}
//전체선택 실행
var allChkSts = false;
$("#allCheck").click(function(){
if(!allChkSts){// 전체선택이 해제되어 있을 경우
$("input[name=resvMsgDel]").prop("checked", true);
allChkSts = true;
}else{
$("input[name=resvMsgDel]").prop("checked", false);
allChkSts = false;
}
});
$(document).on('change','#pageUnit', function(){
linkPage(1);
});
subContent();
});
//오늘날짜 구하기
function today() {
var d = new Date();
return getDateStr(d);
}
//이전 날짜 구하기
function prevDay(days) {
var d = new Date();
var dayOfMonth = d.getDate();
d.setDate(dayOfMonth - days);
return getDateStr(d);
}
//이전 월 구하기
function prevMonth(month) {
var d = new Date();
var monthOfYear = d.getMonth();
d.setMonth(monthOfYear - month);
return getDateStr(d);
}
//날짜 받아오기
function getDateStr(myDate){
var year = myDate.getFullYear();
var month = ("0"+(myDate.getMonth()+1)).slice(-2);
var day = ("0"+myDate.getDate()).slice(-2);
return ( year + '/' + month + '/' + day );
}
//캘린더에 날짜 입력해 주기
function setCalVal(val,targetObj){
$('input[name='+targetObj+']').val(val) ;
}
//검색 버튼 실행
function linkPage(pageNo){
var form = document.searchForm;
var stateType = form.stateType.value;
form.pageIndex.value = pageNo;
var sendData = $(document.searchForm).serializeArray();
$(".resvMsgAllLoad").html('<div class="list_info"><table class="tType4"><tbody><tr><td colspan="12">LOADING...</td></tr></tbody></table></div>');
$(".resvMsgAllLoad").load("/web/mjon/reservmsg/selectReservMsgListViewAjax.do", sendData ,function(response, status, xhr){
});
}
//선택 삭제 실행
function fnDelete(){
var msgId = [];
if($("input:checkbox[name='resvMsgDel']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
$("input:checkbox[name='resvMsgDel']:checked").each(function(index){
var disabledChk = $(this).prop('disabled');
if(!disabledChk){ //checkbox disabled 인 것은 제외하고 아이디 저장
msgId[index] = $(this).val();
}
});
if(msgId.length > 0){
//22.04.25 구글 독스 alert 기준으로 이지우가 수정
/* if(confirm("선택한 예약문자를 삭제하시겠습니까? 삭제된 문자는 복구가 불가능 합니다.")){ */
if(confirm("선택한 목록을 삭제하시겠습니까?")){
document.searchForm.msgGroupIdList.value = msgId;
var sendData = $(document.searchForm).serializeArray();
$(".resvMsgAllLoad").load("/web/mjon/reservmsg/deleteReservMsgDataAjax.do", sendData ,function(response, status, xhr){
location.reload(true);
});
}
}else{
alert("삭제할 문자를 선택해 주세요.");
return false;
}
}
//상세보기 버튼 실행
function fnRevDetailPop(msgGroupId, fileCnt){
document.resPopForm.msgGroupId.value = msgGroupId;
var sendData = $(document.resPopForm).serializeArray();
$("#resvMsgDetailPopLoad").load("/web/mjon/reservmsg/selectReservMsgDetailDataAjax.do", sendData ,function(response, status, xhr){
});
}
function fnListLoad(pageType, tabNum){
var form = document.searchForm;
var $tab = $(".table_tab_wrap li").eq(tabNum); //
$tab.addClass("active");
$tab.find("button").attr("title", "선택됨");
$tab.siblings("li.tab").removeClass("active");
$tab.siblings("li.btn_tab").removeClass("active");
$tab.siblings("li.tab").find("button").removeAttr("title");
if(pageType == 'all'){
form.stateType.value = "all";
linkPage(1);
}else if(pageType == 'ready'){
form.stateType.value = "ready";
linkPage(1);
}else if(pageType == 'complete'){
form.stateType.value = "complete";
linkPage(1);
}else if(pageType == 'cancel'){
form.stateType.value = "cancel";
linkPage(1);
}
}
// 전체/단문/장문/그림 탭 선택 처리
function fnTabLoad(tabType, tabNum){
var form = document.searchForm;
form.tabType.value = tabType;
//해당 탭의 전체 리스트 내역으로 불러오기
fnListLoad('all', '0');
var n=tabNum+1;
//탭 선택 CSS 처리
var $tab = $(".list_tab_wrap2 li:nth-child("+n+")");
var $tabPrev = $(".list_tab_wrap2 li:nth-child("+n+")").prev("li")
$tab.addClass("active");
$tab.find("button").attr("title", "선택됨");
$tab.siblings("li.tab").removeClass("active");
$tab.siblings("li.tab").find("button").removeAttr("title");
$tab.siblings("li:not(li:last-child)").find("button").css("border-right","1px solid #e5e5e5");
$tabPrev.find("button").css("border-right","0");
console.log('a');
}
function fnSearch(pageNo){
var form = document.searchForm;
form.pageIndex.value = pageNo ;
form.action="/web/mjon/reservmsg/selectReservMsgView.do";
form.submit();
}
function fnReservCancel(msgGroupId, agentCode, msgType){
var form = document.resCancelForm;
var loginVO = '${LoginVO}';
form.msgGroupId.value = msgGroupId;
form.agentCode.value = agentCode;
form.msgType.value = msgType;
if(loginVO == "" || loginVO == null){
alert("로그인 후 이용이 가능합니다.");
return false;
}
var data = new FormData(form);
url = "/web/mjon/reservmsg/deleteReservMsgCancelDataAjax.do";
if(confirm("정말 예약을 취소하시겠습니까?")){
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: true,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if("fail"==returnData.result){
alert(returnData.message);
return false;
}
var smsCnt = returnData.resultSts;
alert("예약 발송이 정상적으로 취소 되었습니다.");
//예약 관리 리스트 다시 불러오기
//linkPage(1);
//현황도 갱신 필요하여 새로고침으로 변경
location.reload(true);
} else if(status== 'fail'){
alert(returnData.message);
}
},
error: function (e) {
alert("예약 취소에 실패하였습니다."); console.log("ERROR : ", e);
},
beforeSend : function(xmlHttpRequest) {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete : function(xhr, textStatus) {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
});
}
}
function fnExcelDownLoad(pageType, tabType){
var form = document.searchForm;
var loginVO = '${LoginVO}';
form.stateType.value = pageType;
form.tabType.value = tabType;
if(loginVO == "" || loginVO == null){
alert("로그인 후 이용이 가능합니다.");
return false;
}
if(confirm("엑셀 다운로드를 하시겠습니까?")){
form.action="/web/mjon/reservmsg/reservMsgExcelDownLoadAjax.do";
form.submit();
}
}
/* 사용내역서 클릭 시 내역서 새창 팝업 오픈 */
function fnShowPrintPopup() {
//만들려는 팝업의 크기
var popup_wid = '840';
var popup_ht = '900';
var popup_left = (window.screen.width/2)-(popup_wid/2);
var popup_top =(window.screen.height/2)-(popup_ht/2);
$("#searchForm").attr("target","reservMsgPrint");
window.open('', 'reservMsgPrint', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top +',scrollbars=1');
$("#searchForm").attr({"action":"/web/mjon/reservmsg/printReservMsgDataAjax.do", "method":"post"}).submit();
}
/* 윈도우팝업 열기 */
function infoPop(pageUrl){
document.popForm.pageType.value = pageUrl;
document.popForm.action = "/web/pop/infoPop.do";
document.popForm.method = "post";
window.open("about:blank", 'infoPop', 'width=790, height=330, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
document.popForm.target = "infoPop";
document.popForm.submit();
}
//발송결과 - 대기/성공/실패
function subContent(p_content_no){
var sendData = $(document.listForm).serializeArray();
var v_html_pre = '<table>'
+ '<caption>구분, 충전금액, 사용금액, 잔액 등 정보를 제공하는 표</caption>'
+ '<colgroup>'
+ '<col style="width: 115px;">'
+ '<col style="width: calc((100% - 115px)/3);">'
+ '<col style="width: calc((100% - 115px)/3);">'
+ '<col style="width: calc((100% - 115px)/3);">'
+ '</colgroup>'
+ '<thead>'
+ '<tr>'
+ '<th scope="col">구분</th>'
+ '<th scope="col">충전금액</th>'
+ '<th scope="col">사용금액</th>'
+ '<th scope="col">잔액</th>'
+ '</tr>'
+ '</thead>'
+ '<tbody>'
+ '<tr><td colspan="4">LOADING...</td></tr>'
+ '</tbody>'
+ '</table>';
var v_html_pre = ''
+ '<div class="rev_admin_in">'
+ '<div class="rev_admin_top clearfix">'
+ '<p>전체</p>'
+ '<p></p>'
+ '</div>'
+ '<div class="rev_admin_btm admin_btm">'
+ '<table class="tType4"><tbody><tr><td>LOADING...</td></tr></tbody></table>'
+ '</div>'
+ '</div>'
+ '<div class="rev_admin_in">'
+ '<div class="rev_admin_top clearfix">'
+ '<p>단문(SMS)</p>'
+ '<p></p>'
+ '</div>'
+ '<div class="rev_admin_btm admin_btm">'
+ '<table class="tType4"><tbody><tr><td>LOADING...</td></tr></tbody></table>'
+ '</div>'
+ '</div>'
+ '<div class="rev_admin_in">'
+ '<div class="rev_admin_top clearfix">'
+ '<p>장문(LMS)</p>'
+ '<p></p>'
+ '</div>'
+ '<div class="rev_admin_btm admin_btm">'
+ '<table class="tType4"><tbody><tr><td>LOADING...</td></tr></tbody></table>'
+ '</div>'
+ '</div>'
+ '<div class="rev_admin_in">'
+ '<div class="rev_admin_top clearfix">'
+ '<p>그림(MMS)</p>'
+ '<p></p>'
+ '</div>'
+ '<div class="rev_admin_btm admin_btm">'
+ '<table class="tType4"><tbody><tr><td>LOADING...</td></tr></tbody></table>'
+ '</div>'
+ '</div>'
;
//$("#prePaymentYn_Y").html('<div class="list_info"><table class="tType4"><tbody><tr><td colspan="12">LOADING...</td></tr></tbody></table></div>');
$("#revAdmin").html(v_html_pre);
$("#revAdmin").load("/web/reservedmsg/subcontent/MsgSentView_HA_allSentAjax.do", sendData ,function(response, status, xhr){
});
}
</script>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<!-- 문자내용 팝업 data-tooltip: rev_popup01 -->
<div class="tooltip-wrap">
<div class="popup-com adr_layer rev_popup01" tabindex="0" data-tooltip-con="rev_popup01" data-focus="rev_popup01" data-focus-prev="rev_popup01-close" style="width: 440px;">
<div class="popup_heading">
<p>문자내용</p>
<button type="button" class="tooltip-close" data-focus="rev_popup01-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in" id="resvMsgDetailPopLoad">
<div class="popup_btn_wrap2" style="justify-content: center;">
<button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>
</div>
</div>
</div>
</div><!--// 문자내용 팝업 -->
<div class="inner">
<!-- send top -->
<div class="send_top">
<!-- 결제관리 - 요금 사용내역 -->
<div class="rev_admin_cont serv_content current">
<div class="heading">
<h2>예약관리</h2>
<button type="button" class="button info" onclick="infoPop('selectReservMsgView');">사용안내</button>
</div>
<!-- tab button -->
<div class="pay_tab_wrap">
<%@include file="/WEB-INF/jsp/web/kakao/include/KakaoReservTopMentTap.jsp" %>
</div>
<!--// tab button -->
<%--<div class="titBox">
<p>- 최근 3개월간 예약된 메시지를 확인할 수 있으며, 이후 내역은 자동 삭제됩니다.</p>
<p>- 예약문자는 수정 가능하며, 예약 발송시간 5분전까지만 취소·삭제 가능합니다.</p>
<p>- 취소·삭제된 메시지는 복구가 불가하며, 취소·삭제된 건에 대한 금액은 자동 재적립됩니다.</p>
<p>- 단문문자는 최대 26시간, 장문 및 그림문자는 최대 49시간까지 결과값이 수신되지 않을 경우 실패(비과금) 처리됩니다.</p>
<p>- 이동통신사 또는 수신자의 사정으로 전송이 지연된 경우 전송결과가 늦게 확인될 수 있습니다.</p>
<p>- 전송 실패 건에 대해서도 재전송이 가능합니다.</p>
<p>- 야간(21:00~08:00) 예약전송은 별도의 추가 인증을 받아야 전송 가능합니다.</p>
</div>--%>
<form id="searchForm" name="searchForm" method="post">
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
<input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<input type="hidden" id="tabType" name="tabType" value="all"/><!-- 탭 종류 -->
<input type="hidden" id="stateType" name="stateType" value="all"/><!-- 발송상태 종류 -->
<div class="rev_content" id="tab5_1">
<!-- 페이지 로딩 속도를 위해서 ajax 로딩처리 -->
<div class="rev_admin" id ="revAdmin">
</div>
</div>
<div class="excel_middle">
<div class="select_btnWrap clearfix">
<div class="btn_left">
<span class="cal_label">기간선택</span>
<div class="calendar_wrap">
<input type="text" class="startDate inp calendar" title="검색 시작일" id="startDate" name="startDate" value="<c:out value='${mjonResvMsgVO.startDate}'/>" data-datecontrol="true">
<span class="dateEtc">~</span>
<input type="text" class="endDate inp calendar" title="검색 종료일" id="endDate" name="endDate" value="<c:out value='${mjonResvMsgVO.endDate}'/>" data-datecontrol="true">
</div>
<button type="button" onclick="setCalVal(lastfulstday,'startDate');setCalVal( lastfuledday,'endDate'); return false;" class="btnType btnType19">전월</button>
<button type="button" onclick="setCalVal(thisfulstlday,'startDate');setCalVal( thisfuledtlday,'endDate'); return false;" class="btnType btnType19">당월</button>
<button type="button" onclick="setCalVal(threefulstday,'startDate');setCalVal( threefuledday,'endDate'); return false;" class="btnType btnType19">3개월</button>
<button type="button" class="btnType6" onClick="javascript:fnSearch(1); return false;">조회</button>
</div>
<div class="btn_right">
<c:if test="${appMgmt }">
<label for="searchCondition_01" class="label">발신방식 == ${mjonResvMsgVO.searchCondition_01}</label>
<select name="searchCondition_01" id="searchCondition_01" class="selType2 select_all_btn">
<option value="" <c:if test="${empty mjonResvMsgVO.searchCondition_01 }">selected</c:if> >발송방식 전체</option>
<option value="H" <c:if test="${mjonResvMsgVO.searchCondition_01 == 'H'}">selected</c:if> >WEB</option>
<option value="A" <c:if test="${mjonResvMsgVO.searchCondition_01 == 'A'}">selected</c:if> >API</option>
</select>
</c:if>
<label for="searchCondition" class="label">발신번호 선택 == ${mjonResvMsgVO.searchCondition}</label>
<select name="searchCondition" id="searchCondition" class="selType2 select_btn">
<%-- <option value="1" <c:if test="${mjonResvMsgVO.searchCondition == '1'}">selected</c:if> >제목</option> --%>
<option value="2" <c:if test="${mjonResvMsgVO.searchCondition == '2'}">selected</c:if> >발신번호</option>
</select>
<div class="search">
<label for="id" class="label"></label>
<%-- <input type="text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'"> --%>
<input type="text" class="send_text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
<button type="button" class="btnType btnType2" onClick="javascript:fnSearch(1); return false;">검색</button>
</div>
</div>
</div>
</div>
<div class="list_tab_wrap2 type4">
<!-- tab button -->
<ul class="list_tab">
<li class="tab active"><button type="button" onclick="fnTabLoad('all',0); return false;">전체</button></li>
<li class="tab"><button type="button" onclick="fnTabLoad('S',1); return false;">단문(SMS)</button></li>
<li class="tab"><button type="button" onclick="fnTabLoad('L',2); return false;">장문(LMS)</button></li>
<li class="tab"><button type="button" onclick="fnTabLoad('M',3); return false;">그림(MMS)</button></li>
</ul><!--// tab button -->
</div>
<!-- 예약관리 > 전체 -->
<div class="price_history_cont current" id="listTab_2">
<!-- tab button -->
<div class="table_tab_wrap">
<ul>
<li class="tab active"><button type="button" onclick="fnListLoad('all','0'); return false;">전체</button></li>
<li class="tab"><button type="button" onclick="fnListLoad('ready','1'); return false;">발송대기</button></li>
<li class="tab"><button type="button" onclick="fnListLoad('complete','2'); return false;">발송완료</button></li>
<li class="tab"><button type="button" onclick="fnListLoad('cancel','3'); return false;">예약취소</button></li>
</ul><!--// tab button -->
</div>
<!-- 예약관리 리스트 -->
<div class="table_cont current resvMsgAllLoad" id="tableCont_1">
</div><!-- //전체 종료 -->
<div class="table_cont current resvMsgReadyLoad" id="tableCont_2">
</div><!-- 발송대기 종료 -->
<div class="table_cont current resvMsgCompleteLoad" id="tableCont_3">
</div><!-- 발송완료 종료 -->
<div class="table_cont current resvMsgCancelLoad" id="tableCont_4">
</div><!-- 예약 취소 종료 -->
<!-- table -->
</div>
</form>
</div>
</div><!--// send top -->
</div>
<form id="resPopForm" name="resPopForm" method="post">
<input type="hidden" id="msgGroupId" name="msgGroupId" value=""/>
<input type="hidden" id="fileCnt" name="fileCnt" value=""/>
</form>
<form id="resCancelForm" name="resCancelForm" method="post">
<input type="hidden" id="msgGroupId" name="msgGroupId" value=""/>
<input type="hidden" id="agentCode" name="agentCode" value=""/>
<input type="hidden" id="msgType" name="msgType" value=""/>
</form>
<form name="popForm" id="popForm" method="post">
<input type="hidden" name="pageType" id="pageType" value=""/>
</form>