/** * 20241218 advc 이호영 * @기존 MsgDataView.jsp에 있는 js를 가져와서 분기 처리중 * - document.ready는 init.js로 이동함 * * */ // 문자 그룹정보 => 재전송용 function getMjMsgGroupInfoByResend() { $.ajax({ type: "POST", url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", data: {"msgResendAllGroupId" : msgResendAllGroupId}, dataType:'json', async: false, success: function (data) { //alert(JSON.stringify(data)); if(data.isSuccess == true){ var msgData = data.resultMsgInfo; var fileData = data.resultMsgAddPhotoInfo; // 발신번호 var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) { alert("발신번호가 이전에 발송한 번호가 아닙니다.\n발신번호를 확인해주세요.") } var smsTxt = msgData.smsTxt; var subject = msgData.subject; var fileId = ""; var filePath = ""; var len = fileData.length; // 기존 내용 지워주기 //$(".btnReset").trigger("click"); $('.delLi').each(function(){ $(this).remove(); }); $('.preBoxF').each(function(){ $(this).remove(); }); $('#imgCnt').val(0); // 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기 imgFilePath = []; imgFileId = []; // 문자제목 if (msgData.subject != null && msgData.subject != "") { $('.msg_title').addClass('active'); $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기 $('.textbox').show(); $("#mmsSubject").val(subject); } // 문자내용 if (smsTxt.indexOf("(광고)") == 0) { $('#send_adYnY').prop('checked', true); //광고 상하단 내용 넣어주기 advMsgInsert(); // 광고 기본정보 제거 smsTxt = $.trim(smsTxt.replace("(광고)", "")); var smsTxtLastIdxCnt = smsTxt.lastIndexOf("무료거부"); if (smsTxtLastIdxCnt != -1) { smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt)); } } $('#smsTxtArea').val(smsTxt); // 첨부 이미지가 있는경우 이미지 처리해주기 if(len > 0) { for(var i=0; i < len; i++) { var num = i + 1; var imgId = fileData[i].atchFileId; var imgSn = fileData[i].fileSn; var fileStreCours = fileData[i].fileStreCours; var streFileNm = fileData[i].streFileNm; var fileExtsn = fileData[i].fileExtsn; /* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */ var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn; myMsgImageControl(imgSrc, "edit_n", "Template", imgId); } fnByteString($('#smsTxtArea').val()); } else { fnByteString($('#smsTxtArea').val()); } // 문자전송 상단으로 이동 var sendOfT=$('.send_top').offset().top; $('html,body').stop().animate({'scrollTop':sendOfT-60},250); } else { //alert("Message : " + msg); } }, error: function (e) { //alert("저장에 실패하였습니다."); //console.log("ERROR : ", e); } }); } // 문자 상세정보 => 재전송용 function getMjMsgListByResend() { $.ajax({ type: "POST", url: "/web/mjon/msgdata/selectMjMsgListByResendAjax.do", data: {"msgResendAllGroupId" : msgResendAllGroupId}, dataType:'json', async: false, success: function (data) { console.log('data : ', data); if(data.isSuccess == true){ var listCnt = data.resultList.length; //수신자 처리 변수 var callToList = []; //수신자 처리 리스트 var tableData = []; //수신자 tabulator 처리 변수 for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 callToList[i] = data.resultList[i].callTo; tableData.push({phone: removeDash(callToList[i])}); } console.log('tableData : ', tableData); if(tableData.length > 0){ // 데이터 추가 setTimeout(() => { tableL.addData(dupliPhoneData(tableData)); totRows = tableL.getRows().length; console.log('totRows : ', totRows); updateTotCnt(totRows); //전체 데이터 갯수 구하기 //결제 금액 구하기 totalPriceSum(totRows); }, 0); // 초기화 직후에 실행 } } else { //alert("Message : " + msg); } }, error: function (e) { //alert("저장에 실패하였습니다."); //console.log("ERROR : ", e); } }); } // 문자발송 URL Move function goMsgUrlMove() { document.location.href = "/web/mjon/msgdata/selectMsgDataView.do"; } function listMsgDataView(){ var sendData = $(document.goPageAjax).serializeArray() ; console.log('sendData : ', sendData) $(".contentArea").load("/web/mjon/msgdata/selectMsgDataSMLViewAjax.do", sendData ,function(response, status, xhr){ //문자 재전송 및 주소록 전달 처리를 위해 사용 $("#msgForm").ready(function(){ //문자 내용 폼이 로드된 후 실행 //헤더 문자검색 결과 처리 var headerMsgSearchFlag = '${headerMsgSearchVO.headerMsgSearchFlag}'; if(headerMsgSearchFlag == 'Y'){ var letterType = '${headerMsgSearchVO.msgType}'; var form = document.letterForm; var searchKeyword = '${headerMsgSearchVO.searchKeyword}'; form.letterType.value = letterType; form.searchKeyword.value = searchKeyword; if(letterType == 'P'){ //최 하단 그림문자 탭 리스트 내용 불러오기 fnPhotoListAjax(1); //문자 샘플 탭 활성화 시키기 TabType2($('.tabType2 li').eq(1), '2'); //하단 리스트 탭으로 이동 시키기 var offset = $('.tabType2').offset(); $('html').animate({scrollTop : offset.top}, 400); }else if(letterType == 'L' || letterType == 'S' ){ //문자 샘플 탭 활성화 시키기 TabType2($('.tabType2 li').eq(0), '1'); //최 하단 문자 샘플 탭 리스트 내용 불러오기 fnLetterListAjax(1); if(letterType == 'S'){ $('.tDep1_letType a').eq(0).addClass('on'); $('.tDep1_letType a:last-child').removeClass('on'); }else{ $('.tDep1_letType a').eq(0).removeClass('on'); $('.tDep1_letType a:last-child').addClass('on'); } //하단 리스트 탭으로 이동 시키기 var offset = $('.tabType2').offset(); $('html').animate({scrollTop : offset.top}, 400); } } //메인화면 더많은 샘플보기 버튼 선택시 처리 var moreSamFlag = '${moreSampleYn}'; if(moreSamFlag == 'Y'){ //문자 샘플 탭 활성화 시키기 var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; var letterTab = '0'; var cateNo = "${cateCodeVO.cateNo}"; if(mainLetterTypeFlag == 'P'){ TabType2($('.tabType2 li').eq(1), '2'); }else{ TabType2($('.tabType2 li').eq(letterTab), '1'); } //장문 일 시 tDep1_letType 탭 세팅 if(mainLetterTypeFlag == 'L'){ $('.tDep1_letType a').removeClass('on'); $('.tDep1_letType a').eq(1).addClass('on'); } //카테고리 탭 활성화 처리 if(mainLetterTypeFlag == 'P'){ //그림문자 샘플로 이동 왔을 시 $('.tDep2_cateCode').find('.on').removeClass('on'); $('.tDep2_cateCode a').each(function(index){ if($(this).attr('value') == cateNo){ $(this).addClass('on'); } }) } if(mainLetterTypeFlag != 'P'){ //단문,장문 샘플로 왔을 시 $('.tDep1_cateCode').find('.on').removeClass('on'); $('.tDep1_cateCode a').each(function(index){ if($(this).attr('value') == cateNo){ $(this).addClass('on'); } }) } //하단 리스트 탭으로 이동 시키기 var offset = $('.tabType2').offset(); $('html').animate({scrollTop : offset.top}, 400); } //메인화면 그림문자 이미지 선택시 처리 var mainImgFlag = '${mainImgVO.mainImgFlag}'; if(mainImgFlag == 'Y'){ //카테고리 처리 var cateNo = "${cateCodeVO.cateNo}"; $('.tDep2_cateCode').find('.on').removeClass('on'); $('.tDep2_cateCode a').each(function(index){ if($(this).attr('value') == cateNo){ $(this).addClass('on'); } }) var atchFileId = '${mainImgVO.atchFileId1}'; var fileSn = '${mainImgVO.fileSn}'; var strImgPath = '${mainImgVO.strImgPath}'; fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); } //메인화면 인기문자 메세지 선택시 처리 var mainLetterFlag = '${mainLetterVO.mainLetterFlag}'; if(mainLetterFlag == 'Y'){ var letterTab = '0'; //문자샘플 활성화 처리 TabType2($('.tabType2 li').eq(0), '1'); //단문,장문 탭 활성화 처리 var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; if(mainLetterTypeFlag == 'L'){ $('.tDep1_letType a').removeClass('on'); $('.tDep1_letType a').eq(1).addClass('on'); } //카테고리 활성화 처리 var cateNo = "${cateCodeVO.cateNo}"; $('.tDep1_cateCode').find('.on').removeClass('on'); $('.tDep1_cateCode a').each(function(index){ if($(this).attr('value') == cateNo){ $(this).addClass('on'); } }) var smsTxt = '${mainLetterVO.smsTxt}'; if(smsTxt != null){ smsTxt = smsTxt.replaceAll("
", "\n"); //줄발꿈문자 변환하기 $("#smsTxtArea").val(smsTxt); fnByteString(smsTxt); } } //맞춤제작 내보관함 이미지 선택시 처리 var customImgFlag = '${customImgVO.customImgFlag}'; if(customImgFlag == 'Y'){ var atchFileId = '${customImgVO.atchFileId1}'; var fileSn = '${customImgVO.fileSn}'; var strImgPath = '${customImgVO.strImgPath}'; fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); } //문자 재전송 처리 var msgResendFlag = '${reSendMsgVO.msgResendFlag}'; var msgSeqList = []; msgSeqList = '${reSendMsgVO.msgSeqList}'; if(msgSeqList.length > 0){ fnMsgResend(msgResendFlag, msgSeqList); } //주소록에서 주소를 전송한 경우 처리 var moveAddrFlag = '${addrVO.moveAddrFlag}'; var addrIdList = []; addrIdList = '${addrVO.addrIdList}'; if(addrIdList.length > 0) { fnAddrSet(moveAddrFlag, addrIdList); } // 문자 재전송 New if (msgResendAllFlag == "Y") { if (msgResendAllReplaceYn != "Y") { // 문자 그룹정보 => 재전송용 getMjMsgGroupInfoByResend(); } // 문자 상세정보 => 재전송용 getMjMsgListByResend(); } }); }).slideDown(); } function fnCustomImgSendMsg(atchFileId, fileSn, filePath){ var imgId = ""; var imgSrc = ""; /* imgSrc = filePath.replace("/usr/local/tomcat_mjon/webapps/mjon",""); */ /* imgSrc = filePath; */ imgId = atchFileId; imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + atchFileId + '&fileSn=' + fileSn; myMsgImageControl(imgSrc, "edit_n", "Template", imgId); } function fnMsgResend(msgResendFlag, msgSeqList){ if(msgResendFlag == 'Y'){ // 문자재전송에서 넘어오는 경우 var form = document.msgResendForm; form.msgSeqList.value = msgSeqList; var data = new FormData(form); url = "/web/mjon/msgdata/selectReSendMsgDataListAjax.do"; $.ajax({ type: "POST", url: url, data: data, dataType:'json', async: false, processData: false, contentType: false, cache: false, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if("fail"==returnData.result){ alert(returnData.message); return false; }else if("loginFail"==returnData.result){ alert(returnData.message); return false; }else if(returnData.resultListCnt == '0'){ alert("재전송 문자내용이 없습니다."); return false; }else{ var data = returnData; var listCnt = returnData.resultListCnt; var photoInfo = returnData.resultMsgPhotoInfo; //수신자 처리 변수 var callToList = []; //수신자 처리 리스트 var tableData = []; //수신자 tabulator 처리 변수 //var subject = data.resultList[0].subject; //제목 //var smsTxt = data.resultList[0].smsTxt; //문자내용 //var fileCnt = data.resultList[0].fileCnt; //그림문자 이미지 갯수 //var filePath1 = data.resultList[0].fileType1; //이미지1 파일 경로 //var filePath2 = data.resultList[0].fileType2; //이미지2 파일 경로 //var filePath3 = data.resultList[0].fileType3; //이미지3 파일 경로 //var atchFileId1 = photoInfo.atchFileId1; //이미지1 파일 번호 //var atchFileId2 = photoInfo.atchFileId2; //이미지2 파일 번호 //var atchFileId3 = photoInfo.atchFileId3; //이미지3 파일 번호 for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 callToList[i] = data.resultList[i].callTo; tableData.push({phone: removeDash(callToList[i])}); } if(tableData.length > 0){ tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 //totRows = tableL.getRows().length; //updateTotCnt(totRows); //전체 데이터 갯수 구하기 //결제 금액 구하기 //totalPriceSum(totRows); } return false; } } else if(status== 'fail'){ alert(returnData.message); } }, error: function (e) { alert("문자 재전송 번호 등록에 실패하였습니다."); console.log("ERROR : ", e); } }); } } function fnAddrSet(moveAddrFlag, addrIdList){ if(moveAddrFlag == 'Y'){ // 주소록에서 넘어오는 경우 var form = document.moveAddrForm; form.addrIdList.value = addrIdList; var data = new FormData(form); url = "/web/mjon/addr/selectAddrDataListAjax.do"; $.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; }else if("loginFail"==returnData.result){ alert(returnData.message); return false; }else if(returnData.resultListCnt == '0'){ alert("전달된 주소록이 없습니다."); return false; }else{ var listCnt = returnData.resultListCnt; //수신자 처리 변수 var tableData = []; //수신자 tabulator 처리 변수 for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 tableData.push({ name: returnData.resultList[i].addrNm ,phone: removeDash(returnData.resultList[i].addrPhoneNo) ,rep1: returnData.resultList[i].addrInfo1 ,rep2: returnData.resultList[i].addrInfo2 ,rep3: returnData.resultList[i].addrInfo3 ,rep4: returnData.resultList[i].addrInfo4 }); } tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 totRows = tableL.getRows().length; updateTotCnt(totRows); //전체 데이터 갯수 구하기 //결제 금액 구하기 totalPriceSum(totRows); return false; } } 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 fnLetterListAjax(index){ var form = document.letterForm; var letterType = form.letterType.value; if($('.tDep1_letType a').eq(0).hasClass('on')) { form.letterType.value='S'; } else if ($('.tDep1_letType a').eq(1).hasClass('on')) { form.letterType.value='L'; } //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 if(form.searchKeyword.value != '') { form.categoryCode.value = ""; form.hashTag.value = ""; $('.tDep1_cateCode').find('.on').removeClass('on'); $('.tDep1_cateCode').find('.cateAll').addClass('on'); $('.tDep1_hashTag').find('.on').removeClass('on'); $('.tDep1_hashTag').find('.hashAll').addClass('on'); }else{ //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 var strTagTxt = $('.tDep1_hashTag').find('.on').text().replace("#",""); if(strTagTxt == "전체"){ form.hashTag.value = ""; }else{ form.hashTag.value = strTagTxt; } } form.pageIndex.value = index; form.letterType.value = letterType; var sendData = $(document.letterForm).serializeArray(); //하위 카테고리 $("#tDep1_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ if(document.letterForm.searchKeyword.value == ''){ $('.bottom_content .area_total_count').hide(); } if(form.hashTag.value != ''){ if($('#letterLoad .nodata_box').length > 0){ $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); } } }); //문자샘플 $("#letterLoad").load("/web/mjon/msgdata/selectLetterDataListAjax.do", sendData ,function(response, status, xhr){ if(document.letterForm.searchKeyword.value == ''){ $('.bottom_content .area_total_count').hide(); } if(form.hashTag.value != ''){ if($('#letterLoad .nodata_box').length > 0){ $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); } } }); } function fnPhotoListAjax(index){ var form = document.letterForm; //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 if(form.searchKeyword.value != '') { form.categoryCode.value = ""; form.hashTag.value = ""; $('.tDep2_cateCode').find('.on').removeClass('on'); $('.tDep2_cateCode').find('.cateAll').addClass('on'); $('.tDep2_hashTag').find('.on').removeClass('on'); $('.tDep2_hashTag').find('.hashAll').addClass('on'); }else{ //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 var strTagTxt = $('.tDep2_hashTag').find('.on').text().replace("#",""); if(strTagTxt == "전체"){ form.hashTag.value = ""; }else{ form.hashTag.value = strTagTxt; } } form.letterType.value = 'P'; form.pageIndex.value = index; var sendData = $(document.letterForm).serializeArray(); //하위 카테고리 $("#tDep2_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ if(document.letterForm.searchKeyword.value == ''){ $('.bottom_content .area_total_count').hide(); } if(form.hashTag.value != ''){ if($('#letterLoad .nodata_box').length > 0){ $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); } } }); $("#photoLoad").load("/web/mjon/msgdata/selectPhotoDataListAjax.do", sendData ,function(response, status, xhr){ photoLayerView(); if(document.letterForm.searchKeyword.value == ''){ $('.bottom_content .area_total_count').hide(); } if(form.hashTag.value != ''){ if($('#photoLoad .nodata_box').length > 0){ $('#photoLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); } } }); } function fnMyMsgListAjax(index){ if(loginVO == "" || loginVO == null){ //alert("로그인 후 사용이 가능합니다."); location.href="/web/user/login/login.do"; return false; }else{ document.myMsgForm.pageIndex.value = index; var sendData = $(document.myMsgForm).serializeArray(); $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ /* $(".msg_cont").mCustomScrollbar({ axis: 'y', scrollbarPosition: "inside", theme: "dark", autoHideScrollbar: false }); */ }); } } function fnMyMsgSearchListAjax(index){ document.myMsgForm.pageIndex.value = index; var sendData = $(document.myMsgForm).serializeArray(); $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ /* $(".msg_cont").mCustomScrollbar({ axis: 'y', scrollbarPosition: "inside", theme: "dark", autoHideScrollbar: false }); */ }); } function fnMsgExcelDataView(){ /* var sendData = $(document.searchForm).serializeArray() ; //엑셀 문자 탭 활성화 시키기 TabType1($('.tabType1 li').eq(1), '2'); $(".contentExcelArea").load("/web/mjon/msgdata/selectMsgExcelDataViewAjax.do", sendData ,function(response, status, xhr){ }); */ location.href="/web/mjon/msgdata/excel/selectMsgExcelDataView.do"; } function fnMsgDataView(){ location.href="/web/mjon/msgdata/selectMsgDataView.do"; } function fn_saveMyMsg(){ // 내 문자 보관함 저장 var form = document.msgForm; var myImgFileId = []; //신규 이미지 추가 파일 Id 저장 변수 // var adverYn = $("input[name='send_adYn']:checked").val(); //광고 체크여부 var adverYn = $('#adverYn').val(); //광고 체크여부 /* 이미지 에디터를 사용하여 추가한 경우 이미지 업로드 처리 - 단 에디터에서 템플릿을 선택한 경우는 업로드안함 신규 이미지 추가를 한 경우만 이미지 파일 업로드 처리함 */ $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { if($("#delLi"+idx).hasClass("Template")){ //이미지 에디터 템플릿 이미지 선택 여부 확인 templateYn.push("Y"); } else { templateYn.push("N"); } if($(el).hasClass("edit_y")) { //에디터를 사용했고 //이미지 변환 const imgBase64 = $(el).attr("src"); const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 let array = []; for (let i = 0; i < decodImg.length; i++) { array.push(decodImg.charCodeAt(i)); } const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; let formData = new FormData(); formData.append('file', file, fileName); $.ajax({ type: 'post', url: '/web/mjon/msgdata/insertEditImageAjax.do', cache: false, data: formData, dataType:'json', processData: false, contentType: false, async: false, success: function (returnData, status) { if(status == 'success'){ // imgFilePath 에 배열로 담아주기(이미지 순서대로) //console.log(imgFilePath); //imgFilePath.push(returnData.filefullPath); myImgFileId.push(returnData.atchFileId); } else if(status== 'fail'){ alert(returnData.message); } }, error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } }); } else { //에디터 안거친 템플릿 이미지면 바로 src 때림 imgFilePath.push($(el).attr("src")); } }); if(myImgFileId.length > 0 && imgFileId.length > 0){ //기존 샘플 이미지와 이미지 에디터 둘다 사용한 경우 var tempImgId = []; tempImgId.push(myImgFileId); tempImgId.push(imgFileId); form.imgFileId.value = tempImgId; }else if(myImgFileId.length > 0){ //이미지 에디터에서 신규 등록한 이미지 form.imgFileId.value = myImgFileId; }else{ //샘플 이미지 선택만 했을경우(이미지 에디터 사용 안했을때) form.imgFileId.value = imgFileId; } //광고 문자 내용 합쳐주기 if(adverYn == 'Y'){ var adTxt = $('.ad_txt').text(); var denyTxt = $('.deny_txt').text(); var smsTxt = form.smsTxtArea.value; //var adverTxt = adTxt + '\n\n' + smsTxt + '\n\n' + denyTxt; var adverTxt = smsTxt; form.smsTxt.value = adverTxt; }else{ var smsTxt = form.smsTxtArea.value; form.smsTxt.value = smsTxt; } //문자 종류 설정(S:단문 , L:장문 , P:그림) var photoSts = $('.delLi').length; var conLeng = conByteLeng(form.smsTxt.value); // 내용 문자 입력 바이트 수 계산하기 if(photoSts > 0){ form.msgType.value = 'P'; }else if(conLeng > 90){ form.msgType.value = 'L'; }else{ form.msgType.value = 'S'; } if(photoSts == '0' && conLeng == '0'){ alert("문자내용을 입력해 주세요."); return false; } var data = new FormData(form); url = "/web/mjon/msgdata/insertMyMsgDataAjax.do"; $.ajax({ type: "POST", url: url, data: data, dataType:'json', async: false, processData: false, contentType: false, cache: false, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if("fail"==returnData.result){ alert(returnData.message); return false; }else{ alert("내 문자함에 저장되었습니다."); //내 문자함 탭 활성화 시키기 TabType2($('.tabType2 li').eq(3), '4'); var offset = $('.tabType2').offset(); $('html, body').animate({scrollTop : offset.top-140}, 400); //최 하단 내문자함 탭 리스트 내용 불러오기 var sendData = $(document.myMsgForm).serializeArray(); $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ }); } } else if(status== 'fail'){ alert(returnData.message); } }, error: function (e) { alert("문자 저장에 실패하였습니다."); console.log("ERROR : ", e); } }); } //내 문자함으로 탭이동 function fnGoMyMsg(){ //내 문자함 탭 활성화 시키기 TabType2($('.tabType2 li').eq(3), '4'); var offset = $('.tabType2').offset(); $('html, body').animate({scrollTop : offset.top-140}, 400); } // MJ_MSG_GROUP_DATA 누락데이터 체크 function getMsgGroupDataErrorCheck() { var isError = false; $.ajax({ type: "POST", url: "/web/mjon/msgdata/selectMsgGroupNotExistInfoAjax.do", data: {}, dataType:'json', async: false, success: function (data) { if (data.isSuccess) { if (data.isError == true) { isError = true; } } }, error: function (e) { } }); return isError; } function checkConf() { var confCheck = false; $.ajax({ type: "POST", url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do", data: {}, dataType:'json', async: false, success: function (returnData, status) { if(returnData.result == "fail") { console.log(returnData.message); }else if(returnData.result == "success"){ confCheck = true; } } ,error: function (e) {console.log("ERROR : ", e); } }); return confCheck; } function blineSendCheck(blineCode) { var confCheck = false; $.ajax({ type: "POST", url: "/web/mjon/conf/selectBlineSendCheckAjax.do", data: {"agentCode":blineCode}, dataType:'json', async: false, success: function (returnData, status) { if(returnData.result == "fail") { console.log(returnData.message); }else if(returnData.result == "success"){ confCheck = true; } } ,error: function (e) {console.log("ERROR : ", e); } }); return confCheck; } //문자발송 처리 함수 function fn_sendMsgData(){ // 타블레이터 호출 var $selectedData = tableL.getData(); // 데이터 가져오기 if(!checkConf()){ //문자온 conf-check alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요."); return false; } var form = document.msgForm; var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", ""); var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", ""); // test 주석 if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){ alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다."); return false; } // 폼 유효성 검사 if (!validateForm(form)) return false; var spamStatus = false; var exceptSpamYn = $("#exceptSpamYn").val(); //금지어 필터링 예외 여부 - N 일 경우만 스팸 검사를 진행 var blineCodeYn = $("#blineCode").val(); if(blineCodeYn != 'N'){ if(!blineSendCheck(blineCodeYn)){ //문자온 conf-check alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요."); return false; } } if($selectedData.length > 300000){ alert("30만건까지 발송이 가능합니다.\n받는사람 목록을 확인해주세요."); return false; } if(!confirm("문자를 전송하시겠습니까?")){ return false; } //총 결제금액 천단위 콤마 삭제 후 전송 var totPrice = form.totPrice.value; form.totPrice.value = totPrice.replace(",",""); //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. var eventStatus = form.eventStatus.value; if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분 form.eventYn.value = "Y"; //이벤트문자 종류 설정 } var eventRemainCash = parseFloat(form.eventRemainCash.value); console.log('eventStatus : ', eventStatus); if(eventStatus == 'Y' && parseFloat(eventRemainCash) < parseFloat(totPriceOnly)) { console.log('eventRemainCash : ', eventRemainCash); if(!confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas($selectedData.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){ return false; } } console.log(' !!! imgFilePath : ', imgFilePath); // img 처리 영역 imgFilePath = []; $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { if($("#delLi"+idx).hasClass("Template")){ templateYn.push("Y"); } else { templateYn.push("N"); } if($(el).hasClass("edit_y")) { //이미지 변환 const imgBase64 = $(el).attr("src"); const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 let array = []; for (let i = 0; i < decodImg.length; i++) { array.push(decodImg.charCodeAt(i)); } const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; let formData = new FormData(); formData.append('file', file, fileName); $.ajax({ type: 'post', url: '/web/mjon/msgdata/insertEditImageAjax.do', cache: false, data: formData, dataType:'json', processData: false, contentType: false, async: false, success: function (returnData, status) { if(status == 'success'){ console.log('returnData : ',returnData) // imgFilePath 에 배열로 담아주기(이미지 순서대로) //console.log(imgFilePath); imgFilePath.push(returnData.filefullPath); imgFileId.push(returnData.atchFileId); } else if(status== 'fail'){ alert(returnData.message); } }, error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } }); } else { if(imgFilePath.length != imgFileId.length){ //에디터 안거친 템플릿 이미지면 바로 src 때림 imgFilePath.push($(el).attr("src")); } } }); //form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 form.templateYnAdvc.value = templateYn; console.log('imgFilePath : ', imgFilePath); console.log('imgFilePath : ', JSON.stringify(imgFilePath)); console.log('imgFileId : ', imgFileId); console.log('imgFileId : ', JSON.stringify(imgFileId)); form.imgFilePathAdvc.value = imgFilePath; form.imgFileIdAdvc.value = imgFileId; // form.imgFilePath.value = JSON.stringify(imgFilePath).replace(/\\/g, ''); // form.imgFileId.value = JSON.stringify(imgFileId).replace(/\\/g, ''); form.callFrom.value = removeDash($('#callFromList').val()); // 발신번호 대쉬(-) 문자 없애주기 //광고 종류 설정 // var adverYn = $("input[name='send_adYn']:checked").val(); var adverYn = $('#adverYn').val(); if(adverYn == 'Y'){ form.msgKind.value = "A"; //광고문자 종류 설정 }else{ form.msgKind.value = "N"; //일반문자 종류 설정 } // 예약 확인 var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 if(reserYn == 'Y'){ var date = $(".resDate").val();//form.msgResDate.value; var hour = form.msgResHour.value; var min = form.msgResMin.value; if(date == ""){ alert("예약전송 날짜를 선택해 주세요."); return false; }else{ var now = new Date(); var reqDate = date + " " + hour + ":" + min + ":00"; var gapDate = getGapDayTime(date, hour, min); if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜. alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요."); return false; }else{ form.reqDate.value = reqDate; //예약일자 파라미터 저장 } } }else{ form.reqDate.value = ""; } //발송 Ajax 호출해주기 sendMsgAjax_advc(); } // 선택된 데이터의 길이에 따라 예상 시간 계산 함수 function calculateEstimatedTime(selectedCount) { //기준값 // const processTimePerBatch = 130; // 130초 // 30만건 기준 10분으로 기준을 잡아서 // 시간계산함 const processTimePerBatch = 600; const batchSize = 300000; // 1건당 처리 시간 const timePerRecord = processTimePerBatch / batchSize; // 예상 시간 계산 const estimatedTimeInSeconds = selectedCount * timePerRecord; return estimatedTimeInSeconds.toFixed(2); } function sendMsgAjax_advc(){ // 타블레이터 호출 var $selectedData = tableL.getData(); // 데이터 가져오기 // 폼 데이터를 배열로 직렬화 var form = $('#msgForm'); var formDataArray = form.serializeArray(); // 배열을 객체로 변환 var formData = {}; $.each(formDataArray, function(index, field) { formData[field.name] = field.value; }); // 빈 값 제거 removeEmptyValues(formData); // 선택된 데이터 추가 formData["mjonMsgSendVOList"] = $selectedData; // JSON 데이터 확인 // console.log("최종 formData:", JSON.stringify(formData)); var url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; // 시작 시간 const startTime = new Date(); // 프로그래스파 시간을 위한 계산 var estimtedTime = calculateEstimatedTime($selectedData.length); console.log('estimtedTime : ', estimtedTime); $.ajax({ type: "POST", url: url, data: JSON.stringify(formData), contentType: 'application/json', dataType: 'json', success: function (data) { // 요청 종료 시간 및 경과 시간 계산 const endTime = new Date(); const elapsed = (endTime - startTime) / 1000; // 밀리초 -> 초로 변환 console.log('AJAX 요청 성공, 경과 시간 : ', elapsed); if (elapsed >= 60) { const minutes = Math.floor(elapsed / 60); // 분 계산 const seconds = Math.floor(elapsed % 60); // 초 계산 console.log('AJAX 요청 성공, 경과 시간 : ' + minutes + '분 ' + seconds + '초'); } else { console.log('AJAX 요청 성공, 경과 시간 : ' + elapsed + '초'); } console.log('data : ', data); /* message:"특정문구 일괄변환 치환문자 데이터가 없습니다." status:"BAD_REQUEST" */ var status = data.status; if("OK" == status){ var smsCnt = Number(data.object.resultSts); var blockCnt = Number(data.object.resultBlockSts); if((smsCnt + blockCnt) == 0){ $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.
다시 시도해주세요.
* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지
또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); $('.mask').addClass('on'); }else{ $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); //예약발송 건의 경우 결과 팝업 문구 변경 var reserYn = $("input[name=reserYn]:checked").val(); var resText = (reserYn === 'Y') ? '예약' : '발송'; /* if(reserYn == 'Y') { resText = "예약"; } else { resText = "발송"; } */ $('.pop_msg_success .msg_text').html(resText+" 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
문자가 "+resText+" 되었습니다."); $('.mask').addClass('on'); } }else if("BAD_REQUEST" == status){ alert(data.message); return false; }else if("UNAUTHORIZED" == status){ alert(data.message); //문자발송 URL Move goMsgUrlMove(); return false; }else if("NO_CONTENT" == status){ $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); $('.pop_msg_fails .msg_text').html(returnData.message); $('.mask').addClass('on'); } }, beforeSend : function(xmlHttpRequest) { // 프로그래스 바 실행 // 프로그래스 바 실행 progressStart(estimtedTime); //로딩창 show // $('.loading_layer').addClass('active'); }, complete : function(xhr, textStatus) { // 프로그래스 바 종료 // 프로그래스 바 종료 progressComplete();; // 로딩창 hide // $('.loading_layer').removeClass('active'); }, error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } }); } //폼 유효성 검사 함수 function validateForm(form) { // 타블레이터 호출 var $selectedData = tableL.getData(); // 데이터 가져오기 if($selectedData.length < 1){ alert("받는사람 내역을 입력해주세요."); return false; } if(form.callFromList.value == ""){ alert("발신번호를 입력해 주세요."); return false; } if (form.title_status.value === 'N') { form.mmsSubject.value = ""; } else if (getSpacialStringChk(form.mmsSubject.value)) { alert("문자 제목에는 치환문자(엑셀 내 *이름*, *1*, *2*, *3*, *4* 등)를 사용하실 수 없습니다."); return false; } //문자제목에 이모지가 있는지 체크 var titleStatusYn = $("input[name='title_status']:checked").val(); if(titleStatusYn == 'Y') { if(!emojiCheck(form.mmsSubject.value)) return false; } // 문자내용에 이모지가 있는지 체크 var strCont = form.smsTxtArea.value; if (!emojiCheck(strCont)) return false; var rtnStr = strChinJpnCheck(strCont); if(rtnStr.length > 0){ alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다."); } if (imgFilePath.length === 0 && !form.smsTxtArea.value) { alert("문자내용을 입력해 주세요."); return false; } return true; } //이벤트가 아닌 일반 개별 단가 셋팅해주기 function getNorEachPrice(evnMsgType){ var norEachPrice = 0; var evnImgCnt = $("#imgCnt").val(); //일반 단가로 변경해주기 if(evnMsgType == '4'){ norEachPrice = $("#norsPrice").val(); console.log("norEachPrice Short::: "+norEachPrice); }else if(evnMsgType == '6'){ if(evnImgCnt == 0){//장문 가격 norEachPrice = $("#normPrice").val(); console.log("norEachPrice Long ::: "+norEachPrice); }else if(evnImgCnt == 1){ norEachPrice = $("#norpPrice").val(); console.log("norEachPrice p1 ::: "+norEachPrice); }else if(evnImgCnt == 2){ norEachPrice = $("#norp2Price").val(); console.log("norEachPrice p2 ::: "+norEachPrice); }else if(evnImgCnt == 3){ norEachPrice = $("#norp3Price").val(); console.log("norEachPrice p3 ::: "+norEachPrice); } } return norEachPrice; } //빈 값이나 null 값을 제거하는 함수 function removeEmptyValues(obj) { Object.keys(obj).forEach(function(key) { if (obj[key] === null || obj[key] === '') { delete obj[key]; } }); } function sendMsgAjax(paramSmsCnt, paramBlockCnt){ var form = document.msgForm; var reserYn = $("#reserveYn").val(); var data = new FormData(form); url = "/web/mjon/msgdata/sendMsgDataAjax.do"; $.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; }else if("loginFail" == returnData.result){ alert(returnData.message); return false; }else if("smsLengFail" == returnData.result){ alert(returnData.message); return false; }else if("imgSourceFail" == returnData.result){ $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); $('.pop_msg_fails .msg_text').html(returnData.message); $('.mask').addClass('on'); }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리 $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); $('.pop_msg_spam .msg_text').html(returnData.message); $('.mask').addClass('on'); }else if("statusFail" == returnData.result){ alert(returnData.message); //문자발송 URL Move goMsgUrlMove(); return false; }else{ var smsCnt = Number(returnData.resultSts); var blockCnt = Number(returnData.resultBlockSts); smsCnt = Number(smsCnt) + Number(paramSmsCnt); blockCnt = Number(blockCnt) + Number(paramBlockCnt); if((smsCnt + blockCnt) == 0){ $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.
다시 시도해주세요.
* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지
또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); $('.mask').addClass('on'); }else{ $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); //예약발송 건의 경우 결과 팝업 문구 변경 if(reserYn == 'Y'){ $('.pop_msg_success .msg_text').html("예약 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
문자가 예약 되었습니다."); }else{ $('.pop_msg_success .msg_text').html("발송 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
문자가 발송 되었습니다."); } $('.mask').addClass('on'); } } } else if(status== 'fail'){ alert(returnData.message); } }, beforeSend : function(xmlHttpRequest) { //로딩창 show $('.loading_layer').addClass('active'); }, complete : function(xhr, textStatus) { //로딩창 hide $('.loading_layer').removeClass('active'); }, error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } }); } function linkPage(pageNo){ fnLetterListAjax(pageNo); } function linkPhoPage(pageNo){ fnPhotoListAjax(pageNo); } function myMsgPage(pageNo){ fnMyMsgListAjax(pageNo); } function fnMyMsgCheckDelete(){ var msgId = []; if($("input:checkbox[name='myMsgDel']").is(":checked")==false){ alert("선택된 항목이 없습니다."); return; } $("input:checkbox[name='myMsgDel']:checked").each(function(index){ msgId[index] = $(this).val(); }); if(msgId.length > 0){ document.myMsgForm.msgIdList.value = msgId; var sendData = $(document.myMsgForm).serializeArray(); $("#myMsgLoad").load("/web/mjon/msgdata/deleteMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ //문자 내용 스크롤 적용 /* $(".msg_cont").mCustomScrollbar({ axis: 'y', scrollbarPosition: "inside", theme: "dark", autoHideScrollbar: false }); */ }); }else{ alert("삭제할 문자를 선택해 주세요."); return false; } } //문자 샘플 2줄, 4줄 보기 기능 function fnLPageUnit(){ var form = document.letterForm; var pageUnit = form.LPageUnit.value; form.pageUnit.value = pageUnit; fnLetterListAjax(1); } //그림문자 샘플 2줄, 4줄 보기 기능 function fnPhPageUnit(){ var form = document.letterForm; var pageUnit = form.PhPageUnit.value; form.pageUnit.value = pageUnit; fnPhotoListAjax(1); } //내문자함 2줄 4줄보기 기능 function fnMsgPageUnit(){ var form = document.myMsgForm; var pageUnit = form.msgPageUnit.value; form.pageUnit.value = pageUnit; fnMyMsgListAjax(1); } function fnMyMsgSearchListOrd(){ var form = document.myMsgForm; var sortOrd = form.searchSortOrd.value; if(sortOrd == 'desc'){ form.searchSortOrd.value = 'asc'; $('#sortCnd').text('등록순'); }else{ form.searchSortOrd.value = 'desc'; $('#sortCnd').text('최근순'); } //내문자함 내용 검색하기 fnMyMsgSearchListAjax(1); } function msgSuccessClose(obj){ $(obj).closest('.pop_msg_success').attr('style',''); //문자발송 URL Move goMsgUrlMove(); $('html').scrollTop(0); } function msgFailsClose(obj){ $(obj).closest('.pop_msg_fails').attr('style',''); } function msgSpamClose(obj){ $(obj).closest('.pop_msg_spam').attr('style',''); //location.href="/web/uat/uia/actionLogout.do"; } function msgResultLink(){ var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 if(reserYn == 'Y'){ location.href="/web/mjon/reservmsg/selectReservMsgView.do"; }else{ location.href="/web/mjon/msgsent/selectMsgSentView.do"; } } //START //맞춤제작 요청 JSPark => 2023.02.21 추가 //맞춤제작 등록 Popup function customPopup(){ $("#customPopup").load("/web/mjon/custom/selectMsgCustomPopupAjax.do", "" ,function(response, status, xhr){ popupImgList(1); }); } function openMsgCustomPopup() { if(loginVO == "" || loginVO == null){ alert("로그인 후 이용이 가능합니다."); return false; } else { $("#customPopupOpen").trigger("click"); } $("#customType04").hide(); popCustomScrT=$(window).scrollTop(); popScrTarget(); } $(window).on('load',function(){ setTimeout(function(){ popScrTarget(); },500); }); function popScrTarget(){ var closeTarget=$('.custom_layer .tooltip-close'); closeTarget.attr('onclick','popScrCloseSetting();'); } function popScrCloseSetting(){ setTimeout(function(){ $(window).scrollTop(popCustomScrT); },1); } //END