+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView_advcBack_20240923.jsp
... | ... | @@ -0,0 +1,2525 @@ |
| 1 | +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> | |
| 2 | +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> | |
| 3 | +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> | |
| 4 | +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> | |
| 5 | +<%@ page import="itn.com.cmm.LoginVO" %> | |
| 6 | + | |
| 7 | +<!-- <script src="/publish/js/content.js"></script> --> | |
| 8 | + | |
| 9 | +<script type="text/javascript"> | |
| 10 | + | |
| 11 | +var _regExp1 = /(^02.{0}|^01.{1}|^[0-9]{3})-?([0-9]{3,4})-?([0-9]{4})$/; | |
| 12 | + | |
| 13 | +var imgFilePath = []; // 최종 선택한 이미지 경로 저장 변수 | |
| 14 | +var imgFileId = []; // 최종 선택한 파일 아이디 저장 변수 | |
| 15 | +var templateYn = []; // 템플릿 사용 여부 저장 변수 | |
| 16 | +var tableL = null; //좌측 받는 사람 주소록 Tabulator 변수 | |
| 17 | +var tableR = null; //우측 주소록 불러오기 Tabulator 변수 | |
| 18 | +var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 | |
| 19 | + | |
| 20 | +var loginVO = '${loginVO}'; | |
| 21 | + | |
| 22 | +var popCustomScrT=0; // 맞춤제작 요청 JSPark => 2023.02.21 추가 | |
| 23 | +var msgResendAllFlag = "${msgResendAllFlag}"; | |
| 24 | +var msgResendAllGroupId = "${msgResendAllGroupId}"; | |
| 25 | +var msgResendAllAdvertiseYn = "${msgResendAllAdvertiseYn}"; | |
| 26 | +var msgResendAllReplaceYn = "${msgResendAllReplaceYn}"; | |
| 27 | + | |
| 28 | +$(document).ready(function(){ | |
| 29 | + var tsMoreSampleYn = "${moreSampleYn}"; | |
| 30 | + var tsMainImgFlag = "${mainImgVO.mainImgFlag}"; | |
| 31 | + var tsMainLetterFlag = "${mainLetterVO.mainLetterFlag}"; | |
| 32 | + | |
| 33 | + //메인화면에서 샘플 더보기로 왔을 시 문자타입, 카테고리 세팅 | |
| 34 | + if(tsMoreSampleYn == 'Y'){ | |
| 35 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 36 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 37 | + } | |
| 38 | + //메인화면에서 그림문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 | |
| 39 | + if(tsMainImgFlag == 'Y'){ | |
| 40 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 41 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 42 | + } | |
| 43 | + //메인화면에서 단문장문 문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 | |
| 44 | + if(tsMainLetterFlag == 'Y'){ | |
| 45 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 46 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 47 | + } | |
| 48 | + | |
| 49 | + | |
| 50 | + //문자 발송 화면 폼 불러오기 | |
| 51 | + listMsgDataView(); | |
| 52 | + | |
| 53 | + //최 하단 문자 샘플 탭 리스트 내용 불러오기 | |
| 54 | + fnLetterListAjax(1); | |
| 55 | + | |
| 56 | + //최 하단 그림문자 탭 리스트 내용 불러오기 | |
| 57 | + fnPhotoListAjax(1); | |
| 58 | + | |
| 59 | + // 내보관함 리스트 로그인이 완료된 경우에만 로드되도록 | |
| 60 | + if(loginVO != "" && loginVO != null){ | |
| 61 | + //최 하단 내문자함 탭 리스트 내용 불러오기 | |
| 62 | + fnMyMsgListAjax(1); | |
| 63 | + } | |
| 64 | + | |
| 65 | + //그림문자 샘플 탭 활성화 시키기 | |
| 66 | + TabType2($('.tabType2 li').eq(1), '2'); | |
| 67 | + | |
| 68 | + //document.ready 마지막에 그림문자를 조회하기 때문에 letterForm.letterType이 P로 고정되는데, 메인에서 왔을 경우 letterType을 다시 원복하기 위한 작업 | |
| 69 | + if(tsMoreSampleYn == 'Y'){ | |
| 70 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 71 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 72 | + } | |
| 73 | + if(tsMainImgFlag == 'Y'){ | |
| 74 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 75 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 76 | + } | |
| 77 | + if(tsMainLetterFlag == 'Y'){ | |
| 78 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 79 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 80 | + } | |
| 81 | + | |
| 82 | + // 맞춤제작 요청 JSPark => 2023.02.21 추가 | |
| 83 | + //맞춤제작 등록 Popup | |
| 84 | + //customPopup(); | |
| 85 | +}); | |
| 86 | + | |
| 87 | +// 문자 그룹정보 => 재전송용 | |
| 88 | +function getMjMsgGroupInfoByResend() { | |
| 89 | + $.ajax({ | |
| 90 | + type: "POST", | |
| 91 | + url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", | |
| 92 | + data: {"msgResendAllGroupId" : msgResendAllGroupId}, | |
| 93 | + dataType:'json', | |
| 94 | + async: false, | |
| 95 | + success: function (data) { | |
| 96 | + //alert(JSON.stringify(data)); | |
| 97 | + if(data.isSuccess == true){ | |
| 98 | + var msgData = data.resultMsgInfo; | |
| 99 | + var fileData = data.resultMsgAddPhotoInfo; | |
| 100 | + | |
| 101 | + // 발신번호 | |
| 102 | + var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); | |
| 103 | + if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) { | |
| 104 | + alert("발신번호가 이전에 발송한 번호가 아닙니다.\n발신번호를 확인해주세요.") | |
| 105 | + } | |
| 106 | + | |
| 107 | + var smsTxt = msgData.smsTxt; | |
| 108 | + var subject = msgData.subject; | |
| 109 | + var fileId = ""; | |
| 110 | + var filePath = ""; | |
| 111 | + var len = fileData.length; | |
| 112 | + | |
| 113 | + // 기존 내용 지워주기 | |
| 114 | + //$(".btnReset").trigger("click"); | |
| 115 | + $('.delLi').each(function(){ | |
| 116 | + $(this).remove(); | |
| 117 | + }); | |
| 118 | + | |
| 119 | + $('.preBoxF').each(function(){ | |
| 120 | + $(this).remove(); | |
| 121 | + }); | |
| 122 | + | |
| 123 | + $('#imgCnt').val(0); | |
| 124 | + | |
| 125 | + // 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기 | |
| 126 | + imgFilePath = []; | |
| 127 | + imgFileId = []; | |
| 128 | + | |
| 129 | + // 문자제목 | |
| 130 | + if (msgData.subject != null && msgData.subject != "") { | |
| 131 | + $('.msg_title').addClass('active'); | |
| 132 | + $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기 | |
| 133 | + $('.textbox').show(); | |
| 134 | + $("#mmsSubject").val(subject); | |
| 135 | + } | |
| 136 | + | |
| 137 | + // 문자내용 | |
| 138 | + if (smsTxt.indexOf("(광고)") == 0) { | |
| 139 | + $('#send_adYnY').prop('checked', true); | |
| 140 | + | |
| 141 | + //광고 상하단 내용 넣어주기 | |
| 142 | + advMsgInsert(); | |
| 143 | + | |
| 144 | + // 광고 기본정보 제거 | |
| 145 | + smsTxt = $.trim(smsTxt.replace("(광고)", "")); | |
| 146 | + var smsTxtLastIdxCnt = smsTxt.lastIndexOf("무료거부"); | |
| 147 | + if (smsTxtLastIdxCnt != -1) { | |
| 148 | + smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt)); | |
| 149 | + } | |
| 150 | + } | |
| 151 | + $('#smsTxtArea').val(smsTxt); | |
| 152 | + | |
| 153 | + // 첨부 이미지가 있는경우 이미지 처리해주기 | |
| 154 | + if(len > 0) { | |
| 155 | + for(var i=0; i < len; i++) { | |
| 156 | + var num = i + 1; | |
| 157 | + var imgId = fileData[i].atchFileId; | |
| 158 | + var imgSn = fileData[i].fileSn; | |
| 159 | + var fileStreCours = fileData[i].fileStreCours; | |
| 160 | + var streFileNm = fileData[i].streFileNm; | |
| 161 | + var fileExtsn = fileData[i].fileExtsn; | |
| 162 | + | |
| 163 | + /* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */ | |
| 164 | + var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn; | |
| 165 | + myMsgImageControl(imgSrc, "edit_n", "Template", imgId); | |
| 166 | + } | |
| 167 | + | |
| 168 | + fnByteString($('#smsTxtArea').val()); | |
| 169 | + } | |
| 170 | + else { | |
| 171 | + fnByteString($('#smsTxtArea').val()); | |
| 172 | + } | |
| 173 | + | |
| 174 | + // 문자전송 상단으로 이동 | |
| 175 | + var sendOfT=$('.send_top').offset().top; | |
| 176 | + $('html,body').stop().animate({'scrollTop':sendOfT-60},250); | |
| 177 | + | |
| 178 | + } else { | |
| 179 | + //alert("Message : " + msg); | |
| 180 | + } | |
| 181 | + }, | |
| 182 | + error: function (e) { | |
| 183 | + //alert("저장에 실패하였습니다."); | |
| 184 | + //console.log("ERROR : ", e); | |
| 185 | + } | |
| 186 | + }); | |
| 187 | +} | |
| 188 | + | |
| 189 | +// 문자 상세정보 => 재전송용 | |
| 190 | +function getMjMsgListByResend() { | |
| 191 | + $.ajax({ | |
| 192 | + type: "POST", | |
| 193 | + url: "/web/mjon/msgdata/selectMjMsgListByResendAjax.do", | |
| 194 | + data: {"msgResendAllGroupId" : msgResendAllGroupId}, | |
| 195 | + dataType:'json', | |
| 196 | + async: false, | |
| 197 | + success: function (data) { | |
| 198 | + if(data.isSuccess == true){ | |
| 199 | + var listCnt = data.resultList.length; | |
| 200 | + | |
| 201 | + //수신자 처리 변수 | |
| 202 | + var callToList = []; //수신자 처리 리스트 | |
| 203 | + var tableData = []; //수신자 tabulator 처리 변수 | |
| 204 | + | |
| 205 | + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 | |
| 206 | + callToList[i] = data.resultList[i].callTo; | |
| 207 | + tableData.push({phone: removeDash(callToList[i])}); | |
| 208 | + } | |
| 209 | + | |
| 210 | + if(tableData.length > 0){ | |
| 211 | + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 | |
| 212 | + | |
| 213 | + totRows = tableL.getRows().length; | |
| 214 | + updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 215 | + | |
| 216 | + //결제 금액 구하기 | |
| 217 | + totalPriceSum(totRows); | |
| 218 | + } | |
| 219 | + | |
| 220 | + } else { | |
| 221 | + //alert("Message : " + msg); | |
| 222 | + } | |
| 223 | + }, | |
| 224 | + error: function (e) { | |
| 225 | + //alert("저장에 실패하였습니다."); | |
| 226 | + //console.log("ERROR : ", e); | |
| 227 | + } | |
| 228 | + }); | |
| 229 | +} | |
| 230 | + | |
| 231 | +// 문자발송 URL Move | |
| 232 | +function goMsgUrlMove() { | |
| 233 | + document.location.href = "/web/mjon/msgdata/selectMsgDataView.do"; | |
| 234 | +} | |
| 235 | + | |
| 236 | +function listMsgDataView(){ | |
| 237 | + | |
| 238 | + var sendData = $(document.searchForm).serializeArray() ; | |
| 239 | + $(".contentArea").load("/web/mjon/msgdata/selectMsgDataSMLViewAjax.do", sendData ,function(response, status, xhr){ | |
| 240 | + | |
| 241 | + //문자 재전송 및 주소록 전달 처리를 위해 사용 | |
| 242 | + $("#msgForm").ready(function(){ //문자 내용 폼이 로드된 후 실행 | |
| 243 | + | |
| 244 | + //헤더 문자검색 결과 처리 | |
| 245 | + var headerMsgSearchFlag = '${headerMsgSearchVO.headerMsgSearchFlag}'; | |
| 246 | + | |
| 247 | + if(headerMsgSearchFlag == 'Y'){ | |
| 248 | + | |
| 249 | + var letterType = '${headerMsgSearchVO.msgType}'; | |
| 250 | + var form = document.letterForm; | |
| 251 | + var searchKeyword = '${headerMsgSearchVO.searchKeyword}'; | |
| 252 | + form.letterType.value = letterType; | |
| 253 | + form.searchKeyword.value = searchKeyword; | |
| 254 | + | |
| 255 | + if(letterType == 'P'){ | |
| 256 | + | |
| 257 | + //최 하단 그림문자 탭 리스트 내용 불러오기 | |
| 258 | + fnPhotoListAjax(1); | |
| 259 | + | |
| 260 | + //문자 샘플 탭 활성화 시키기 | |
| 261 | + TabType2($('.tabType2 li').eq(1), '2'); | |
| 262 | + //하단 리스트 탭으로 이동 시키기 | |
| 263 | + var offset = $('.tabType2').offset(); | |
| 264 | + $('html').animate({scrollTop : offset.top}, 400); | |
| 265 | + | |
| 266 | + }else if(letterType == 'L' || letterType == 'S' ){ | |
| 267 | + | |
| 268 | + //문자 샘플 탭 활성화 시키기 | |
| 269 | + TabType2($('.tabType2 li').eq(0), '1'); | |
| 270 | + | |
| 271 | + //최 하단 문자 샘플 탭 리스트 내용 불러오기 | |
| 272 | + fnLetterListAjax(1); | |
| 273 | + if(letterType == 'S'){ | |
| 274 | + | |
| 275 | + $('.tDep1_letType a').eq(0).addClass('on'); | |
| 276 | + $('.tDep1_letType a:last-child').removeClass('on'); | |
| 277 | + | |
| 278 | + }else{ | |
| 279 | + | |
| 280 | + $('.tDep1_letType a').eq(0).removeClass('on'); | |
| 281 | + $('.tDep1_letType a:last-child').addClass('on'); | |
| 282 | + | |
| 283 | + } | |
| 284 | + | |
| 285 | + //하단 리스트 탭으로 이동 시키기 | |
| 286 | + var offset = $('.tabType2').offset(); | |
| 287 | + $('html').animate({scrollTop : offset.top}, 400); | |
| 288 | + | |
| 289 | + } | |
| 290 | + | |
| 291 | + | |
| 292 | + } | |
| 293 | + | |
| 294 | + | |
| 295 | + //메인화면 더많은 샘플보기 버튼 선택시 처리 | |
| 296 | + var moreSamFlag = '${moreSampleYn}'; | |
| 297 | + | |
| 298 | + if(moreSamFlag == 'Y'){ | |
| 299 | + | |
| 300 | + //문자 샘플 탭 활성화 시키기 | |
| 301 | + var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; | |
| 302 | + var letterTab = '0'; | |
| 303 | + var cateNo = "${cateCodeVO.cateNo}"; | |
| 304 | + if(mainLetterTypeFlag == 'P'){ | |
| 305 | + TabType2($('.tabType2 li').eq(1), '2'); | |
| 306 | + }else{ | |
| 307 | + TabType2($('.tabType2 li').eq(letterTab), '1'); | |
| 308 | + } | |
| 309 | + //장문 일 시 tDep1_letType 탭 세팅 | |
| 310 | + if(mainLetterTypeFlag == 'L'){ | |
| 311 | + $('.tDep1_letType a').removeClass('on'); | |
| 312 | + $('.tDep1_letType a').eq(1).addClass('on'); | |
| 313 | + } | |
| 314 | + | |
| 315 | + //카테고리 탭 활성화 처리 | |
| 316 | + if(mainLetterTypeFlag == 'P'){ //그림문자 샘플로 이동 왔을 시 | |
| 317 | + $('.tDep2_cateCode').find('.on').removeClass('on'); | |
| 318 | + $('.tDep2_cateCode a').each(function(index){ | |
| 319 | + if($(this).attr('value') == cateNo){ | |
| 320 | + $(this).addClass('on'); | |
| 321 | + } | |
| 322 | + }) | |
| 323 | + } | |
| 324 | + if(mainLetterTypeFlag != 'P'){ //단문,장문 샘플로 왔을 시 | |
| 325 | + $('.tDep1_cateCode').find('.on').removeClass('on'); | |
| 326 | + $('.tDep1_cateCode a').each(function(index){ | |
| 327 | + if($(this).attr('value') == cateNo){ | |
| 328 | + $(this).addClass('on'); | |
| 329 | + } | |
| 330 | + }) | |
| 331 | + } | |
| 332 | + | |
| 333 | + | |
| 334 | + //하단 리스트 탭으로 이동 시키기 | |
| 335 | + var offset = $('.tabType2').offset(); | |
| 336 | + $('html').animate({scrollTop : offset.top}, 400); | |
| 337 | + | |
| 338 | + | |
| 339 | + } | |
| 340 | + | |
| 341 | + | |
| 342 | + //메인화면 그림문자 이미지 선택시 처리 | |
| 343 | + var mainImgFlag = '${mainImgVO.mainImgFlag}'; | |
| 344 | + if(mainImgFlag == 'Y'){ | |
| 345 | + //카테고리 처리 | |
| 346 | + var cateNo = "${cateCodeVO.cateNo}"; | |
| 347 | + $('.tDep2_cateCode').find('.on').removeClass('on'); | |
| 348 | + $('.tDep2_cateCode a').each(function(index){ | |
| 349 | + if($(this).attr('value') == cateNo){ | |
| 350 | + $(this).addClass('on'); | |
| 351 | + } | |
| 352 | + }) | |
| 353 | + | |
| 354 | + | |
| 355 | + var atchFileId = '${mainImgVO.atchFileId1}'; | |
| 356 | + var fileSn = '${mainImgVO.fileSn}'; | |
| 357 | + var strImgPath = '${mainImgVO.strImgPath}'; | |
| 358 | + | |
| 359 | + fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); | |
| 360 | + | |
| 361 | + } | |
| 362 | + | |
| 363 | + //메인화면 인기문자 메세지 선택시 처리 | |
| 364 | + var mainLetterFlag = '${mainLetterVO.mainLetterFlag}'; | |
| 365 | + if(mainLetterFlag == 'Y'){ | |
| 366 | + var letterTab = '0'; | |
| 367 | + //문자샘플 활성화 처리 | |
| 368 | + TabType2($('.tabType2 li').eq(0), '1'); | |
| 369 | + //단문,장문 탭 활성화 처리 | |
| 370 | + var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; | |
| 371 | + if(mainLetterTypeFlag == 'L'){ | |
| 372 | + $('.tDep1_letType a').removeClass('on'); | |
| 373 | + $('.tDep1_letType a').eq(1).addClass('on'); | |
| 374 | + } | |
| 375 | + //카테고리 활성화 처리 | |
| 376 | + var cateNo = "${cateCodeVO.cateNo}"; | |
| 377 | + $('.tDep1_cateCode').find('.on').removeClass('on'); | |
| 378 | + $('.tDep1_cateCode a').each(function(index){ | |
| 379 | + if($(this).attr('value') == cateNo){ | |
| 380 | + $(this).addClass('on'); | |
| 381 | + } | |
| 382 | + }) | |
| 383 | + var smsTxt = '${mainLetterVO.smsTxt}'; | |
| 384 | + if(smsTxt != null){ | |
| 385 | + | |
| 386 | + smsTxt = smsTxt.replaceAll("<br/>", "\n"); //줄발꿈문자 변환하기 | |
| 387 | + $("#smsTxtArea").val(smsTxt); | |
| 388 | + fnByteString(smsTxt); | |
| 389 | + | |
| 390 | + } | |
| 391 | + | |
| 392 | + } | |
| 393 | + | |
| 394 | + //맞춤제작 내보관함 이미지 선택시 처리 | |
| 395 | + var customImgFlag = '${customImgVO.customImgFlag}'; | |
| 396 | + if(customImgFlag == 'Y'){ | |
| 397 | + | |
| 398 | + var atchFileId = '${customImgVO.atchFileId1}'; | |
| 399 | + var fileSn = '${customImgVO.fileSn}'; | |
| 400 | + var strImgPath = '${customImgVO.strImgPath}'; | |
| 401 | + | |
| 402 | + fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); | |
| 403 | + | |
| 404 | + } | |
| 405 | + | |
| 406 | + //문자 재전송 처리 | |
| 407 | + var msgResendFlag = '${reSendMsgVO.msgResendFlag}'; | |
| 408 | + var msgSeqList = []; | |
| 409 | + msgSeqList = '${reSendMsgVO.msgSeqList}'; | |
| 410 | + if(msgSeqList.length > 0){ | |
| 411 | + | |
| 412 | + fnMsgResend(msgResendFlag, msgSeqList); | |
| 413 | + | |
| 414 | + } | |
| 415 | + | |
| 416 | + //주소록에서 주소를 전송한 경우 처리 | |
| 417 | + var moveAddrFlag = '${addrVO.moveAddrFlag}'; | |
| 418 | + var addrIdList = []; | |
| 419 | + addrIdList = '${addrVO.addrIdList}'; | |
| 420 | + if(addrIdList.length > 0) { | |
| 421 | + fnAddrSet(moveAddrFlag, addrIdList); | |
| 422 | + } | |
| 423 | + | |
| 424 | + // 문자 재전송 New | |
| 425 | + if (msgResendAllFlag == "Y") { | |
| 426 | + if (msgResendAllReplaceYn != "Y") { | |
| 427 | + // 문자 그룹정보 => 재전송용 | |
| 428 | + getMjMsgGroupInfoByResend(); | |
| 429 | + } | |
| 430 | + | |
| 431 | + // 문자 상세정보 => 재전송용 | |
| 432 | + getMjMsgListByResend(); | |
| 433 | + } | |
| 434 | + | |
| 435 | + }); | |
| 436 | + | |
| 437 | + }).slideDown(); | |
| 438 | +} | |
| 439 | + | |
| 440 | +function fnCustomImgSendMsg(atchFileId, fileSn, filePath){ | |
| 441 | + | |
| 442 | + | |
| 443 | + var imgId = ""; | |
| 444 | + var imgSrc = ""; | |
| 445 | + | |
| 446 | + /* imgSrc = filePath.replace("/usr/local/tomcat_mjon/webapps/mjon",""); */ | |
| 447 | + /* imgSrc = filePath; */ | |
| 448 | + imgId = atchFileId; | |
| 449 | + | |
| 450 | + imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + atchFileId + '&fileSn=' + fileSn; | |
| 451 | + | |
| 452 | + myMsgImageControl(imgSrc, "edit_n", "Template", imgId); | |
| 453 | + | |
| 454 | +} | |
| 455 | + | |
| 456 | +function fnMsgResend(msgResendFlag, msgSeqList){ | |
| 457 | + | |
| 458 | + if(msgResendFlag == 'Y'){ // 문자재전송에서 넘어오는 경우 | |
| 459 | + | |
| 460 | + var form = document.msgResendForm; | |
| 461 | + form.msgSeqList.value = msgSeqList; | |
| 462 | + | |
| 463 | + var data = new FormData(form); | |
| 464 | + url = "/web/mjon/msgdata/selectReSendMsgDataListAjax.do"; | |
| 465 | + | |
| 466 | + $.ajax({ | |
| 467 | + type: "POST", | |
| 468 | + url: url, | |
| 469 | + data: data, | |
| 470 | + dataType:'json', | |
| 471 | + async: false, | |
| 472 | + processData: false, | |
| 473 | + contentType: false, | |
| 474 | + cache: false, | |
| 475 | + success: function (returnData, status) { | |
| 476 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 477 | + if("fail"==returnData.result){ | |
| 478 | + | |
| 479 | + alert(returnData.message); | |
| 480 | + return false; | |
| 481 | + | |
| 482 | + }else if("loginFail"==returnData.result){ | |
| 483 | + | |
| 484 | + alert(returnData.message); | |
| 485 | + return false; | |
| 486 | + | |
| 487 | + }else if(returnData.resultListCnt == '0'){ | |
| 488 | + | |
| 489 | + alert("재전송 문자내용이 없습니다."); | |
| 490 | + return false; | |
| 491 | + | |
| 492 | + }else{ | |
| 493 | + | |
| 494 | + var data = returnData; | |
| 495 | + var listCnt = returnData.resultListCnt; | |
| 496 | + var photoInfo = returnData.resultMsgPhotoInfo; | |
| 497 | + //수신자 처리 변수 | |
| 498 | + var callToList = []; //수신자 처리 리스트 | |
| 499 | + var tableData = []; //수신자 tabulator 처리 변수 | |
| 500 | + | |
| 501 | + //var subject = data.resultList[0].subject; //제목 | |
| 502 | + //var smsTxt = data.resultList[0].smsTxt; //문자내용 | |
| 503 | + //var fileCnt = data.resultList[0].fileCnt; //그림문자 이미지 갯수 | |
| 504 | + //var filePath1 = data.resultList[0].fileType1; //이미지1 파일 경로 | |
| 505 | + //var filePath2 = data.resultList[0].fileType2; //이미지2 파일 경로 | |
| 506 | + //var filePath3 = data.resultList[0].fileType3; //이미지3 파일 경로 | |
| 507 | + //var atchFileId1 = photoInfo.atchFileId1; //이미지1 파일 번호 | |
| 508 | + //var atchFileId2 = photoInfo.atchFileId2; //이미지2 파일 번호 | |
| 509 | + //var atchFileId3 = photoInfo.atchFileId3; //이미지3 파일 번호 | |
| 510 | + | |
| 511 | + | |
| 512 | + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 | |
| 513 | + | |
| 514 | + callToList[i] = data.resultList[i].callTo; | |
| 515 | + tableData.push({phone: removeDash(callToList[i])}); | |
| 516 | + | |
| 517 | + } | |
| 518 | + | |
| 519 | + if(tableData.length > 0){ | |
| 520 | + | |
| 521 | + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 | |
| 522 | + | |
| 523 | + //totRows = tableL.getRows().length; | |
| 524 | + //updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 525 | + | |
| 526 | + //결제 금액 구하기 | |
| 527 | + //totalPriceSum(totRows); | |
| 528 | + | |
| 529 | + } | |
| 530 | + | |
| 531 | + return false; | |
| 532 | + | |
| 533 | + } | |
| 534 | + | |
| 535 | + } else if(status== 'fail'){ | |
| 536 | + alert(returnData.message); | |
| 537 | + } | |
| 538 | + }, | |
| 539 | + error: function (e) { alert("문자 재전송 번호 등록에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 540 | + }); | |
| 541 | + | |
| 542 | + } | |
| 543 | + | |
| 544 | +} | |
| 545 | + | |
| 546 | + | |
| 547 | +function fnAddrSet(moveAddrFlag, addrIdList){ | |
| 548 | + | |
| 549 | + if(moveAddrFlag == 'Y'){ // 주소록에서 넘어오는 경우 | |
| 550 | + | |
| 551 | + var form = document.moveAddrForm; | |
| 552 | + form.addrIdList.value = addrIdList; | |
| 553 | + | |
| 554 | + var data = new FormData(form); | |
| 555 | + url = "/web/mjon/addr/selectAddrDataListAjax.do"; | |
| 556 | + | |
| 557 | + $.ajax({ | |
| 558 | + type: "POST", | |
| 559 | + url: url, | |
| 560 | + data: data, | |
| 561 | + dataType:'json', | |
| 562 | + async: true, | |
| 563 | + processData: false, | |
| 564 | + contentType: false, | |
| 565 | + cache: false, | |
| 566 | + success: function (returnData, status) { | |
| 567 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 568 | + if("fail"==returnData.result){ | |
| 569 | + | |
| 570 | + alert(returnData.message); | |
| 571 | + return false; | |
| 572 | + | |
| 573 | + }else if("loginFail"==returnData.result){ | |
| 574 | + | |
| 575 | + alert(returnData.message); | |
| 576 | + return false; | |
| 577 | + | |
| 578 | + }else if(returnData.resultListCnt == '0'){ | |
| 579 | + | |
| 580 | + alert("전달된 주소록이 없습니다."); | |
| 581 | + return false; | |
| 582 | + | |
| 583 | + }else{ | |
| 584 | + | |
| 585 | + var listCnt = returnData.resultListCnt; | |
| 586 | + | |
| 587 | + //수신자 처리 변수 | |
| 588 | + var tableData = []; //수신자 tabulator 처리 변수 | |
| 589 | + | |
| 590 | + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 | |
| 591 | + | |
| 592 | + tableData.push({ | |
| 593 | + name: returnData.resultList[i].addrNm | |
| 594 | + ,phone: removeDash(returnData.resultList[i].addrPhoneNo) | |
| 595 | + ,rep1: returnData.resultList[i].addrInfo1 | |
| 596 | + ,rep2: returnData.resultList[i].addrInfo2 | |
| 597 | + ,rep3: returnData.resultList[i].addrInfo3 | |
| 598 | + ,rep4: returnData.resultList[i].addrInfo4 | |
| 599 | + }); | |
| 600 | + | |
| 601 | + } | |
| 602 | + | |
| 603 | + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 | |
| 604 | + | |
| 605 | + totRows = tableL.getRows().length; | |
| 606 | + updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 607 | + | |
| 608 | + //결제 금액 구하기 | |
| 609 | + totalPriceSum(totRows); | |
| 610 | + | |
| 611 | + return false; | |
| 612 | + | |
| 613 | + } | |
| 614 | + | |
| 615 | + } else if(status== 'fail'){ | |
| 616 | + alert(returnData.message); | |
| 617 | + } | |
| 618 | + }, | |
| 619 | + error: function (e) { | |
| 620 | + alert("주소록 가져오기에 실패하였습니다."); | |
| 621 | + console.log("ERROR : ", e); | |
| 622 | + }, | |
| 623 | + beforeSend : function(xmlHttpRequest) { | |
| 624 | + //로딩창 show | |
| 625 | + $('.loading_layer').addClass('active'); | |
| 626 | + }, | |
| 627 | + complete : function(xhr, textStatus) { | |
| 628 | + //로딩창 hide | |
| 629 | + $('.loading_layer').removeClass('active'); | |
| 630 | + } | |
| 631 | + }); | |
| 632 | + | |
| 633 | + } | |
| 634 | + | |
| 635 | +} | |
| 636 | + | |
| 637 | +function fnLetterListAjax(index){ | |
| 638 | + var form = document.letterForm; | |
| 639 | + var letterType = form.letterType.value; | |
| 640 | + | |
| 641 | + if($('.tDep1_letType a').eq(0).hasClass('on')) { | |
| 642 | + form.letterType.value='S'; | |
| 643 | + } else if ($('.tDep1_letType a').eq(1).hasClass('on')) { | |
| 644 | + form.letterType.value='L'; | |
| 645 | + } | |
| 646 | + | |
| 647 | + //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 | |
| 648 | + if(form.searchKeyword.value != '') { | |
| 649 | + form.categoryCode.value = ""; | |
| 650 | + form.hashTag.value = ""; | |
| 651 | + | |
| 652 | + $('.tDep1_cateCode').find('.on').removeClass('on'); | |
| 653 | + $('.tDep1_cateCode').find('.cateAll').addClass('on'); | |
| 654 | + $('.tDep1_hashTag').find('.on').removeClass('on'); | |
| 655 | + $('.tDep1_hashTag').find('.hashAll').addClass('on'); | |
| 656 | + }else{ | |
| 657 | + //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 | |
| 658 | + var strTagTxt = $('.tDep1_hashTag').find('.on').text().replace("#",""); | |
| 659 | + if(strTagTxt == "전체"){ | |
| 660 | + form.hashTag.value = ""; | |
| 661 | + }else{ | |
| 662 | + form.hashTag.value = strTagTxt; | |
| 663 | + } | |
| 664 | + } | |
| 665 | + | |
| 666 | + form.pageIndex.value = index; | |
| 667 | + form.letterType.value = letterType; | |
| 668 | + var sendData = $(document.letterForm).serializeArray(); | |
| 669 | + //하위 카테고리 | |
| 670 | + $("#tDep1_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ | |
| 671 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 672 | + $('.bottom_content .area_total_count').hide(); | |
| 673 | + } | |
| 674 | + if(form.hashTag.value != ''){ | |
| 675 | + if($('#letterLoad .nodata_box').length > 0){ | |
| 676 | + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 677 | + } | |
| 678 | + } | |
| 679 | + | |
| 680 | + }); | |
| 681 | + //문자샘플 | |
| 682 | + $("#letterLoad").load("/web/mjon/msgdata/selectLetterDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 683 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 684 | + $('.bottom_content .area_total_count').hide(); | |
| 685 | + } | |
| 686 | + if(form.hashTag.value != ''){ | |
| 687 | + if($('#letterLoad .nodata_box').length > 0){ | |
| 688 | + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 689 | + } | |
| 690 | + } | |
| 691 | + | |
| 692 | + }); | |
| 693 | + | |
| 694 | +} | |
| 695 | + | |
| 696 | +function fnPhotoListAjax(index){ | |
| 697 | + var form = document.letterForm; | |
| 698 | + //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 | |
| 699 | + if(form.searchKeyword.value != '') { | |
| 700 | + form.categoryCode.value = ""; | |
| 701 | + form.hashTag.value = ""; | |
| 702 | + | |
| 703 | + $('.tDep2_cateCode').find('.on').removeClass('on'); | |
| 704 | + $('.tDep2_cateCode').find('.cateAll').addClass('on'); | |
| 705 | + $('.tDep2_hashTag').find('.on').removeClass('on'); | |
| 706 | + $('.tDep2_hashTag').find('.hashAll').addClass('on'); | |
| 707 | + }else{ | |
| 708 | + //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 | |
| 709 | + var strTagTxt = $('.tDep2_hashTag').find('.on').text().replace("#",""); | |
| 710 | + if(strTagTxt == "전체"){ | |
| 711 | + form.hashTag.value = ""; | |
| 712 | + }else{ | |
| 713 | + form.hashTag.value = strTagTxt; | |
| 714 | + } | |
| 715 | + } | |
| 716 | + form.letterType.value = 'P'; | |
| 717 | + form.pageIndex.value = index; | |
| 718 | + var sendData = $(document.letterForm).serializeArray(); | |
| 719 | + //하위 카테고리 | |
| 720 | + $("#tDep2_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ | |
| 721 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 722 | + $('.bottom_content .area_total_count').hide(); | |
| 723 | + } | |
| 724 | + if(form.hashTag.value != ''){ | |
| 725 | + if($('#letterLoad .nodata_box').length > 0){ | |
| 726 | + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 727 | + } | |
| 728 | + } | |
| 729 | + | |
| 730 | + }); | |
| 731 | + | |
| 732 | + $("#photoLoad").load("/web/mjon/msgdata/selectPhotoDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 733 | + photoLayerView(); | |
| 734 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 735 | + $('.bottom_content .area_total_count').hide(); | |
| 736 | + } | |
| 737 | + if(form.hashTag.value != ''){ | |
| 738 | + if($('#photoLoad .nodata_box').length > 0){ | |
| 739 | + $('#photoLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 740 | + } | |
| 741 | + } | |
| 742 | + }); | |
| 743 | + | |
| 744 | +} | |
| 745 | + | |
| 746 | +function fnMyMsgListAjax(index){ | |
| 747 | + | |
| 748 | + if(loginVO == "" || loginVO == null){ | |
| 749 | + //alert("로그인 후 사용이 가능합니다."); | |
| 750 | + location.href="/web/user/login/login.do"; | |
| 751 | + return false; | |
| 752 | + }else{ | |
| 753 | + document.myMsgForm.pageIndex.value = index; | |
| 754 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 755 | + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 756 | + /* $(".msg_cont").mCustomScrollbar({ | |
| 757 | + axis: 'y', | |
| 758 | + scrollbarPosition: "inside", | |
| 759 | + theme: "dark", | |
| 760 | + autoHideScrollbar: false | |
| 761 | + }); */ | |
| 762 | + | |
| 763 | + }); | |
| 764 | + } | |
| 765 | +} | |
| 766 | + | |
| 767 | +function fnMyMsgSearchListAjax(index){ | |
| 768 | + | |
| 769 | + document.myMsgForm.pageIndex.value = index; | |
| 770 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 771 | + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 772 | + | |
| 773 | + /* $(".msg_cont").mCustomScrollbar({ | |
| 774 | + axis: 'y', | |
| 775 | + scrollbarPosition: "inside", | |
| 776 | + theme: "dark", | |
| 777 | + autoHideScrollbar: false | |
| 778 | + }); */ | |
| 779 | + | |
| 780 | + }); | |
| 781 | + | |
| 782 | +} | |
| 783 | + | |
| 784 | +function fnMsgExcelDataView(){ | |
| 785 | + | |
| 786 | + /* var sendData = $(document.searchForm).serializeArray() ; | |
| 787 | + | |
| 788 | + //엑셀 문자 탭 활성화 시키기 | |
| 789 | + TabType1($('.tabType1 li').eq(1), '2'); | |
| 790 | + | |
| 791 | + $(".contentExcelArea").load("/web/mjon/msgdata/selectMsgExcelDataViewAjax.do", sendData ,function(response, status, xhr){ | |
| 792 | + }); */ | |
| 793 | + | |
| 794 | + location.href="/web/mjon/msgdata/excel/selectMsgExcelDataView.do"; | |
| 795 | + | |
| 796 | +} | |
| 797 | + | |
| 798 | +function fn_saveMyMsg(){ // 내 문자 보관함 저장 | |
| 799 | + | |
| 800 | + var form = document.msgForm; | |
| 801 | + var myImgFileId = []; //신규 이미지 추가 파일 Id 저장 변수 | |
| 802 | + var adverYn = $("input[name='send_adYn']:checked").val(); //광고 체크여부 | |
| 803 | + | |
| 804 | + /* | |
| 805 | + 이미지 에디터를 사용하여 추가한 경우 이미지 업로드 처리 - 단 에디터에서 템플릿을 선택한 경우는 업로드안함 | |
| 806 | + 신규 이미지 추가를 한 경우만 이미지 파일 업로드 처리함 | |
| 807 | + */ | |
| 808 | + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { | |
| 809 | + | |
| 810 | + if($("#delLi"+idx).hasClass("Template")){ //이미지 에디터 템플릿 이미지 선택 여부 확인 | |
| 811 | + templateYn.push("Y"); | |
| 812 | + } else { | |
| 813 | + templateYn.push("N"); | |
| 814 | + } | |
| 815 | + | |
| 816 | + if($(el).hasClass("edit_y")) { //에디터를 사용했고 | |
| 817 | + //이미지 변환 | |
| 818 | + const imgBase64 = $(el).attr("src"); | |
| 819 | + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 | |
| 820 | + | |
| 821 | + | |
| 822 | + let array = []; | |
| 823 | + for (let i = 0; i < decodImg.length; i++) { | |
| 824 | + array.push(decodImg.charCodeAt(i)); | |
| 825 | + } | |
| 826 | + | |
| 827 | + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); | |
| 828 | + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; | |
| 829 | + let formData = new FormData(); | |
| 830 | + formData.append('file', file, fileName); | |
| 831 | + | |
| 832 | + $.ajax({ | |
| 833 | + type: 'post', | |
| 834 | + url: '/web/mjon/msgdata/insertEditImageAjax.do', | |
| 835 | + cache: false, | |
| 836 | + data: formData, | |
| 837 | + dataType:'json', | |
| 838 | + processData: false, | |
| 839 | + contentType: false, | |
| 840 | + async: false, | |
| 841 | + success: function (returnData, status) { | |
| 842 | + if(status == 'success'){ | |
| 843 | + // imgFilePath 에 배열로 담아주기(이미지 순서대로) | |
| 844 | + //console.log(imgFilePath); | |
| 845 | + //imgFilePath.push(returnData.filefullPath); | |
| 846 | + myImgFileId.push(returnData.atchFileId); | |
| 847 | + | |
| 848 | + } else if(status== 'fail'){ | |
| 849 | + alert(returnData.message); | |
| 850 | + } | |
| 851 | + }, | |
| 852 | + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 853 | + }); | |
| 854 | + | |
| 855 | + } else { | |
| 856 | + //에디터 안거친 템플릿 이미지면 바로 src 때림 | |
| 857 | + imgFilePath.push($(el).attr("src")); | |
| 858 | + } | |
| 859 | + }); | |
| 860 | + | |
| 861 | + if(myImgFileId.length > 0 && imgFileId.length > 0){ //기존 샘플 이미지와 이미지 에디터 둘다 사용한 경우 | |
| 862 | + | |
| 863 | + var tempImgId = []; | |
| 864 | + | |
| 865 | + tempImgId.push(myImgFileId); | |
| 866 | + tempImgId.push(imgFileId); | |
| 867 | + form.imgFileId.value = tempImgId; | |
| 868 | + | |
| 869 | + }else if(myImgFileId.length > 0){ //이미지 에디터에서 신규 등록한 이미지 | |
| 870 | + | |
| 871 | + form.imgFileId.value = myImgFileId; | |
| 872 | + | |
| 873 | + }else{ //샘플 이미지 선택만 했을경우(이미지 에디터 사용 안했을때) | |
| 874 | + | |
| 875 | + form.imgFileId.value = imgFileId; | |
| 876 | + } | |
| 877 | + | |
| 878 | + //광고 문자 내용 합쳐주기 | |
| 879 | + if(adverYn == 'Y'){ | |
| 880 | + | |
| 881 | + var adTxt = $('.ad_txt').text(); | |
| 882 | + var denyTxt = $('.deny_txt').text(); | |
| 883 | + var smsTxt = form.smsTxtArea.value; | |
| 884 | + | |
| 885 | + //var adverTxt = adTxt + '\n\n' + smsTxt + '\n\n' + denyTxt; | |
| 886 | + var adverTxt = smsTxt; | |
| 887 | + form.smsTxt.value = adverTxt; | |
| 888 | + | |
| 889 | + }else{ | |
| 890 | + | |
| 891 | + var smsTxt = form.smsTxtArea.value; | |
| 892 | + form.smsTxt.value = smsTxt; | |
| 893 | + | |
| 894 | + } | |
| 895 | + | |
| 896 | + //문자 종류 설정(S:단문 , L:장문 , P:그림) | |
| 897 | + var photoSts = $('.delLi').length; | |
| 898 | + var conLeng = conByteLeng(form.smsTxt.value); // 내용 문자 입력 바이트 수 계산하기 | |
| 899 | + | |
| 900 | + if(photoSts > 0){ | |
| 901 | + | |
| 902 | + form.msgType.value = 'P'; | |
| 903 | + | |
| 904 | + }else if(conLeng > 90){ | |
| 905 | + | |
| 906 | + form.msgType.value = 'L'; | |
| 907 | + | |
| 908 | + }else{ | |
| 909 | + | |
| 910 | + form.msgType.value = 'S'; | |
| 911 | + | |
| 912 | + } | |
| 913 | + | |
| 914 | + if(photoSts == '0' && conLeng == '0'){ | |
| 915 | + | |
| 916 | + alert("문자내용을 입력해 주세요."); | |
| 917 | + return false; | |
| 918 | + | |
| 919 | + } | |
| 920 | + | |
| 921 | + var data = new FormData(form); | |
| 922 | + url = "/web/mjon/msgdata/insertMyMsgDataAjax.do"; | |
| 923 | + | |
| 924 | + $.ajax({ | |
| 925 | + type: "POST", | |
| 926 | + url: url, | |
| 927 | + data: data, | |
| 928 | + dataType:'json', | |
| 929 | + async: false, | |
| 930 | + processData: false, | |
| 931 | + contentType: false, | |
| 932 | + cache: false, | |
| 933 | + success: function (returnData, status) { | |
| 934 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 935 | + if("fail"==returnData.result){ | |
| 936 | + | |
| 937 | + alert(returnData.message); | |
| 938 | + return false; | |
| 939 | + | |
| 940 | + }else{ | |
| 941 | + | |
| 942 | + alert("내 문자함에 저장되었습니다."); | |
| 943 | + | |
| 944 | + //내 문자함 탭 활성화 시키기 | |
| 945 | + TabType2($('.tabType2 li').eq(3), '4'); | |
| 946 | + var offset = $('.tabType2').offset(); | |
| 947 | + $('html, body').animate({scrollTop : offset.top-140}, 400); | |
| 948 | + | |
| 949 | + //최 하단 내문자함 탭 리스트 내용 불러오기 | |
| 950 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 951 | + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 952 | + }); | |
| 953 | + | |
| 954 | + } | |
| 955 | + | |
| 956 | + } else if(status== 'fail'){ | |
| 957 | + alert(returnData.message); | |
| 958 | + } | |
| 959 | + }, | |
| 960 | + error: function (e) { alert("문자 저장에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 961 | + }); | |
| 962 | + | |
| 963 | +} | |
| 964 | + | |
| 965 | +//내 문자함으로 탭이동 | |
| 966 | +function fnGoMyMsg(){ | |
| 967 | + | |
| 968 | + //내 문자함 탭 활성화 시키기 | |
| 969 | + TabType2($('.tabType2 li').eq(3), '4'); | |
| 970 | + | |
| 971 | + var offset = $('.tabType2').offset(); | |
| 972 | + $('html, body').animate({scrollTop : offset.top-140}, 400); | |
| 973 | + | |
| 974 | +} | |
| 975 | + | |
| 976 | + | |
| 977 | +// MJ_MSG_GROUP_DATA 누락데이터 체크 | |
| 978 | +function getMsgGroupDataErrorCheck() { | |
| 979 | + var isError = false; | |
| 980 | + | |
| 981 | + $.ajax({ | |
| 982 | + type: "POST", | |
| 983 | + url: "/web/mjon/msgdata/selectMsgGroupNotExistInfoAjax.do", | |
| 984 | + data: {}, | |
| 985 | + dataType:'json', | |
| 986 | + async: false, | |
| 987 | + success: function (data) { | |
| 988 | + if (data.isSuccess) { | |
| 989 | + if (data.isError == true) { | |
| 990 | + isError = true; | |
| 991 | + } | |
| 992 | + } | |
| 993 | + }, | |
| 994 | + error: function (e) { | |
| 995 | + | |
| 996 | + } | |
| 997 | + }); | |
| 998 | + | |
| 999 | + return isError; | |
| 1000 | +} | |
| 1001 | + | |
| 1002 | +function checkConf() { | |
| 1003 | + var confCheck = false; | |
| 1004 | + | |
| 1005 | + $.ajax({ | |
| 1006 | + type: "POST", | |
| 1007 | + url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do", | |
| 1008 | + data: {}, | |
| 1009 | + dataType:'json', | |
| 1010 | + async: false, | |
| 1011 | + success: function (returnData, status) { | |
| 1012 | + if(returnData.result == "fail") { | |
| 1013 | + console.log(returnData.message); | |
| 1014 | + }else if(returnData.result == "success"){ | |
| 1015 | + confCheck = true; | |
| 1016 | + } | |
| 1017 | + } | |
| 1018 | + ,error: function (e) {console.log("ERROR : ", e); } | |
| 1019 | + }); | |
| 1020 | + | |
| 1021 | + return confCheck; | |
| 1022 | +} | |
| 1023 | +function blineSendCheck(blineCode) { | |
| 1024 | + | |
| 1025 | + var confCheck = false; | |
| 1026 | + | |
| 1027 | + $.ajax({ | |
| 1028 | + type: "POST", | |
| 1029 | + url: "/web/mjon/conf/selectBlineSendCheckAjax.do", | |
| 1030 | + data: {"agentCode":blineCode}, | |
| 1031 | + dataType:'json', | |
| 1032 | + async: false, | |
| 1033 | + success: function (returnData, status) { | |
| 1034 | + if(returnData.result == "fail") { | |
| 1035 | + console.log(returnData.message); | |
| 1036 | + }else if(returnData.result == "success"){ | |
| 1037 | + confCheck = true; | |
| 1038 | + } | |
| 1039 | + } | |
| 1040 | + ,error: function (e) {console.log("ERROR : ", e); } | |
| 1041 | + }); | |
| 1042 | + | |
| 1043 | + return confCheck; | |
| 1044 | +} | |
| 1045 | + | |
| 1046 | +//문자발송 처리 함수 | |
| 1047 | +function fn_sendMsgData(){ | |
| 1048 | + | |
| 1049 | + if(!checkConf()){ //문자온 conf-check | |
| 1050 | + alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요."); | |
| 1051 | + return false; | |
| 1052 | + } | |
| 1053 | + | |
| 1054 | + var testString = document.msgForm.smsTxtArea.value; | |
| 1055 | + | |
| 1056 | + var form = document.msgForm; | |
| 1057 | + | |
| 1058 | + //회원 보유 잔액 비교 | |
| 1059 | + var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", ""); | |
| 1060 | + var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", ""); | |
| 1061 | + if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){ | |
| 1062 | + alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다."); | |
| 1063 | + return false; | |
| 1064 | + } | |
| 1065 | + | |
| 1066 | + var loginVO = '${LoginVO}'; | |
| 1067 | + var adverYn = $("input[name='send_adYn']:checked").val(); | |
| 1068 | + var spamStatus = false; | |
| 1069 | + var exceptSpamYn = $("#exceptSpamYn").val(); //금지어 필터링 예외 여부 - N 일 경우만 스팸 검사를 진행 | |
| 1070 | + | |
| 1071 | + //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. | |
| 1072 | + /* var eventStatus = form.eventStatus.value; | |
| 1073 | + var eventRemainCash = parseFloat(form.eventRemainCash.value); | |
| 1074 | + | |
| 1075 | + if(eventStatus == 'Y'){ | |
| 1076 | + | |
| 1077 | + if(parseFloat(eventRemainCash) < parseFloat(totPriceOnly)){ | |
| 1078 | + | |
| 1079 | + alert("고객님의 이벤트 캐시 잔액은 " + eventRemainCash + "원으로 입력하신 수량의 문자를 전부 발송할 수 없습니다. 잔액 이하로 발송건수를 재설정하시기 바랍니다."); | |
| 1080 | + return false; | |
| 1081 | + } | |
| 1082 | + | |
| 1083 | + } */ | |
| 1084 | + | |
| 1085 | + if(loginVO == "" || loginVO == null){ | |
| 1086 | + | |
| 1087 | + alert("문자발송 서비스는 로그인 후 이용 가능합니다."); | |
| 1088 | + return false; | |
| 1089 | + | |
| 1090 | + } | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + var blineCodeYn = $("#blineCode").val(); | |
| 1094 | + if(blineCodeYn != 'N'){ | |
| 1095 | + if(!blineSendCheck(blineCodeYn)){ //문자온 conf-check | |
| 1096 | + alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요."); | |
| 1097 | + return false; | |
| 1098 | + } | |
| 1099 | + } | |
| 1100 | + | |
| 1101 | + //MJ_MSG_GROUP_DATA 누락데이터 체크 | |
| 1102 | + //if (getMsgGroupDataErrorCheck() == false) { | |
| 1103 | + // alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요."); | |
| 1104 | + // return false; | |
| 1105 | + //} | |
| 1106 | + | |
| 1107 | + if(form.callFromList.value == ""){ | |
| 1108 | + | |
| 1109 | + alert("발신번호를 입력해 주세요."); | |
| 1110 | + return false; | |
| 1111 | + | |
| 1112 | + } | |
| 1113 | + | |
| 1114 | + var titleStatus = form.title_status.value; | |
| 1115 | + if(titleStatus == 'N'){//장문 제목 사용안함으로 선택시 제목에 있는 데이터 지워주기 | |
| 1116 | + | |
| 1117 | + form.mmsSubject.value = ""; | |
| 1118 | + | |
| 1119 | + }else{//장문 제목에 치환문자 포함된 경우 입력 못하도록 처리. | |
| 1120 | + | |
| 1121 | + var mmsSubject = form.mmsSubject.value; | |
| 1122 | + if(getSpacialStringChk(mmsSubject)){ | |
| 1123 | + alert("문자 제목에는 치환문자(엑셀 내 *이름*, *1*, *2*, *3*, *4* 등)를 사용하실 수 없습니다."); | |
| 1124 | + return false; | |
| 1125 | + } | |
| 1126 | + | |
| 1127 | + } | |
| 1128 | + | |
| 1129 | + //문자내용 첫글자에 특수기호 포함 여부 체크 | |
| 1130 | + var strCont = form.smsTxtArea.value; | |
| 1131 | + var rtnStr = strChinJpnCheck(strCont); | |
| 1132 | + | |
| 1133 | + //문자제목에 이모지가 있는지 체크 | |
| 1134 | + var titleStatusYn = $("input[name='title_status']:checked").val(); | |
| 1135 | + if(titleStatusYn == 'Y') { | |
| 1136 | + if(!emojiCheck(form.mmsSubject.value)) return false; | |
| 1137 | + } | |
| 1138 | + | |
| 1139 | + //문자내용에 이모지가 있는지 체크 | |
| 1140 | + if(!emojiCheck(strCont)) return false; | |
| 1141 | + | |
| 1142 | + if(rtnStr.length > 0){ | |
| 1143 | + | |
| 1144 | + alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다."); | |
| 1145 | + | |
| 1146 | + } | |
| 1147 | + | |
| 1148 | + /* var strCont = form.smsTxtArea.value; | |
| 1149 | + var repStr = strFirstCharCheck(strCont); | |
| 1150 | + | |
| 1151 | + if(repStr.length > 0){ | |
| 1152 | + | |
| 1153 | + alert("문자 내용 첫 글자는 특수기호가 들어갈 수 없습니다."); | |
| 1154 | + $('#smsTxtArea').val(strCont.replace(repStr, "")); | |
| 1155 | + fnByteString(strCont.replace(repStr, "")); | |
| 1156 | + return false; | |
| 1157 | + | |
| 1158 | + } */ | |
| 1159 | + | |
| 1160 | + if(imgFilePath.length == 0){ // 그림문자일 경우 내용이 없어도 됨 , 장문 문자일 경우만 문자내용 체크함 | |
| 1161 | + | |
| 1162 | + if(form.smsTxtArea.value == ""){ | |
| 1163 | + | |
| 1164 | + alert("문자 내용을 입력해 주세요."); | |
| 1165 | + return false; | |
| 1166 | + | |
| 1167 | + } | |
| 1168 | + | |
| 1169 | + } | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + //광고 문자 내용 합쳐주기 | |
| 1173 | + if(adverYn == 'Y'){ | |
| 1174 | + | |
| 1175 | + var adTxt = $('.ad_txt').text(); | |
| 1176 | + var denyTxt = $('.deny_txt').text(); | |
| 1177 | + var smsTxt = form.smsTxtArea.value; | |
| 1178 | + | |
| 1179 | + var adverTxt = adTxt + smsTxt + '\n' + denyTxt; | |
| 1180 | + form.smsTxt.value = adverTxt; | |
| 1181 | + form.msgKind.value = "A"; //광고문자 종류 설정 | |
| 1182 | + | |
| 1183 | + }else{ | |
| 1184 | + | |
| 1185 | + var smsTxt = form.smsTxtArea.value; | |
| 1186 | + form.smsTxt.value = smsTxt; | |
| 1187 | + form.msgKind.value = "N"; //일반문자 종류 설정 | |
| 1188 | + | |
| 1189 | + } | |
| 1190 | + | |
| 1191 | + //수신번호 리스트 체크하기 | |
| 1192 | + var numCnt = 0; | |
| 1193 | + var nameList = []; //치환문자 이름 | |
| 1194 | + var phoneNum = []; //받는사람 | |
| 1195 | + var rep1List = []; //치환문자1 | |
| 1196 | + var rep2List = []; //치환문자2 | |
| 1197 | + var rep3List = []; //치환문자3 | |
| 1198 | + var rep4List = []; //치환문자4 | |
| 1199 | + | |
| 1200 | + var selectedData = tableL.getRows(); | |
| 1201 | + | |
| 1202 | + if(selectedData == "" || selectedData == null){ | |
| 1203 | + | |
| 1204 | + alert("받는사람 주소를 한 건 이상 입력해주세요."); | |
| 1205 | + return false; | |
| 1206 | + | |
| 1207 | + }else{ // 선택한 Row '-' 문자 삭제하기 | |
| 1208 | + | |
| 1209 | + for(var i=0; i < selectedData.length; i++){ | |
| 1210 | + | |
| 1211 | + //일괄변환 문자에 콤마(,)가 들어가있으면 배열로 넘길때 문제가 발생하여 특수문자(§)로 치환하여 넘겨주도록 한다. | |
| 1212 | + var name = tableL.getRows()[i].getData().name; | |
| 1213 | + var phone = removeDash(tableL.getRows()[i].getData().phone); | |
| 1214 | + var rep1 = tableL.getRows()[i].getData().rep1; | |
| 1215 | + var rep2 = tableL.getRows()[i].getData().rep2; | |
| 1216 | + var rep3 = tableL.getRows()[i].getData().rep3; | |
| 1217 | + var rep4 = tableL.getRows()[i].getData().rep4; | |
| 1218 | + | |
| 1219 | + if(phone == ""){ | |
| 1220 | + | |
| 1221 | + alert("수신 목록에 핸드폰 번호가 없는 항목이 있습니다."); | |
| 1222 | + return false; | |
| 1223 | + | |
| 1224 | + }else if(!checkHpNum(phone)){ | |
| 1225 | + | |
| 1226 | + alert("수신 목록에 잘 못된 핸드폰 번호가 있습니다. 핸드폰 번호 : " + phone + " 입니다."); | |
| 1227 | + return false; | |
| 1228 | + | |
| 1229 | + }else{ | |
| 1230 | + | |
| 1231 | + if(typeof(name) != 'undefined' && name != null && name !=""){ | |
| 1232 | + if(!emojiCheck(name)){//이모지 체크 해주기 | |
| 1233 | + return false; | |
| 1234 | + } | |
| 1235 | + nameList[i] = name.replaceAll(",","§"); | |
| 1236 | + } | |
| 1237 | + | |
| 1238 | + phoneNum[i] = phone; | |
| 1239 | + | |
| 1240 | + if(typeof(rep1) != 'undefined' && rep1 != null){ | |
| 1241 | + if(!emojiCheck(rep1)){//이모지 체크 해주기 | |
| 1242 | + return false; | |
| 1243 | + } | |
| 1244 | + rep1List[i] = rep1.replaceAll(",","§"); | |
| 1245 | + } | |
| 1246 | + if(typeof(rep2) != 'undefined' && rep2 != null){ | |
| 1247 | + if(!emojiCheck(rep2)){//이모지 체크 해주기 | |
| 1248 | + return false; | |
| 1249 | + } | |
| 1250 | + rep2List[i] = rep2.replaceAll(",","§"); | |
| 1251 | + } | |
| 1252 | + if(typeof(rep3) != 'undefined' && rep3 != null){ | |
| 1253 | + if(!emojiCheck(rep3)){//이모지 체크 해주기 | |
| 1254 | + return false; | |
| 1255 | + } | |
| 1256 | + rep3List[i] = rep3.replaceAll(",","§"); | |
| 1257 | + } | |
| 1258 | + if(typeof(rep4) != 'undefined' && rep4 != null){ | |
| 1259 | + if(!emojiCheck(rep4)){//이모지 체크 해주기 | |
| 1260 | + return false; | |
| 1261 | + } | |
| 1262 | + rep4List[i] = rep4.replaceAll(",","§"); | |
| 1263 | + } | |
| 1264 | + | |
| 1265 | + } | |
| 1266 | + | |
| 1267 | + } | |
| 1268 | + | |
| 1269 | + } | |
| 1270 | + | |
| 1271 | + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 | |
| 1272 | + | |
| 1273 | + if(reserYn == 'Y'){ | |
| 1274 | + | |
| 1275 | + var date = $(".resDate").val();//form.msgResDate.value; | |
| 1276 | + var hour = form.msgResHour.value; | |
| 1277 | + var min = form.msgResMin.value; | |
| 1278 | + | |
| 1279 | + if(date == ""){ | |
| 1280 | + | |
| 1281 | + alert("예약전송 날짜를 선택해 주세요."); | |
| 1282 | + return false; | |
| 1283 | + | |
| 1284 | + }else{ | |
| 1285 | + | |
| 1286 | + var now = new Date(); | |
| 1287 | + var reqDate = date + " " + hour + ":" + min + ":00"; | |
| 1288 | + var gapDate = getGapDayTime(date, hour, min); | |
| 1289 | + | |
| 1290 | + if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜. | |
| 1291 | + alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요."); | |
| 1292 | + return false; | |
| 1293 | + }else{ | |
| 1294 | + form.reqDate.value = reqDate; //예약일자 파라미터 저장 | |
| 1295 | + } | |
| 1296 | + } | |
| 1297 | + | |
| 1298 | + }else{ | |
| 1299 | + | |
| 1300 | + form.reqDate.value = ""; | |
| 1301 | + | |
| 1302 | + } | |
| 1303 | + | |
| 1304 | + var fileLinks = document.getElementsByName("fileLinks"); | |
| 1305 | + | |
| 1306 | + var conLeng = conByteLeng($('#smsTxt').val()); // 내용 문자 입력 바이트 수 계산하기 | |
| 1307 | + | |
| 1308 | + if(conLeng > 2000){ | |
| 1309 | + | |
| 1310 | + alert("문자 내용은 2000byte를 넘을 수 없습니다."); | |
| 1311 | + return false; | |
| 1312 | + | |
| 1313 | + } | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + if(confirm("문자를 전송하시겠습니까?")){ | |
| 1317 | + imgFilePath = []; | |
| 1318 | + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { | |
| 1319 | + if($("#delLi"+idx).hasClass("Template")){ | |
| 1320 | + templateYn.push("Y"); | |
| 1321 | + } else { | |
| 1322 | + templateYn.push("N"); | |
| 1323 | + } | |
| 1324 | + | |
| 1325 | + if($(el).hasClass("edit_y")) { | |
| 1326 | + //이미지 변환 | |
| 1327 | + const imgBase64 = $(el).attr("src"); | |
| 1328 | + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + let array = []; | |
| 1332 | + for (let i = 0; i < decodImg.length; i++) { | |
| 1333 | + array.push(decodImg.charCodeAt(i)); | |
| 1334 | + } | |
| 1335 | + | |
| 1336 | + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); | |
| 1337 | + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; | |
| 1338 | + let formData = new FormData(); | |
| 1339 | + formData.append('file', file, fileName); | |
| 1340 | + | |
| 1341 | + $.ajax({ | |
| 1342 | + type: 'post', | |
| 1343 | + url: '/web/mjon/msgdata/insertEditImageAjax.do', | |
| 1344 | + cache: false, | |
| 1345 | + data: formData, | |
| 1346 | + dataType:'json', | |
| 1347 | + processData: false, | |
| 1348 | + contentType: false, | |
| 1349 | + async: false, | |
| 1350 | + success: function (returnData, status) { | |
| 1351 | + if(status == 'success'){ | |
| 1352 | + // imgFilePath 에 배열로 담아주기(이미지 순서대로) | |
| 1353 | + //console.log(imgFilePath); | |
| 1354 | + imgFilePath.push(returnData.filefullPath); | |
| 1355 | + imgFileId.push(returnData.atchFileId); | |
| 1356 | + | |
| 1357 | + } else if(status== 'fail'){ | |
| 1358 | + alert(returnData.message); | |
| 1359 | + } | |
| 1360 | + }, | |
| 1361 | + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 1362 | + }); | |
| 1363 | + | |
| 1364 | + } else { | |
| 1365 | + | |
| 1366 | + if(imgFilePath.length != imgFileId.length){ | |
| 1367 | + //에디터 안거친 템플릿 이미지면 바로 src 때림 | |
| 1368 | + imgFilePath.push($(el).attr("src")); | |
| 1369 | + } | |
| 1370 | + | |
| 1371 | + } | |
| 1372 | + }); | |
| 1373 | + | |
| 1374 | + form.imgFilePath.value = imgFilePath; // 저장한 이미지 경로 담아주기 | |
| 1375 | + form.callToList.value = phoneNum; //수신자번호 리스트 저장해주기 | |
| 1376 | + form.callFrom.value = removeDash(form.callFromList.value); // 발신번호 대쉬(-) 문자 없애주기 | |
| 1377 | + form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 | |
| 1378 | + form.templateYn.value = templateYn; | |
| 1379 | + form.imgFileId.value = imgFileId; | |
| 1380 | + form.nameList.value = nameList; | |
| 1381 | + form.rep1List.value = rep1List; | |
| 1382 | + form.rep2List.value = rep2List; | |
| 1383 | + form.rep3List.value = rep3List; | |
| 1384 | + form.rep4List.value = rep4List; | |
| 1385 | + | |
| 1386 | + //총 결제금액 천단위 콤마 삭제 후 전송 | |
| 1387 | + var totPrice = form.totPrice.value; | |
| 1388 | + totPrice = totPrice.replace(",",""); | |
| 1389 | + form.totPrice.value = totPrice; | |
| 1390 | + | |
| 1391 | + //문자내용이 입력된 경우 스팸 필터링 실행 | |
| 1392 | + if(!form.smsTxtArea.value == "" && exceptSpamYn == "N"){ | |
| 1393 | + | |
| 1394 | + var spmData = new FormData(form); | |
| 1395 | + url = "/web/mjon/msgdata/selectSpamTxtChkAjax.do"; | |
| 1396 | + | |
| 1397 | + $.ajax({ | |
| 1398 | + type: "POST", | |
| 1399 | + url: url, | |
| 1400 | + data: spmData, | |
| 1401 | + dataType:'json', | |
| 1402 | + async: false, | |
| 1403 | + processData: false, | |
| 1404 | + contentType: false, | |
| 1405 | + cache: false, | |
| 1406 | + success: function (returnData, status) { | |
| 1407 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 1408 | + | |
| 1409 | + if("fail" == returnData.result){ | |
| 1410 | + | |
| 1411 | + alert(returnData.message); | |
| 1412 | + return false; | |
| 1413 | + | |
| 1414 | + }else if("loginFail" == returnData.result){ | |
| 1415 | + | |
| 1416 | + alert(returnData.message); | |
| 1417 | + return false; | |
| 1418 | + | |
| 1419 | + }else if("spams" == returnData.result){ | |
| 1420 | + | |
| 1421 | +// var spmFilterTxt = returnData.spmFilterTxt; | |
| 1422 | + spamStatus = true; | |
| 1423 | + | |
| 1424 | +// form.spamKeyword.value = spmFilterTxt; | |
| 1425 | + form.spamStatus.value='Y'; | |
| 1426 | + }else{ | |
| 1427 | + form.spamKeyword.value = ''; | |
| 1428 | + form.spamStatus.value='N'; | |
| 1429 | + | |
| 1430 | + } | |
| 1431 | + | |
| 1432 | + } else if(status== 'fail'){ | |
| 1433 | + alert(returnData.message); | |
| 1434 | + return false; | |
| 1435 | + } | |
| 1436 | + }, | |
| 1437 | + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); return false;} | |
| 1438 | + }); | |
| 1439 | + | |
| 1440 | + } | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. | |
| 1444 | + //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. | |
| 1445 | + //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. | |
| 1446 | + var eventStatus = form.eventStatus.value; | |
| 1447 | + | |
| 1448 | + if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분 | |
| 1449 | + | |
| 1450 | + form.eventYn.value = "Y"; //이벤트문자 종류 설정 | |
| 1451 | + | |
| 1452 | + } | |
| 1453 | + | |
| 1454 | + var eventRemainCash = parseFloat(form.eventRemainCash.value); | |
| 1455 | + | |
| 1456 | + if(eventStatus == 'Y'){ | |
| 1457 | + | |
| 1458 | + if(parseFloat(eventRemainCash) < parseFloat(totPriceOnly)){ | |
| 1459 | + | |
| 1460 | + if(confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas(phoneNum.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){ | |
| 1461 | + | |
| 1462 | + var smsTxtArea = $('#smsTxtArea').val(); | |
| 1463 | + var evnMsgType = $("#msgType").val(); | |
| 1464 | + var evnEachPrice = $("#eachPrice").val(); //form 에 저장된 이벤트 개별 단가 불러오기 | |
| 1465 | + var evnSendCnt = Math.floor(eventRemainCash / evnEachPrice); | |
| 1466 | + var norEachPrice = 0; | |
| 1467 | + var imgCnt = $("#imgCnt").val(); //그림 이미지 갯수 | |
| 1468 | + var txtReplYn = $("#txtReplYn").val(); //치환문자 포함 여부 | |
| 1469 | + var evnPhoneNumCnt = Number($("#evnPhoneNumCnt").val()); //치환문자 체크하면서 단/장문 건수 카운팅하면서 이벤트 금액으로 발송가능한 수신자 갯수 정보 | |
| 1470 | + var myPrice = parseFloat($("#myPrice").val()); //회원보유 잔여 캐시 금액 | |
| 1471 | + | |
| 1472 | + //수신목록 저장 배열 변수 | |
| 1473 | + var evnPhoneNum = []; //이벤트 단가 받는사람 | |
| 1474 | + var norPhoneNum = []; //일반 단가 받는 사람 | |
| 1475 | + | |
| 1476 | + //치환문자 포함 문자 저장 배열 변수(이벤트 문자 저장) | |
| 1477 | + var evnName = []; | |
| 1478 | + var evnRep1 = []; | |
| 1479 | + var evnRep2 = []; | |
| 1480 | + var evnRep3 = []; | |
| 1481 | + var evnRep4 = []; | |
| 1482 | + | |
| 1483 | + //치환문자 포함 문자 저장 배열 변수(일반 문자 저장) | |
| 1484 | + var norName = []; | |
| 1485 | + var norRep1 = []; | |
| 1486 | + var norRep2 = []; | |
| 1487 | + var norRep3 = []; | |
| 1488 | + var norRep4 = []; | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + /** | |
| 1492 | + Desc: 1. 그림, 치환, 일반 문자에 대해서 각각 이벤트 단가로 전송할 리스트 와 일반단가로 전송할 리스트를 분리 하는 로직 | |
| 1493 | + 2. 그림 및 일반 문자는 단순 이벤트 금액으로 보낼수 있는 건수를 계산하여 리스트[0] 부터 발송 건수만큼 추출하여 evnPhoneNum 배열에 입력 후 이벤트 금액으로 발송 진행 | |
| 1494 | + 3. 이벤트 발송이 완료되면, 이벤트 건수를 제외한 나머지 건수를 norPhoneNum 배열에 입력 후 일반 금액으로 발송 진행 | |
| 1495 | + 4. 일반 발송시에 전송 단가(eachPrice), 전체금액(totPrice) 등 변수 정보 변경 | |
| 1496 | + ===== | |
| 1497 | + 5. 그림문자가 아닌 치환문자인 경우 치환 처리를 진행하면서 단문, 장문을 구분하고 이때 이벤트 금액에서 단문, 장문 가격을 차감하여 보낼 수량을 카운팅 함. | |
| 1498 | + 6. 치환 체크가 완료되면 치환시 나온 카운트 갯수만큼 이벤트 배열과 일반 배열에 분리처리 후 전송함. | |
| 1499 | + 7. 이벤트 발송 처리후 일반 단가 문자 발송시 보유 캐시 부족시 팝업으로 현재까지 발송된 이벤트 건수와 발송하지 못하는 일반단가 건수 정보를 표시해줌. 문자 발송은 중단 된다. | |
| 1500 | + Param Array : evnPhoneNum, norPhoneNum | |
| 1501 | + function : getNorEachPrice - 메세지 타입(msgType)에 따른 단문, 장문, 그림문자 개별 단가 금액 확인 | |
| 1502 | + sendMsgAjax - 문자 발송 요청 Ajax 처리 | |
| 1503 | + */ | |
| 1504 | + | |
| 1505 | + //그림문자인 경우 | |
| 1506 | + if(imgCnt > 0){ | |
| 1507 | + | |
| 1508 | + //이벤트 가격으로 전송 할 받는 사람 리스트 저장처리 | |
| 1509 | + for(var i=0; i< evnSendCnt; i++){ | |
| 1510 | + evnPhoneNum[i]= phoneNum[i]; | |
| 1511 | + | |
| 1512 | + //그림문자에 치환문자가 포함된 경우 | |
| 1513 | + if(txtReplYn == 'Y'){ | |
| 1514 | + | |
| 1515 | + evnPhoneNum[i] = phoneNum[i]; | |
| 1516 | + evnName[i] = nameList[i]; | |
| 1517 | + evnRep1[i] = rep1List[i]; | |
| 1518 | + evnRep2[i] = rep2List[i]; | |
| 1519 | + evnRep3[i] = rep3List[i]; | |
| 1520 | + evnRep4[i] = rep4List[i]; | |
| 1521 | + | |
| 1522 | + } | |
| 1523 | + } | |
| 1524 | + | |
| 1525 | + //일반 가격으로 전송 할 받는 사람 리스트 저장처리 | |
| 1526 | + for(var j=0; j < phoneNum.length - evnSendCnt; j++){ | |
| 1527 | + norPhoneNum[j]= phoneNum[j + evnSendCnt]; | |
| 1528 | + | |
| 1529 | + //그림문자에 치환문자가 포함된 경우 | |
| 1530 | + if(txtReplYn == 'Y'){ | |
| 1531 | + | |
| 1532 | + norPhoneNum[j]= phoneNum[j + evnSendCnt]; | |
| 1533 | + norName[j] = nameList[j + evnSendCnt]; | |
| 1534 | + norRep1[j] = rep1List[j + evnSendCnt]; | |
| 1535 | + norRep2[j] = rep2List[j + evnSendCnt]; | |
| 1536 | + norRep3[j] = rep3List[j + evnSendCnt]; | |
| 1537 | + norRep4[j] = rep4List[j + evnSendCnt]; | |
| 1538 | + | |
| 1539 | + } | |
| 1540 | + | |
| 1541 | + }; | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + }else if(txtReplYn == 'Y'){//치환 문자가 있는 경우 , 그림문자에 치환이 있는 경우 그림문자 가격으로 발송 | |
| 1545 | + | |
| 1546 | + //이벤트 가격으로 전송 할 받는 사람 리스트 저장처리 | |
| 1547 | + for(var i=0; i< evnPhoneNumCnt; i++){ | |
| 1548 | + evnPhoneNum[i] = phoneNum[i]; | |
| 1549 | + evnName[i] = nameList[i]; | |
| 1550 | + evnRep1[i] = rep1List[i]; | |
| 1551 | + evnRep2[i] = rep2List[i]; | |
| 1552 | + evnRep3[i] = rep3List[i]; | |
| 1553 | + evnRep4[i] = rep4List[i]; | |
| 1554 | + } | |
| 1555 | + | |
| 1556 | + //일반 가격으로 전송 할 받는 사람 리스트 저장처리 | |
| 1557 | + for(var j=0; j < phoneNum.length - evnPhoneNumCnt; j++){ | |
| 1558 | + norPhoneNum[j]= phoneNum[j + evnPhoneNumCnt]; | |
| 1559 | + norName[j] = nameList[j + evnPhoneNumCnt]; | |
| 1560 | + norRep1[j] = rep1List[j + evnPhoneNumCnt]; | |
| 1561 | + norRep2[j] = rep2List[j + evnPhoneNumCnt]; | |
| 1562 | + norRep3[j] = rep3List[j + evnPhoneNumCnt]; | |
| 1563 | + norRep4[j] = rep4List[j + evnPhoneNumCnt]; | |
| 1564 | + | |
| 1565 | + }; | |
| 1566 | + | |
| 1567 | + }else{//치환문자 없는 경우 처리 | |
| 1568 | + | |
| 1569 | + //이벤트 가격으로 전송 할 받는 사람 리스트 저장처리 | |
| 1570 | + for(var i=0; i< evnSendCnt; i++){ | |
| 1571 | + evnPhoneNum[i]= phoneNum[i]; | |
| 1572 | + } | |
| 1573 | + | |
| 1574 | + //일반 가격으로 전송 할 받는 사람 리스트 저장처리 | |
| 1575 | + for(var j=0; j < phoneNum.length - evnSendCnt; j++){ | |
| 1576 | + norPhoneNum[j]= phoneNum[j + evnSendCnt]; | |
| 1577 | + }; | |
| 1578 | + } | |
| 1579 | + | |
| 1580 | + var orgShortMsgCnt = $("#shortMsgCnt").val(); //단문 총 건수 백업 | |
| 1581 | + var orgLongMsgCnt = $("#longMsgCnt").val(); //장문 총 건수 백업 | |
| 1582 | + //이벤트 단가 문자 전송 처리 시작 | |
| 1583 | + if(evnPhoneNum.length > 0){ | |
| 1584 | + | |
| 1585 | + form.callToList.value = evnPhoneNum; //수신자번호 리스트 저장해주기 | |
| 1586 | + form.totPrice.value = evnEachPrice * evnSendCnt; //이벤트 단가 총 결제금액 셋팅해주기 | |
| 1587 | + form.eventStatus.value = 'Y'; | |
| 1588 | + form.eventYn.value = 'Y'; | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + var evnTotPrice = parseFloat(form.totPrice.value); | |
| 1592 | + | |
| 1593 | + if(myPrice < evnTotPrice){ | |
| 1594 | + | |
| 1595 | + alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다.evn"); | |
| 1596 | + return false; | |
| 1597 | + | |
| 1598 | + }else{ | |
| 1599 | + | |
| 1600 | + myPrice = myPrice - evnTotPrice; | |
| 1601 | + | |
| 1602 | + } | |
| 1603 | + | |
| 1604 | + //치환문자가 있는 경우 변수 정보 담아주기(그림문자 아닌경우) | |
| 1605 | + if(txtReplYn == 'Y' && imgCnt < 1){ | |
| 1606 | + | |
| 1607 | + var evnShortMsgCnt = $("#evnShortMsgCnt").val(); | |
| 1608 | + var evnLongMsgCnt = $("#evnLongMsgCnt").val(); | |
| 1609 | + | |
| 1610 | + form.shortMsgCnt.value = evnShortMsgCnt; | |
| 1611 | + form.longMsgCnt.value = evnLongMsgCnt; | |
| 1612 | + form.nameList.value = evnName; | |
| 1613 | + form.rep1List.value = evnRep1; | |
| 1614 | + form.rep2List.value = evnRep2; | |
| 1615 | + form.rep3List.value = evnRep3; | |
| 1616 | + form.rep4List.value = evnRep4; | |
| 1617 | + | |
| 1618 | + }else if(txtReplYn == 'Y' && imgCnt > 0){//치환문자가 있는 경우 변수 정보 담아주기(그림문자인 경우) | |
| 1619 | + | |
| 1620 | + form.nameList.value = evnName; | |
| 1621 | + form.rep1List.value = evnRep1; | |
| 1622 | + form.rep2List.value = evnRep2; | |
| 1623 | + form.rep3List.value = evnRep3; | |
| 1624 | + form.rep4List.value = evnRep4; | |
| 1625 | + | |
| 1626 | + } | |
| 1627 | + | |
| 1628 | + //이벤트 발송 실행 해주기 | |
| 1629 | + var form = document.msgForm; | |
| 1630 | + | |
| 1631 | + var data = new FormData(form); | |
| 1632 | + url = "/web/mjon/msgdata/sendMsgDataAjax.do"; | |
| 1633 | + | |
| 1634 | + $.ajax({ | |
| 1635 | + type: "POST", | |
| 1636 | + url: url, | |
| 1637 | + data: data, | |
| 1638 | + dataType:'json', | |
| 1639 | + async: true, | |
| 1640 | + processData: false, | |
| 1641 | + contentType: false, | |
| 1642 | + cache: false, | |
| 1643 | + success: function (returnData, status) { | |
| 1644 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 1645 | + if("fail" == returnData.result){ | |
| 1646 | + | |
| 1647 | + alert(returnData.message); | |
| 1648 | + return false; | |
| 1649 | + | |
| 1650 | + }else if("loginFail" == returnData.result){ | |
| 1651 | + | |
| 1652 | + alert(returnData.message); | |
| 1653 | + return false; | |
| 1654 | + | |
| 1655 | + }else if("smsLengFail" == returnData.result){ | |
| 1656 | + | |
| 1657 | + alert(returnData.message); | |
| 1658 | + return false; | |
| 1659 | + | |
| 1660 | + }else if("imgSourceFail" == returnData.result){ | |
| 1661 | + | |
| 1662 | + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1663 | + $('.pop_msg_fails .msg_text').html(returnData.message); | |
| 1664 | + $('.mask').addClass('on'); | |
| 1665 | + | |
| 1666 | + }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리 | |
| 1667 | + | |
| 1668 | + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1669 | + $('.pop_msg_spam .msg_text').html(returnData.message); | |
| 1670 | + $('.mask').addClass('on'); | |
| 1671 | + | |
| 1672 | + }else if("statusFail" == returnData.result){ | |
| 1673 | + | |
| 1674 | + alert(returnData.message); | |
| 1675 | + //문자발송 URL Move | |
| 1676 | + goMsgUrlMove(); | |
| 1677 | + return false; | |
| 1678 | + | |
| 1679 | + }else{ | |
| 1680 | + | |
| 1681 | + var smsCnt = returnData.resultSts; | |
| 1682 | + var blockCnt = returnData.resultBlockSts; | |
| 1683 | + | |
| 1684 | + //이벤트 발송 처리가 완료 되면 나머지 일반 캐시로 발송할 문자 처리를 진행해 준다. | |
| 1685 | + var norPhoneNumCnt = norPhoneNum.length; | |
| 1686 | + if(norPhoneNumCnt > 0){ | |
| 1687 | + | |
| 1688 | + var norEachPrice = getNorEachPrice(evnMsgType); //일반 개별 단가 금액 셋팅해주기 | |
| 1689 | + | |
| 1690 | + form.callToList.value = norPhoneNum; //수신자번호 리스트 저장해주기 | |
| 1691 | + form.eachPrice.value = norEachPrice; //일반 개별 단가 금액 셋팅해주기 | |
| 1692 | + form.totPrice.value = norEachPrice * norPhoneNumCnt; //일반 단가 총 결제 금액 셋팅해주기 | |
| 1693 | + form.sPrice.value = $("#norsPrice").val(); | |
| 1694 | + form.mPrice.value = $("#normPrice").val(); | |
| 1695 | + form.pPrice.value = $("#norpPrice").val(); | |
| 1696 | + form.p2Price.value = $("#norp2Price").val(); | |
| 1697 | + form.p3Price.value = $("#norp3Price").val(); | |
| 1698 | + form.eventStatus.value = 'N'; | |
| 1699 | + form.eventYn.value = 'N'; | |
| 1700 | + | |
| 1701 | + var norTotPrice = parseFloat(form.totPrice.value); | |
| 1702 | + | |
| 1703 | + if(myPrice < norTotPrice){//보유캐시 부족시 알림 레이어 팝업 보여주기, 발송된 이벤트 건수 및 미발송 일반 방송 건수 정보 표시해줌 | |
| 1704 | + | |
| 1705 | + var failMsg = "이벤트 캐시 잔액으로 발송한 문자("+smsCnt+"건)의 발송이 완료되었으나 일반 문자 발송("+norPhoneNumCnt+"건)에 필요한 회원님의 보유 잔액이 부족 합니다."; | |
| 1706 | + | |
| 1707 | + $('.loading_layer').removeClass('active'); | |
| 1708 | + | |
| 1709 | + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1710 | + $('.pop_msg_fails .msg_text').html(failMsg); | |
| 1711 | + $('.mask').addClass('on'); | |
| 1712 | + | |
| 1713 | + return false; | |
| 1714 | + | |
| 1715 | + } | |
| 1716 | + | |
| 1717 | + //치환문자가 있는 경우 변수 정보 담아주기(그림문자가 아닌경우) | |
| 1718 | + if(txtReplYn == 'Y' && imgCnt < 1){ | |
| 1719 | + | |
| 1720 | + //치환문자 단/장문 혼용된 경우 각 타입별 건수를 재 계산해준다. | |
| 1721 | + //총 단/장문 각각 건수에서 이벤트로 발송한 건수를 빼준다. | |
| 1722 | + var evnShortMsgCnt = $("#evnShortMsgCnt").val(); | |
| 1723 | + var evnLongMsgCnt = $("#evnLongMsgCnt").val(); | |
| 1724 | + | |
| 1725 | + //일반 장문/단문 발송 건수 계산해주기 총 건수에서 이벤트로 발송해준 건수를 빼준다. | |
| 1726 | + var shortMsgCnt = Number(orgShortMsgCnt) - Number(evnShortMsgCnt); | |
| 1727 | + var longMsgCnt = Number(orgLongMsgCnt) - Number(evnLongMsgCnt); | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + //계산 값이 음수로 나오는 경우 0건으로 간주한다. | |
| 1731 | + if(shortMsgCnt <= 0){ | |
| 1732 | + | |
| 1733 | + shortMsgCnt = 0; | |
| 1734 | + | |
| 1735 | + } | |
| 1736 | + | |
| 1737 | + if(longMsgCnt <= 0){ | |
| 1738 | + | |
| 1739 | + longMsgCnt = 0; | |
| 1740 | + | |
| 1741 | + } | |
| 1742 | + | |
| 1743 | + form.shortMsgCnt.value = shortMsgCnt; | |
| 1744 | + form.longMsgCnt.value = longMsgCnt; | |
| 1745 | + | |
| 1746 | + form.nameList.value = norName; | |
| 1747 | + form.rep1List.value = norRep1; | |
| 1748 | + form.rep2List.value = norRep2; | |
| 1749 | + form.rep3List.value = norRep3; | |
| 1750 | + form.rep4List.value = norRep4; | |
| 1751 | + | |
| 1752 | + }else if(txtReplYn == 'Y' && imgCnt > 0){//치환문자가 있는 경우 변수 정보 담아주기(그림문자인 경우) | |
| 1753 | + | |
| 1754 | + form.nameList.value = norName; | |
| 1755 | + form.rep1List.value = norRep1; | |
| 1756 | + form.rep2List.value = norRep2; | |
| 1757 | + form.rep3List.value = norRep3; | |
| 1758 | + form.rep4List.value = norRep4; | |
| 1759 | + | |
| 1760 | + } | |
| 1761 | + | |
| 1762 | + sendMsgAjax(smsCnt, blockCnt); | |
| 1763 | + } | |
| 1764 | + | |
| 1765 | + } | |
| 1766 | + | |
| 1767 | + } else if(status== 'fail'){ | |
| 1768 | + alert(returnData.message); | |
| 1769 | + } | |
| 1770 | + }, | |
| 1771 | + beforeSend : function(xmlHttpRequest) { | |
| 1772 | + //로딩창 show | |
| 1773 | + $('.loading_layer').addClass('active'); | |
| 1774 | + }, | |
| 1775 | + complete : function(xhr, textStatus) { | |
| 1776 | + //로딩창 hide | |
| 1777 | + //$('.loading_layer').removeClass('active'); | |
| 1778 | + }, | |
| 1779 | + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 1780 | + }); | |
| 1781 | + | |
| 1782 | + }else{ | |
| 1783 | + | |
| 1784 | + //이벤트 건수로 발송 할 수 없는 경우 일반 캐시 단가로 발송처리하기 | |
| 1785 | + if(norPhoneNum.length > 0){ | |
| 1786 | + | |
| 1787 | + form.callToList.value = norPhoneNum; //수신자번호 리스트 저장해주기 | |
| 1788 | + form.eachPrice.value = getNorEachPrice(evnMsgType); //일반 개별 단가 금액 셋팅해주기 | |
| 1789 | + form.sPrice.value = $("#norsPrice").val(); | |
| 1790 | + form.mPrice.value = $("#normPrice").val(); | |
| 1791 | + form.pPrice.value = $("#norpPrice").val(); | |
| 1792 | + form.p2Price.value = $("#norp2Price").val(); | |
| 1793 | + form.p3Price.value = $("#norp3Price").val(); | |
| 1794 | + form.eventStatus.value = 'N'; | |
| 1795 | + form.eventYn.value = 'N'; | |
| 1796 | + | |
| 1797 | + sendMsgAjax(0,0); | |
| 1798 | + | |
| 1799 | + }else{ | |
| 1800 | + | |
| 1801 | + alert("문자 전송 중 오류가 발생하였습니다.!!"); | |
| 1802 | + return false; | |
| 1803 | + | |
| 1804 | + } | |
| 1805 | + | |
| 1806 | + } | |
| 1807 | + | |
| 1808 | + return false; | |
| 1809 | + }else{ | |
| 1810 | + | |
| 1811 | + return false; | |
| 1812 | + | |
| 1813 | + } | |
| 1814 | + | |
| 1815 | + }else{ | |
| 1816 | + | |
| 1817 | + //발송 Ajax 호출해주기 | |
| 1818 | + sendMsgAjax(0,0); | |
| 1819 | + | |
| 1820 | + } | |
| 1821 | + | |
| 1822 | + }else{ | |
| 1823 | + | |
| 1824 | + //발송 Ajax 호출해주기 | |
| 1825 | + sendMsgAjax(0,0); | |
| 1826 | + | |
| 1827 | + } | |
| 1828 | + | |
| 1829 | + } | |
| 1830 | + | |
| 1831 | +} | |
| 1832 | + | |
| 1833 | + | |
| 1834 | +//이벤트가 아닌 일반 개별 단가 셋팅해주기 | |
| 1835 | +function getNorEachPrice(evnMsgType){ | |
| 1836 | + | |
| 1837 | + var norEachPrice = 0; | |
| 1838 | + var evnImgCnt = $("#imgCnt").val(); | |
| 1839 | + | |
| 1840 | + //일반 단가로 변경해주기 | |
| 1841 | + if(evnMsgType == '4'){ | |
| 1842 | + | |
| 1843 | + norEachPrice = $("#norsPrice").val(); | |
| 1844 | + console.log("norEachPrice Short::: "+norEachPrice); | |
| 1845 | + | |
| 1846 | + }else if(evnMsgType == '6'){ | |
| 1847 | + | |
| 1848 | + if(evnImgCnt == 0){//장문 가격 | |
| 1849 | + | |
| 1850 | + norEachPrice = $("#normPrice").val(); | |
| 1851 | + console.log("norEachPrice Long ::: "+norEachPrice); | |
| 1852 | + | |
| 1853 | + }else if(evnImgCnt == 1){ | |
| 1854 | + | |
| 1855 | + norEachPrice = $("#norpPrice").val(); | |
| 1856 | + console.log("norEachPrice p1 ::: "+norEachPrice); | |
| 1857 | + | |
| 1858 | + }else if(evnImgCnt == 2){ | |
| 1859 | + | |
| 1860 | + norEachPrice = $("#norp2Price").val(); | |
| 1861 | + console.log("norEachPrice p2 ::: "+norEachPrice); | |
| 1862 | + | |
| 1863 | + }else if(evnImgCnt == 3){ | |
| 1864 | + | |
| 1865 | + norEachPrice = $("#norp3Price").val(); | |
| 1866 | + console.log("norEachPrice p3 ::: "+norEachPrice); | |
| 1867 | + | |
| 1868 | + } | |
| 1869 | + | |
| 1870 | + } | |
| 1871 | + | |
| 1872 | + return norEachPrice; | |
| 1873 | +} | |
| 1874 | + | |
| 1875 | + | |
| 1876 | +function sendMsgAjax(paramSmsCnt, paramBlockCnt){ | |
| 1877 | + | |
| 1878 | + var form = document.msgForm; | |
| 1879 | + var reserYn = $("#reserveYn").val(); | |
| 1880 | + | |
| 1881 | + var data = new FormData(form); | |
| 1882 | + url = "/web/mjon/msgdata/sendMsgDataAjax.do"; | |
| 1883 | + | |
| 1884 | + $.ajax({ | |
| 1885 | + type: "POST", | |
| 1886 | + url: url, | |
| 1887 | + data: data, | |
| 1888 | + dataType:'json', | |
| 1889 | + async: true, | |
| 1890 | + processData: false, | |
| 1891 | + contentType: false, | |
| 1892 | + cache: false, | |
| 1893 | + success: function (returnData, status) { | |
| 1894 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 1895 | + if("fail" == returnData.result){ | |
| 1896 | + | |
| 1897 | + alert(returnData.message); | |
| 1898 | + return false; | |
| 1899 | + | |
| 1900 | + }else if("loginFail" == returnData.result){ | |
| 1901 | + | |
| 1902 | + alert(returnData.message); | |
| 1903 | + return false; | |
| 1904 | + | |
| 1905 | + }else if("smsLengFail" == returnData.result){ | |
| 1906 | + | |
| 1907 | + alert(returnData.message); | |
| 1908 | + return false; | |
| 1909 | + | |
| 1910 | + }else if("imgSourceFail" == returnData.result){ | |
| 1911 | + | |
| 1912 | + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1913 | + $('.pop_msg_fails .msg_text').html(returnData.message); | |
| 1914 | + $('.mask').addClass('on'); | |
| 1915 | + | |
| 1916 | + }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리 | |
| 1917 | + | |
| 1918 | + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1919 | + $('.pop_msg_spam .msg_text').html(returnData.message); | |
| 1920 | + $('.mask').addClass('on'); | |
| 1921 | + | |
| 1922 | + }else if("statusFail" == returnData.result){ | |
| 1923 | + | |
| 1924 | + alert(returnData.message); | |
| 1925 | + //문자발송 URL Move | |
| 1926 | + goMsgUrlMove(); | |
| 1927 | + return false; | |
| 1928 | + | |
| 1929 | + }else{ | |
| 1930 | + | |
| 1931 | + var smsCnt = Number(returnData.resultSts); | |
| 1932 | + var blockCnt = Number(returnData.resultBlockSts); | |
| 1933 | + | |
| 1934 | + smsCnt = Number(smsCnt) + Number(paramSmsCnt); | |
| 1935 | + blockCnt = Number(blockCnt) + Number(paramBlockCnt); | |
| 1936 | + | |
| 1937 | + if((smsCnt + blockCnt) == 0){ | |
| 1938 | + | |
| 1939 | + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1940 | + $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.<br/> 다시 시도해주세요. <br/>* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지 <br/>또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); | |
| 1941 | + $('.mask').addClass('on'); | |
| 1942 | + | |
| 1943 | + }else{ | |
| 1944 | + | |
| 1945 | + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1946 | + //예약발송 건의 경우 결과 팝업 문구 변경 | |
| 1947 | + if(reserYn == 'Y'){ | |
| 1948 | + $('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 예약 되었습니다."); | |
| 1949 | + }else{ | |
| 1950 | + $('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 발송 되었습니다."); | |
| 1951 | + } | |
| 1952 | + | |
| 1953 | + $('.mask').addClass('on'); | |
| 1954 | + | |
| 1955 | + } | |
| 1956 | + | |
| 1957 | + } | |
| 1958 | + | |
| 1959 | + } else if(status== 'fail'){ | |
| 1960 | + alert(returnData.message); | |
| 1961 | + } | |
| 1962 | + }, | |
| 1963 | + beforeSend : function(xmlHttpRequest) { | |
| 1964 | + //로딩창 show | |
| 1965 | + $('.loading_layer').addClass('active'); | |
| 1966 | + }, | |
| 1967 | + complete : function(xhr, textStatus) { | |
| 1968 | + //로딩창 hide | |
| 1969 | + $('.loading_layer').removeClass('active'); | |
| 1970 | + }, | |
| 1971 | + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 1972 | + }); | |
| 1973 | + | |
| 1974 | +} | |
| 1975 | + | |
| 1976 | +function linkPage(pageNo){ | |
| 1977 | + fnLetterListAjax(pageNo); | |
| 1978 | +} | |
| 1979 | + | |
| 1980 | + | |
| 1981 | +function linkPhoPage(pageNo){ | |
| 1982 | + fnPhotoListAjax(pageNo); | |
| 1983 | +} | |
| 1984 | + | |
| 1985 | +function myMsgPage(pageNo){ | |
| 1986 | + fnMyMsgListAjax(pageNo); | |
| 1987 | +} | |
| 1988 | + | |
| 1989 | +function fnMyMsgCheckDelete(){ | |
| 1990 | + | |
| 1991 | + var msgId = []; | |
| 1992 | + if($("input:checkbox[name='myMsgDel']").is(":checked")==false){ | |
| 1993 | + alert("선택된 항목이 없습니다."); | |
| 1994 | + return; | |
| 1995 | + } | |
| 1996 | + | |
| 1997 | + $("input:checkbox[name='myMsgDel']:checked").each(function(index){ | |
| 1998 | + | |
| 1999 | + msgId[index] = $(this).val(); | |
| 2000 | + | |
| 2001 | + }); | |
| 2002 | + | |
| 2003 | + if(msgId.length > 0){ | |
| 2004 | + | |
| 2005 | + document.myMsgForm.msgIdList.value = msgId; | |
| 2006 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 2007 | + | |
| 2008 | + $("#myMsgLoad").load("/web/mjon/msgdata/deleteMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 2009 | + | |
| 2010 | + //문자 내용 스크롤 적용 | |
| 2011 | + /* $(".msg_cont").mCustomScrollbar({ | |
| 2012 | + axis: 'y', | |
| 2013 | + scrollbarPosition: "inside", | |
| 2014 | + theme: "dark", | |
| 2015 | + autoHideScrollbar: false | |
| 2016 | + }); */ | |
| 2017 | + | |
| 2018 | + }); | |
| 2019 | + | |
| 2020 | + }else{ | |
| 2021 | + | |
| 2022 | + alert("삭제할 문자를 선택해 주세요."); | |
| 2023 | + return false; | |
| 2024 | + | |
| 2025 | + } | |
| 2026 | + | |
| 2027 | +} | |
| 2028 | + | |
| 2029 | +//문자 샘플 2줄, 4줄 보기 기능 | |
| 2030 | +function fnLPageUnit(){ | |
| 2031 | + | |
| 2032 | + var form = document.letterForm; | |
| 2033 | + var pageUnit = form.LPageUnit.value; | |
| 2034 | + | |
| 2035 | + form.pageUnit.value = pageUnit; | |
| 2036 | + fnLetterListAjax(1); | |
| 2037 | + | |
| 2038 | +} | |
| 2039 | + | |
| 2040 | +//그림문자 샘플 2줄, 4줄 보기 기능 | |
| 2041 | +function fnPhPageUnit(){ | |
| 2042 | + | |
| 2043 | + var form = document.letterForm; | |
| 2044 | + var pageUnit = form.PhPageUnit.value; | |
| 2045 | + | |
| 2046 | + form.pageUnit.value = pageUnit; | |
| 2047 | + fnPhotoListAjax(1); | |
| 2048 | + | |
| 2049 | +} | |
| 2050 | + | |
| 2051 | +//내문자함 2줄 4줄보기 기능 | |
| 2052 | +function fnMsgPageUnit(){ | |
| 2053 | + | |
| 2054 | + var form = document.myMsgForm; | |
| 2055 | + var pageUnit = form.msgPageUnit.value; | |
| 2056 | + | |
| 2057 | + form.pageUnit.value = pageUnit; | |
| 2058 | + fnMyMsgListAjax(1); | |
| 2059 | + | |
| 2060 | +} | |
| 2061 | + | |
| 2062 | +function fnMyMsgSearchListOrd(){ | |
| 2063 | + | |
| 2064 | + var form = document.myMsgForm; | |
| 2065 | + var sortOrd = form.searchSortOrd.value; | |
| 2066 | + | |
| 2067 | + if(sortOrd == 'desc'){ | |
| 2068 | + | |
| 2069 | + form.searchSortOrd.value = 'asc'; | |
| 2070 | + $('#sortCnd').text('등록순'); | |
| 2071 | + | |
| 2072 | + }else{ | |
| 2073 | + | |
| 2074 | + form.searchSortOrd.value = 'desc'; | |
| 2075 | + $('#sortCnd').text('최근순'); | |
| 2076 | + | |
| 2077 | + } | |
| 2078 | + | |
| 2079 | + //내문자함 내용 검색하기 | |
| 2080 | + fnMyMsgSearchListAjax(1); | |
| 2081 | + | |
| 2082 | +} | |
| 2083 | + | |
| 2084 | +function msgSuccessClose(obj){ | |
| 2085 | + $(obj).closest('.pop_msg_success').attr('style',''); | |
| 2086 | + //문자발송 URL Move | |
| 2087 | + goMsgUrlMove(); | |
| 2088 | + $('html').scrollTop(0); | |
| 2089 | +} | |
| 2090 | + | |
| 2091 | +function msgFailsClose(obj){ | |
| 2092 | + $(obj).closest('.pop_msg_fails').attr('style',''); | |
| 2093 | +} | |
| 2094 | + | |
| 2095 | +function msgSpamClose(obj){ | |
| 2096 | + $(obj).closest('.pop_msg_spam').attr('style',''); | |
| 2097 | + //location.href="/web/uat/uia/actionLogout.do"; | |
| 2098 | +} | |
| 2099 | + | |
| 2100 | +function msgResultLink(){ | |
| 2101 | + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 | |
| 2102 | + if(reserYn == 'Y'){ | |
| 2103 | + | |
| 2104 | + location.href="/web/mjon/reservmsg/selectReservMsgView.do"; | |
| 2105 | + | |
| 2106 | + }else{ | |
| 2107 | + | |
| 2108 | + location.href="/web/mjon/msgsent/selectMsgSentView.do"; | |
| 2109 | + | |
| 2110 | + } | |
| 2111 | + | |
| 2112 | +} | |
| 2113 | + | |
| 2114 | +//START | |
| 2115 | +//맞춤제작 요청 JSPark => 2023.02.21 추가 | |
| 2116 | +//맞춤제작 등록 Popup | |
| 2117 | +function customPopup(){ | |
| 2118 | + $("#customPopup").load("/web/mjon/custom/selectMsgCustomPopupAjax.do", "" ,function(response, status, xhr){ | |
| 2119 | + popupImgList(1); | |
| 2120 | + }); | |
| 2121 | +} | |
| 2122 | + | |
| 2123 | +function openMsgCustomPopup() { | |
| 2124 | + if(loginVO == "" || loginVO == null){ | |
| 2125 | + alert("로그인 후 이용이 가능합니다."); | |
| 2126 | + return false; | |
| 2127 | + } else { | |
| 2128 | + $("#customPopupOpen").trigger("click"); | |
| 2129 | + } | |
| 2130 | + $("#customType04").hide(); | |
| 2131 | + popCustomScrT=$(window).scrollTop(); | |
| 2132 | + popScrTarget(); | |
| 2133 | +} | |
| 2134 | + | |
| 2135 | +$(window).on('load',function(){ | |
| 2136 | + setTimeout(function(){ | |
| 2137 | + popScrTarget(); | |
| 2138 | + },500); | |
| 2139 | +}); | |
| 2140 | + | |
| 2141 | +function popScrTarget(){ | |
| 2142 | + var closeTarget=$('.custom_layer .tooltip-close'); | |
| 2143 | + closeTarget.attr('onclick','popScrCloseSetting();'); | |
| 2144 | +} | |
| 2145 | + | |
| 2146 | +function popScrCloseSetting(){ | |
| 2147 | + setTimeout(function(){ | |
| 2148 | + $(window).scrollTop(popCustomScrT); | |
| 2149 | + },1); | |
| 2150 | +} | |
| 2151 | +//END | |
| 2152 | +</script> | |
| 2153 | + | |
| 2154 | + <div class="tooltip-wrap"> | |
| 2155 | + <!-- 문자발송 성공 레이어팝업 --> | |
| 2156 | + <div class="popup-com pop_msg_success"> | |
| 2157 | + <div class="popup_heading"> | |
| 2158 | + <p>문자 전송 결과</p> | |
| 2159 | + <button type="button" class="tooltip-close" onclick="msgSuccessClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 2160 | + </div> | |
| 2161 | + <div class="layer_in"> | |
| 2162 | + <div class="msg_text">발송 성공 : <strong>1</strong> 건,수신거부 : <span>0</span>건의<br>문자가 발송 되었습니다.</div> | |
| 2163 | + </div> | |
| 2164 | + <div class="popup_btn"> | |
| 2165 | + <button type="button" onclick="msgResultLink(); return false;">문자 발송결과 바로가기</button> | |
| 2166 | + <button type="button" class="tooltip-close" onclick="msgSuccessClose(this);">확인</button> | |
| 2167 | + </div> | |
| 2168 | + </div> | |
| 2169 | + </div> | |
| 2170 | + <div class="tooltip-wrap"> | |
| 2171 | + <!-- 문자발송 실패 레이어팝업 --> | |
| 2172 | + <div class="popup-com pop_msg_fails"> | |
| 2173 | + <div class="popup_heading"> | |
| 2174 | + <p>문자 전송 결과</p> | |
| 2175 | + <button type="button" class="tooltip-close" onclick="msgFailsClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 2176 | + </div> | |
| 2177 | + <div class="layer_in"> | |
| 2178 | + <div class="msg_text">발송 성공 : <strong>1</strong> 건,수신거부 : <span>0</span>건의<br>문자가 발송 되었습니다.</div> | |
| 2179 | + </div> | |
| 2180 | + <div class="popup_btn"> | |
| 2181 | + <button type="button" class="tooltip-close" onclick="msgFailsClose(this);">확인</button> | |
| 2182 | + </div> | |
| 2183 | + </div> | |
| 2184 | + </div> | |
| 2185 | + <div class="tooltip-wrap"> | |
| 2186 | + <!-- 문자발송 스팸 이용정지 레이어팝업 --> | |
| 2187 | + <div class="popup-com pop_msg_spam"> | |
| 2188 | + <div class="popup_heading"> | |
| 2189 | + <p>문자 전송 결과</p> | |
| 2190 | + <button type="button" class="tooltip-close" onclick="msgSpamClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 2191 | + </div> | |
| 2192 | + <div class="layer_in"> | |
| 2193 | + <div class="msg_text"></div> | |
| 2194 | + </div> | |
| 2195 | + <div class="popup_btn"> | |
| 2196 | + <button type="button" class="tooltip-close" onclick="msgSpamClose(this);">확인</button> | |
| 2197 | + </div> | |
| 2198 | + </div> | |
| 2199 | + </div> | |
| 2200 | + <div class="inner"> | |
| 2201 | + <!-- send top --> | |
| 2202 | + <div class="send_top"> | |
| 2203 | + <!-- tab button --> | |
| 2204 | + <ul class="tabType1"> | |
| 2205 | + <li class="tab active"><button type="button" onclick="TabType1(this,'1');">단문 · 장문 · 그림 문자</button></li> | |
| 2206 | + <li class="tab"> | |
| 2207 | + <!-- <button type="button" onclick="TabType1(this,'2');">대량 문자(엑셀·TXT)</button> --> | |
| 2208 | + <button type="button" onclick="javascript:fnMsgExcelDataView(); return false;">대량 문자(엑셀·TXT)</button> | |
| 2209 | + </li> | |
| 2210 | + </ul><!--// tab button --> | |
| 2211 | + <!-- tab content1 --> | |
| 2212 | + <!-- <span id="contentArea"></span> --> | |
| 2213 | + <div class="top_content current contentArea" id="tab1_1" style="min-height: 555px;"></div> | |
| 2214 | + | |
| 2215 | + <!-- tab content2 --> | |
| 2216 | + <!-- <span id="contentExcelArea"></span> --> | |
| 2217 | + <!-- <div class="top_content current get_excel contentExcelArea" id="tab1_2"></div> --> | |
| 2218 | + </div><!--// send top --> | |
| 2219 | + <!-- send bottom --> | |
| 2220 | + <div class="send_bottom"> | |
| 2221 | + <!-- tab button --> | |
| 2222 | + <ul class="tabType2 selectedTab" id="tabType2" name="tabType2"> | |
| 2223 | + <li class="tab active"> | |
| 2224 | + <button type="button" class="" onclick="TabType2(this,'1');">문자 샘플</button> | |
| 2225 | + </li> | |
| 2226 | + <li class="tab"> | |
| 2227 | + <button type="button" onclick="TabType2(this,'2');">그림문자 샘플</button> | |
| 2228 | + </li> | |
| 2229 | + <li class="tab"> | |
| 2230 | + <button type="button" onclick="TabType2(this,'3');">지도/약도 추가</button> | |
| 2231 | + </li> | |
| 2232 | + <li class="tab"> | |
| 2233 | + <button type="button" onclick="TabType2(this,'4');">내 문자함</button> | |
| 2234 | + </li> | |
| 2235 | + </ul> | |
| 2236 | + <!--// tab button --> | |
| 2237 | + <!-- tab content1 --> | |
| 2238 | + <form id="letterForm" name="letterForm" method="post"> | |
| 2239 | + <input type="hidden" id="letterType" name="letterType" value="<c:out value='${letterVO.letterType}'/>"/> | |
| 2240 | + <input type="hidden" id="memberType" name="memberType" value="<c:out value='${letterVO.memberType}'/>"/> | |
| 2241 | + <input type="hidden" id="categoryCode" name="categoryCode" value="<c:out value='${letterVO.categoryCode}'/>"/> | |
| 2242 | + <input type="hidden" id="hashTag" name="hashTag" value="<c:out value='${letterVO.hashTag}'/>"/> | |
| 2243 | + <input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value='${letterVO.pageIndex}' default='1' /> "/> | |
| 2244 | + <input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value='${letterVO.pageUnit}'/>"/> | |
| 2245 | + <input type="hidden" id="upperCateNo" name="upperCateNo" value=""/> | |
| 2246 | + | |
| 2247 | + <div class="search_sample"> | |
| 2248 | + <input type="text" id="searchKeyword" name="searchKeyword" value="<c:out value='${letterVO.searchKeyword}'/>" placeholder="문자샘플 검색하기" onfocus="this.placeholder=''" onblur="this.placeholder='문자샘플 검색하기'" maxlength="10"> | |
| 2249 | + <button class="btnSearchF"><img src="/publish/images/search02.png" alt=""></button> | |
| 2250 | + </div> | |
| 2251 | + <!-- tab content1 --> | |
| 2252 | + <div class="bottom_content current" id="tab2_1"> | |
| 2253 | + <div class="area_tabs"> | |
| 2254 | + <div class="top_tab"> | |
| 2255 | + <!-- <div class="tab_depth1 tDep1_mType"> | |
| 2256 | + <a href="#none" class="on" value="">전체</a> | |
| 2257 | + <a href="#none" value="B">기업</a> | |
| 2258 | + <a href="#none" value="P">개인</a> | |
| 2259 | + <div class="on_active">전체</div> | |
| 2260 | + </div> --> | |
| 2261 | + <div class="tab_depth2 tDep1_letType"> | |
| 2262 | + <a href="#none" class="on" value="S">단문문자</a> | |
| 2263 | + <a href="#none" value="L">장문문자</a> | |
| 2264 | + </div> | |
| 2265 | + <select name="LPageUnit" id="LPageUnit" class="selType2" onChange="fnLPageUnit(); return false;"> | |
| 2266 | + <option value="10">2줄보기</option> | |
| 2267 | + <option value="20">4줄보기</option> | |
| 2268 | + <option value="30">6줄보기</option> | |
| 2269 | + </select> | |
| 2270 | + <div class="customReq"> | |
| 2271 | + <%-- 맞춤제작 요청 JSPark => 2023.02.21 추가 --%> | |
| 2272 | + <%-- | |
| 2273 | + <input type="hidden" id="customPopupOpen" data-tooltip="popup01"> | |
| 2274 | + <button type="button" onclick="openMsgCustomPopup(); return false;"><i></i>맞춤제작 요청</button> | |
| 2275 | + --%> | |
| 2276 | + <button type="button" onClick="location.href='/web/mjon/custom/selectMsgCustomView.do'"><i></i>맞춤제작 요청</button> | |
| 2277 | + </div> | |
| 2278 | + </div> | |
| 2279 | + <div class="bottom_tab"> | |
| 2280 | + <div class="tab_depth3 tDep1_cateCode"> | |
| 2281 | + <a href="#none" class="on cateAll" value="">All</a> | |
| 2282 | + <a href="#none" value="best">BEST</a> | |
| 2283 | + <c:forEach var="cateList" items="${cateCodeList}" varStatus="status"> | |
| 2284 | + <a href="#none" value="<c:out value='${cateList.cateCode}'/>"><c:out value="${cateList.cateNm}"/></a> | |
| 2285 | + </c:forEach> | |
| 2286 | + </div> | |
| 2287 | + <div class="tab_depth4 tDep1_threeCateCode" id="tDep1_depThrCateCode"> <!-- 해쉬태그 삭제 및 하위 카테고리 추가로 인해 class="tDep1_hashTag" 삭제 --> | |
| 2288 | + <!-- 하위 카테고리(3뎁스)로 대체 --> | |
| 2289 | + <%-- <a href="#none" class="on hashAll" value="">전체</a> | |
| 2290 | + <c:forEach var="hashList" items="${hashTagList}" varStatus="status"> | |
| 2291 | + <a href="#none" value="${hashList.hashNm}">#<c:out value="${hashList.hashNm}"/></a> | |
| 2292 | + </c:forEach> --%> | |
| 2293 | + </div> | |
| 2294 | + </div> | |
| 2295 | + </div> | |
| 2296 | + <div id="letterLoad"> | |
| 2297 | + </div> | |
| 2298 | + </div><!--// tab content1 --> | |
| 2299 | + <!--// tab content2 --> | |
| 2300 | + <div class="bottom_content" id="tab2_2"> | |
| 2301 | + <div class="area_tabs"> | |
| 2302 | + <div class="top_tab"> | |
| 2303 | + <!-- <div class="tab_depth1 tDep2_mType"> | |
| 2304 | + <a href="#none" class="on" value="">전체</a> | |
| 2305 | + <a href="#none" value="B">기업</a> | |
| 2306 | + <a href="#none" class="on" value="P">개인</a> | |
| 2307 | + <div class="on_active">전체</div> | |
| 2308 | + </div> --> | |
| 2309 | + <div class="tab_depth2 tDep2_letType"> | |
| 2310 | + <a href="#none" class="on" value="P">그림문자</a> | |
| 2311 | + </div> | |
| 2312 | + <select name="PhPageUnit" id="PhPageUnit" class="selType2" onChange="fnPhPageUnit(); return false;"> | |
| 2313 | + <option value="10">2줄보기</option> | |
| 2314 | + <option value="20">4줄보기</option> | |
| 2315 | + <option value="30">6줄보기</option> | |
| 2316 | + </select> | |
| 2317 | + <div class="customReq"> | |
| 2318 | + <%-- 맞춤제작 요청 JSPark => 2023.02.21 추가 --%> | |
| 2319 | + <%-- | |
| 2320 | + <input type="hidden" id="customPopupOpen" data-tooltip="popup01"> | |
| 2321 | + <button type="button" onclick="openMsgCustomPopup(); return false;"><i></i>맞춤제작 요청</button> | |
| 2322 | + --%> | |
| 2323 | + <button type="button" onClick="location.href='/web/mjon/custom/selectMsgCustomView.do'"><i></i>맞춤제작 요청</button> | |
| 2324 | + </div> | |
| 2325 | + </div> | |
| 2326 | + <div class="bottom_tab"> | |
| 2327 | + <div class="tab_depth3 tDep2_cateCode"> | |
| 2328 | + <a href="#none" class="on cateAll" value="">All</a> | |
| 2329 | + <a href="#none" value="best">BEST</a> | |
| 2330 | + <c:forEach var="cateList" items="${cateCodeList}" varStatus="status"> | |
| 2331 | + <a href="#none" value="<c:out value='${cateList.cateCode}'/>"><c:out value="${cateList.cateNm}"/></a> | |
| 2332 | + </c:forEach> | |
| 2333 | + </div> | |
| 2334 | + <div class="tab_depth4 tDep2_threeCateCode" id="tDep2_depThrCateCode"><!-- 해쉬태그 삭제 및 하위 카테고리 추가로 인해 class="tDep2_hashTag" 삭제 --> | |
| 2335 | + <!-- 하위 카테고리(3뎁스)로 대체 --> | |
| 2336 | + <%-- <a href="#none" class="on hashAll" value="">전체</a> | |
| 2337 | + <c:forEach var="hashList" items="${hashTagList}" varStatus="status"> | |
| 2338 | + <a href="#none" value="${hashList.hashNm}">#<c:out value="${hashList.hashNm}"/></a> | |
| 2339 | + </c:forEach> --%> | |
| 2340 | + </div> | |
| 2341 | + </div> | |
| 2342 | + </div> | |
| 2343 | + <div id="photoLoad"> | |
| 2344 | + </div> | |
| 2345 | + <!-- pagination --> | |
| 2346 | + </div><!--// tab content2 --> | |
| 2347 | + </form> | |
| 2348 | + | |
| 2349 | + <!--tab content3 --> | |
| 2350 | + <div class="bottom_content" id="tab2_3"> | |
| 2351 | + <div class="map_search"> | |
| 2352 | + <label for="" class="label"></label> | |
| 2353 | + <div class="mapWrap"> | |
| 2354 | + <script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script> | |
| 2355 | + <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=7fc7b80a3e32ac964da92f6aa3d6000d&libraries=services"></script> | |
| 2356 | + <input type="text" id="sample5_address" placeholder="도로명 또는 지번을 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='도로명 또는 지번을 입력해주세요.'"> | |
| 2357 | + <button type="button" class="btnType map_check" onclick="sample5_execDaumPostcode()">확인</button> | |
| 2358 | + <button type="button" class="btnType map_add" onclick="insertajax();">약도링크 추가</button> | |
| 2359 | + <p><span class="vMiddle">*</span> 지도링크는 입력메시지 끝부분에 추가됩니다.</p> | |
| 2360 | + <div id="map" style="width:100%;height:450px; margin-top: 10px;"> </div> | |
| 2361 | + | |
| 2362 | + <div class="mapInfo"> | |
| 2363 | + </div> | |
| 2364 | + </div> | |
| 2365 | + </div> | |
| 2366 | + <script> | |
| 2367 | + var mapContainer = document.getElementById('map'), // 지도를 표시할 div | |
| 2368 | + mapOption = { | |
| 2369 | + center: new daum.maps.LatLng(37.613898152040385, 127.15319231152851), // 지도의 중심좌표 | |
| 2370 | + level: 5 // 지도의 확대 레벨 | |
| 2371 | + }; | |
| 2372 | + | |
| 2373 | + //지도를 미리 생성 | |
| 2374 | + var map = new daum.maps.Map(mapContainer, mapOption); | |
| 2375 | + //주소-좌표 변환 객체를 생성 | |
| 2376 | + var geocoder = new daum.maps.services.Geocoder(); | |
| 2377 | + //마커를 미리 생성 | |
| 2378 | + var marker = new daum.maps.Marker({ | |
| 2379 | + position: new daum.maps.LatLng(37.613898152040385, 127.15319231152851), | |
| 2380 | + map: map | |
| 2381 | + }); | |
| 2382 | + var testcoords = new daum.maps.LatLng(37.613898152040385, 127.15319231152851); | |
| 2383 | + setTimeout(function(){ | |
| 2384 | + map.relayout(); | |
| 2385 | + map.setCenter(testcoords); | |
| 2386 | + }, 5000); | |
| 2387 | + | |
| 2388 | + //lat 위도 lng 경도 | |
| 2389 | + var paramLat; | |
| 2390 | + var paramLng; | |
| 2391 | + | |
| 2392 | + function sample5_execDaumPostcode() { | |
| 2393 | + new daum.Postcode({ | |
| 2394 | + oncomplete: function(data) { | |
| 2395 | + var addr = data.address; // 최종 주소 변수 | |
| 2396 | + | |
| 2397 | + // 주소 정보를 해당 필드에 넣는다. | |
| 2398 | + document.getElementById("sample5_address").value = addr; | |
| 2399 | + // 주소로 상세 정보를 검색 | |
| 2400 | + geocoder.addressSearch(data.address, function(results, status) { | |
| 2401 | + // 정상적으로 검색이 완료됐으면 | |
| 2402 | + if (status === daum.maps.services.Status.OK) { | |
| 2403 | + | |
| 2404 | + var result = results[0]; //첫번째 결과의 값을 활용 | |
| 2405 | + | |
| 2406 | + // 해당 주소에 대한 좌표를 받아서 | |
| 2407 | + var coords = new daum.maps.LatLng(result.y, result.x); | |
| 2408 | + // 지도를 보여준다. | |
| 2409 | + mapContainer.style.display = "block"; | |
| 2410 | + map.relayout(); | |
| 2411 | + // 지도 중심을 변경한다. | |
| 2412 | + map.setCenter(coords); | |
| 2413 | + // 마커를 결과값으로 받은 위치로 옮긴다. | |
| 2414 | + marker.setPosition(coords) | |
| 2415 | + paramLat = result.y; | |
| 2416 | + paramLng = result.x; | |
| 2417 | + | |
| 2418 | + } | |
| 2419 | + }); | |
| 2420 | + } | |
| 2421 | + }).open({ | |
| 2422 | + q: document.getElementById("sample5_address").value | |
| 2423 | + }); | |
| 2424 | + } | |
| 2425 | + | |
| 2426 | + function insertajax(){ | |
| 2427 | + if(typeof paramLat == 'undefined' ||typeof paramLng == 'undifined'){ | |
| 2428 | + alert("주소를 검색해 주세요."); | |
| 2429 | + return; | |
| 2430 | + } | |
| 2431 | + var mapInsertConfirm = confirm('약도를 추가하시겠습니까?'); | |
| 2432 | + | |
| 2433 | + if(mapInsertConfirm){ | |
| 2434 | + $.ajax({ | |
| 2435 | + cache : false, | |
| 2436 | + url : "<c:url value='/MapUrlInsertAjax.do'/>", | |
| 2437 | + type : 'POST', | |
| 2438 | + data : { | |
| 2439 | + "mapLat" : paramLat, | |
| 2440 | + "mapLng" : paramLng | |
| 2441 | + }, | |
| 2442 | + dataType:'json', | |
| 2443 | + success : function(returnData, status){ | |
| 2444 | + if(status == "success") { | |
| 2445 | + if (returnData.url != 0) { | |
| 2446 | + var smsTxttmp = $('#smsTxtArea').val(); | |
| 2447 | + | |
| 2448 | + /* document.getElementById("testarea").value = returnData.url + "/MapUrl.do?seq=" + returnData.seq; */ | |
| 2449 | + $('#smsTxtArea').val(smsTxttmp+returnData.url + "/MapUrl.do?seq=" + returnData.seq); | |
| 2450 | + | |
| 2451 | + smsTxttmp = $('#smsTxtArea').val(); | |
| 2452 | + | |
| 2453 | + fnByteString(smsTxttmp); | |
| 2454 | + } | |
| 2455 | + }else{ alert("ERROR!");return;} | |
| 2456 | + }, | |
| 2457 | + | |
| 2458 | + error : function(request , status, error){ | |
| 2459 | + alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); | |
| 2460 | + | |
| 2461 | + } | |
| 2462 | + }); | |
| 2463 | + } | |
| 2464 | + else{ | |
| 2465 | + alert("취소되었습니다."); | |
| 2466 | + } | |
| 2467 | + } | |
| 2468 | + </script> | |
| 2469 | + </div><!--// tab content3 --> | |
| 2470 | + <!-- tab content4 --> | |
| 2471 | + <form id="myMsgForm" name="myMsgForm" method="post"> | |
| 2472 | + <input name="pageIndex" type="hidden" value="1"/> | |
| 2473 | + <input name="msgIdList" type="hidden" value=""/> | |
| 2474 | + <input name="pageUnit" type="hidden" value=""/> | |
| 2475 | + <input name="searchSortOrd" type="hidden" value="desc"/> | |
| 2476 | + | |
| 2477 | + <div class="bottom_content" id="tab2_4"> | |
| 2478 | + <div class="search_wrap clearfix"> | |
| 2479 | + <div class="btn_left"> | |
| 2480 | + <span>· 기간</span> | |
| 2481 | + <div class="calendar_wrap"> | |
| 2482 | + <input type="text" class="startDate inp calendar" title="검색 시작일" id="startDate" name="myMsgStDt" value="" data-datecontrol="true"> | |
| 2483 | + <span class="dateEtc">~</span> | |
| 2484 | + <input type="text" class="endDate inp calendar" title="검색 종료일" id="endDate" name="myMsgEndDt" value="" data-datecontrol="true"> | |
| 2485 | + </div> | |
| 2486 | + <div class="search"> | |
| 2487 | + <label for="searchWord" class="label"></label> | |
| 2488 | + <input type="text" id="searchWord" name="searchKeyword" placeholder="내 문자함 검색" onfocus="this.placeholder=''" onblur="this.placeholder='내보관함 검색'" maxlength="10"> | |
| 2489 | + <button type="button" class="btnType btnType2" onclick="javascript:fnMyMsgSearchListAjax(1); return false;">검색</button> | |
| 2490 | + </div> | |
| 2491 | + </div> | |
| 2492 | + <div class="btn_right"> | |
| 2493 | + <button type="button" id="sortOrd" name="sortOrd" onClick="javascript:fnMyMsgSearchListOrd(); return false;"><span id="sortCnd">최근순</span><i></i></button> | |
| 2494 | + <select name="msgType" id="msgType1" class="selType2" onChange="fnMyMsgSearchListAjax(1); return false;"> | |
| 2495 | + <option value="">전체보기</option> | |
| 2496 | + <option value="S">단문문자</option> | |
| 2497 | + <option value="L">장문문자</option> | |
| 2498 | + <option value="P">그림문자</option> | |
| 2499 | + </select> | |
| 2500 | + <select name="msgPageUnit" id="msgPageUnit" class="selType2" onChange="fnMsgPageUnit(); return false;"> | |
| 2501 | + <option value="10">2줄보기</option> | |
| 2502 | + <option value="20">4줄보기</option> | |
| 2503 | + <option value="30">6줄보기</option> | |
| 2504 | + </select> | |
| 2505 | + </div> | |
| 2506 | + </div> | |
| 2507 | + <div id="myMsgLoad"> | |
| 2508 | + </div> | |
| 2509 | + </div><!--// tab content4 --> | |
| 2510 | + </form> | |
| 2511 | + </div><!-- inner close --> | |
| 2512 | + | |
| 2513 | + <!-- 맞춤제작 요청 레이어 팝업 --> | |
| 2514 | + <div class="tooltip-wrap" id="customPopup"> | |
| 2515 | + </div> | |
| 2516 | + <!--// 맞춤제작 요청 레이어 팝업 --> | |
| 2517 | +</div> | |
| 2518 | +<form id="msgResendForm" name="msgResendForm" method="post"> | |
| 2519 | + <input name="msgResendFlag" type="hidden" value="N"/> | |
| 2520 | + <input name="msgSeqList" type="hidden" value=""/> | |
| 2521 | +</form> | |
| 2522 | +<form id="moveAddrForm" name="moveAddrForm" method="post"> | |
| 2523 | + <input name="moveAddrFlag" type="hidden" value="N"/> | |
| 2524 | + <input name="addrIdList" type="hidden" value=""/> | |
| 2525 | +</form> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?