• Y
  • List All
  • Feedback
    • This Project
    • All Projects
Profile Account settings Log out
  • Favorite
  • Project
  • All
Loading...
  • Log in
  • Sign up
chominsoo4245 / mjon_git star
Forked from hylee / mjon_git
  • Project homeH
  • CodeC
  • IssueI
  • Pull requestP
  • Review R
  • MilestoneM
  • BoardB
  • Files
  • Commit
  • Branches
mjon_gitsrcmainwebappWEB-INFjspwebmsgdataMsgDataSMLView.jsp
Download as .zip file
File name
Commit message
Commit date
DATABASE
mjon_git
2023-06-12
src/main
요금안내/견적내기 단가표시 수정
2023-06-15
.codetogether.ignore
mjon_git
2023-06-12
.gitignore
gitignore 적용
2023-06-12
pom.xml
mjon_git
2023-06-12
File name
Commit message
Commit date
java
요금안내/견적내기 단가표시 수정
2023-06-15
resources
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
2023-06-14
webapp
팩스전송 NEW 아이콘 제거
2023-06-15
File name
Commit message
Commit date
META-INF
mjon_git
2023-06-12
MMS
mjon_git
2023-06-12
WEB-INF
팩스전송 NEW 아이콘 제거
2023-06-15
common
mjon_git
2023-06-12
crosseditor/binary/images
mjon_git
2023-06-12
css
mjon_git
2023-06-12
direct
mjon_git
2023-06-12
dist
mjon_git
2023-06-12
download
mjon_git
2023-06-12
font-flexslider
mjon_git
2023-06-12
fonts
mjon_git
2023-06-12
html
mjon_git
2023-06-12
images
mjon_git
2023-06-12
img
mjon_git
2023-06-12
js
알림톡 템플릿 이모지 체크
2023-06-15
mail
mjon_git
2023-06-12
mjon/MMS
mjon_git
2023-06-12
pb
2023/06/14 관리자 회원관리 > 회원정보 B마크 추가
2023-06-14
publish
2023/06/15 메인 하단 배너 선 두께 수정
2023-06-15
sample_mjon
api key 수정
2023-06-15
site
mjon_git
2023-06-12
google53cfb10eb3856530.html
mjon_git
2023-06-12
googlefa7d697b23d4a34a.html
mjon_git
2023-06-12
imageEditorSample.html
mjon_git
2023-06-12
imageEditorSample2.html
mjon_git
2023-06-12
index.jsp
mjon_git
2023-06-12
naver94c82af5badbae52b1e46e77b88410c9.html
mjon_git
2023-06-12
robots.txt
mjon_git
2023-06-12
sendRESTAPI_test_r1_send.jsp
mjon_git
2023-06-12
sitemap.xml
mjon_git
2023-06-12
tempPayPrint.html
mjon_git
2023-06-12
tempPrint.html
mjon_git
2023-06-12
tempPrint1.html
mjon_git
2023-06-12
test.jsp
커밋 테스트
2023-06-12
File name
Commit message
Commit date
META-INF
mjon_git
2023-06-12
config/egovframework/springmvc
mjon_git
2023-06-12
jsp
팩스전송 NEW 아이콘 제거
2023-06-15
lib
mjon_git
2023-06-12
tld
mjon_git
2023-06-12
decorators.xml
feat:API 설명 페이지 진행중 (+분기처리 완료)
2023-06-13
jeus-web-dd.xml
mjon_git
2023-06-12
sitemesh.xml
mjon_git
2023-06-12
web.xml
mjon_git
2023-06-12
weblogic.xml
mjon_git
2023-06-12
File name
Commit message
Commit date
agent
mjon_git
2023-06-12
block
mjon_git
2023-06-12
cmm
관리자 회원목록 JJ B라인 아이콘 추가
2023-06-14
cnt
mjon_git
2023-06-12
cntsource
mjon_git
2023-06-12
com/utl/wed
mjon_git
2023-06-12
cop
mjon_git
2023-06-12
egovframework/com/uss/ion/bnr
mjon_git
2023-06-12
kisa/kisa
mjon_git
2023-06-12
kopost/search
mjon_git
2023-06-12
layout
주소록 대량등록 성능개선(브라우저 응답없음 창 노출안되도록 로딩바 처리)
2023-06-14
letter
mjon_git
2023-06-12
main
mjon_git
2023-06-12
sec
mjon_git
2023-06-12
sts/cst
mjon_git
2023-06-12
sym
mjon_git
2023-06-12
uat
mjon_git
2023-06-12
uss
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
2023-06-14
web
팩스전송 NEW 아이콘 제거
2023-06-15
blank.jsp
mjon_git
2023-06-12
cntCNT_000000000862.jsp
mjon_git
2023-06-12
File name
Commit message
Commit date
addr
주소록 대량등록 성능개선(브라우저 응답없음 창 노출안되도록 로딩바 처리)
2023-06-14
addrBlock
mjon_git
2023-06-12
addragency
mjon_git
2023-06-12
com
팩스전송 NEW 아이콘 제거
2023-06-15
cop
mjon_git
2023-06-12
custom
mjon_git
2023-06-12
event
mjon_git
2023-06-12
fax
팩스전송화면 비로그인시 오픈처리
2023-06-15
kakao
알림톡 템플릿 이모지 체크
2023-06-15
login
회원가입 대표자명 MaxLength 변경
2023-06-15
main
2023/06/14 메인비주얼 순서 변경
2023-06-14
member
mjon_git
2023-06-12
msg
mjon_git
2023-06-12
msgcampain
mjon_git
2023-06-12
msgdata
mjon_git
2023-06-12
msgsent
mjon_git
2023-06-12
pay
feat:API 설명 페이지 진행중 (+분기처리 완료)
2023-06-13
pop
mjon_git
2023-06-12
reservedmsg
mjon_git
2023-06-12
sample
mjon_git
2023-06-12
search
mjon_git
2023-06-12
survey
mjon_git
2023-06-12
user
Merge branch 'hylee'
2023-06-15
rejectTest.jsp
mjon_git
2023-06-12
File name
Commit message
Commit date
addr
mjon_git
2023-06-12
excel
mjon_git
2023-06-12
BestMsgDataListAjax.jsp
mjon_git
2023-06-12
BestPhotoMsgDataListAjax.jsp
mjon_git
2023-06-12
CateThrDptListAjax.jsp
mjon_git
2023-06-12
ExcelCallAjax.jsp
mjon_git
2023-06-12
LetterListAjax.jsp
mjon_git
2023-06-12
MainLetterListAjax.jsp
mjon_git
2023-06-12
MainPhotoListAjax.jsp
mjon_git
2023-06-12
MsgBookMarkListAjax.jsp
mjon_git
2023-06-12
MsgDataBestView.jsp
mjon_git
2023-06-12
MsgDataExcelView.jsp
mjon_git
2023-06-12
MsgDataSMLView.jsp
mjon_git
2023-06-12
MsgDataSMLView_back.jsp
mjon_git
2023-06-12
MsgDataSMLView_back_20210608.jsp
mjon_git
2023-06-12
MsgDataSMLView_kerinet2.jsp
mjon_git
2023-06-12
MsgDataView.jsp
mjon_git
2023-06-12
MsgDataView_Back.jsp
mjon_git
2023-06-12
MsgLatestListAjax.jsp
mjon_git
2023-06-12
MyMsgListAjax.jsp
mjon_git
2023-06-12
PhotoListAjax.jsp
mjon_git
2023-06-12
imageEditorPopup.jsp
mjon_git
2023-06-12
hylee 2023-06-12 6269282 mjon_git UNIX
Raw Open in browser Change history
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script> <script type="text/javascript" src="<c:url value='/js/txtSpecialReplace.js?date=202304250003'/>"></script> <% pageContext.setAttribute("newLineChar", "\r\n"); %> <script type="text/javascript"> var tableErrorData = []; var totRows = 0; // 좌측 받는사람 총 갯수 /* 파일등록 */ var _fileIdx = 0; var _fileForm2 = new Array(); var fileExt = ""; // 첨부파일 확장자 var excelAddr = []; //엑셀 불러오기에서 내용 저장하는 배열 변수 //전체 데이터 갯수 구하는 함수 function updateTotCnt(data){ var rowTotCnt = data; $("#rowTotCnt").text(rowTotCnt); } //주소록 불러오기에서 수신자 리스트 tabulator에 데이터 추가해주기 function addPhoneInfo(data){ if(data == null){ alert("연락처 정보가 없습니다."); return; }else{ var idx = 0; var newData = data;//중복 연락처는 하나만 남기고 모두 제거 var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 var tableData = []; //기존 받는사람 리스트를 배열에 미리 담아둔다. if(recTableData.length > 0){ for(var j=0; j < recTableData.length; j++){ tableData.push({phone: removeDash(recTableData[j].getData().phone) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4}); } } //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. for(var i=0; i < newData.length; i++){ tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4}); } var temp = tableData.length; //기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다. tableL.clearData(); //기존 받는사람 목록을 삭제. tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 _fileForm2 = []; //form file data 초기화 _fileIdx = 0; //form file idx 초기화 totRows = tableL.getRows().length; updateTotCnt(totRows); //전체 데이터 갯수 구하기 var smsTxtArea = $('#smsTxtArea').val(); //일괄변환 문구 결제금액 처리 if(smsTxtArea.indexOf("[*이름*]") > -1 || smsTxtArea.indexOf("[*1*]") > -1 || smsTxtArea.indexOf("[*2*]") > -1 || smsTxtArea.indexOf("[*3*]") > -1 || smsTxtArea.indexOf("[*4*]") > -1){ fnReplCell(); }else{ //결제 금액 구하기 totalPriceSum(totRows); } } } /* 파일사이즈 가져오기 */ function getStrFileSize(filesize){ var sizeStr=""; var sizeKB = filesize/1024; if(parseInt(sizeKB) > 1024){ var sizeMB = sizeKB/1024; sizeStr = sizeMB.toFixed(2)+" MB"; }else{ sizeStr = sizeKB.toFixed(2)+" KB"; } return sizeStr; } // 엑셀 파일 불러오기 function excelExport(event){ var data = new FormData(document.excelForm); data.append("file0", $('#excelFile').prop('files')[0]); var fileValue = $("#excelFile").val().split("\\"); var fileName = fileValue[fileValue.length-1]; var fileExt = fileName.split('.').pop().toLowerCase(); if(fileExt.length > 0){ if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) { alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); return false; } var url = ""; if(fileExt == "xls" || fileExt == "xlsx"){ url = "/web/mjon/msgdata/sendExelFilePhoneNumAjax.do"; }else if(fileExt = "txt"){ url = "/web/mjon/msgdata/sendTxtFilePhoneNumAjax.do"; }else{ alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); return; } //엑셀 데이터 변수에 자료가 있으면 지워준다. if(excelAddr.length > 0){ excelAddr = []; } $.ajax({ type: "POST", enctype: 'multipart/form-data', url: url, data: data, dataType:'json', async: true, processData: false, contentType: false, cache: false, //timeout: 600000, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if(returnData.success){ var data = returnData.data; var message = returnData.message; if(message != '' ){ alert(returnData.message); } if(data != null){ $.each(data, function(i, item){ if(checkHpNum(item.phone)){ excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4}); }/* else{ alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다."); excelAddr = []; //엑셀 데이터 저장 변수 초기화 $("#excelFile").val(""); //첨부파일 input 초기화 $("#excelNm").val(""); // 첨부파일 명 초기화 fileName = ""; return; } */ }); } }else{ alert(returnData.message); // alert("첨부파일 불러오는 중 오류가 발생하였습니다."); excelAddr = []; //엑셀 데이터 저장 변수 초기화 $("#excelFile").val(""); //첨부파일 input 초기화 $("#excelNm").val(""); // 첨부파일 명 초기화 fileName = ""; return; } } else if(status== 'fail'){ alert("첨부파일 불러오는 중 오류가 발생하였습니다."); console.log("status : fail ~"); } }, error: function (e) { alert("첨부파일 불러오는 중 오류가 발생하였습니다."); console.log("ERROR : ", e); }, beforeSend : function(xmlHttpRequest) { //로딩창 show $('.loading_layer').addClass('active'); }, complete : function(xhr, textStatus) { //로딩창 hide $('.loading_layer').removeClass('active'); } }); $("#excelFile").val(""); $("#excelNm").val(fileName); } } //엑셀 불러오기 팝업의 추가 버튼 처리 $("#excelAdd").click(function(){ if(excelAddr.length > 0){ //첨부파일로 불러온 데이터를 받는사람 목록에 추가해 준다. addPhoneInfo(excelAddr); //첨부파일 초기화 시켜주기 $("#excelFile").val(""); $("#excelNm").val(""); }else{ alert("추가 엑셀 데이터가 없습니다."); return false; } }); //첨부 이미지 정보 확인 처리 해주기(이미지 리사이징 전단계) function imgResizeInfo(event){ var fileValue = $("#imgFile").val().split("\\"); var fileName = fileValue[fileValue.length-1]; var fileExt = fileName.split('.').pop().toLowerCase(); if(fileExt.length > 0){ if($.inArray(fileExt, ['jpg','jpeg']) == -1) { alert('jpg, jpeg 파일만 업로드 할수 있습니다.'); return false; } $("#imgNm").val(fileName); } } //첨부 이미지 파일 리사이징 처리 해주기 function imgExport(event){ var loginVO = '${LoginVO}'; if(loginVO == "" || loginVO == null){ alert("문자전송 그림 이미지 등록은 로그인 후 이용 가능합니다."); return false; } var data = new FormData(document.imgForm); data.append("file0", $('#imgFile').prop('files')[0]); var fileValue = $("#imgFile").val().split("\\"); var fileName = fileValue[fileValue.length-1]; var fileExt = fileName.split('.').pop().toLowerCase(); if(fileExt.length > 0){ if($.inArray(fileExt, ['jpg','jpeg']) == -1) { alert('jpg, jpeg 파일만 업로드 할수 있습니다.'); return false; } var url = ""; if(fileExt == "jpg" || fileExt == "jpeg"){ url = "/web/mjon/msgdata/insertAtchImageResizeAjax.do"; }else{ alert('jpg, jpeg 파일만 업로드 할수 있습니다.'); return; } $.ajax({ type: "POST", enctype: 'multipart/form-data', url: url, data: data, dataType:'json', async: true, processData: false, contentType: false, cache: false, //timeout: 600000, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 var data = returnData.data; var message = returnData.message; var result = returnData.result; if(result == "success"){ var fullPath = returnData.filefullPath; var fileName = returnData.fileName; var atchFileId = returnData.atchFileId; var imgSrc = returnData.imgSrc; var imgCnt = $("#imgCnt").val(); //현재 문자내용에 첨부된 이미지 갯수 체크 if(imgCnt >= 3){ alert("이미지는 3장만 선택할 수 있습니다."); return false; } //내문서함 이미지 불러오는 방식과 동일하여 함수 호출 처리함. myMsgImageControl(imgSrc, "edit_n", fileName, atchFileId); var contents = $('#smsTxtArea').val(); //(contents); totRows = tableL.getRows().length; updateTotCnt(totRows); //전체 데이터 갯수 구하기 //일괄변환 문구 결제금액 처리 if(contents.indexOf("[*이름*]") > -1 || contents.indexOf("[*1*]") > -1 || contents.indexOf("[*2*]") > -1 || contents.indexOf("[*3*]") > -1 || contents.indexOf("[*4*]") > -1){ fnReplCell(); }else{ //결제금액 표시해주기 var totalPrice = totalPriceSum(totRows); $('#totalPrice').text(totalPrice); $('#txtReplYn').val("N"); } alert(message); }else if(result == "fail"){ alert(message); return false; } } else if(status== 'fail'){ alert("첨부파일 불러오는 중 오류가 발생하였습니다."); console.log("status : fail ~"); } }, error: function (e) { alert("첨부파일 불러오는 중 오류가 발생하였습니다."); console.log("ERROR : ", e); }, beforeSend : function(xmlHttpRequest) { //로딩창 show $('.loading_layer').addClass('active'); }, complete : function(xhr, textStatus) { //로딩창 hide $('.loading_layer').removeClass('active'); } }); //첨부파일 이름 및 데이터 지워주기 - 완료 후 팝업이 자동으로 닫힘. $("#imgFile").val(""); $("#imgNm").val(""); } } function txtExport(event){ var input = event.target; var reader = new FileReader(); var file = input.files[0]; var txtAddr = []; var fileNm = input.files[0].name; var fileExt = fileNm.split('.').pop().toLowerCase(); if(fileExt != "txt"){ alert("TXT 파일만 등록 할 수 있습니다."); return false; } if (!file) { alert("첨부파일이 없습니다."); return; } //txt 파일 읽어 오기 var arrSplitData = []; reader.onload = function(e) { fileData = e.target.result; arrSplitData = fileData.split("\n"); for(var i=0; i < arrSplitData.length; i++){ var arrTemp = arrSplitData[i].split("\t"); txtAddr.push({phone: arrTemp[1].trim(), name: arrTemp[0].trim()}); } //Tabulator에 데이터 입력해주기 addPhoneInfo(txtAddr); }; reader.readAsText(file, 'UTF-8'); //첨부파일 초기화 시켜주기 $("#txtFile").val(""); } $(document).ready(function (){ //미리보기 이미지 영역 숨김 처리 $('.preiew_img').hide(); $('.prePhoto').hide(); //최초 화면 문자열 길이 체크해주기 var strCon = $('#smsTxtArea').val(); fnByteString(strCon); //일반문자, 광고문자 텍스트 내용 추가해주기 $('input[name=send_adYn]').change(function(){ advMsgInsert(); }); function advMsgInsert(){ var advStr = '<div class="ad_txt"><p>(광고)</p></div>'; var advDenyStr = '<div class="deny_txt"><p>무료거부 0808800858</p> </div>'; var preAdvStr = '<p class="ad_tit">(광고)</p>'; var preAdvDenyStr = '<p class="deny_receipt">무료거부 0808800858</p>'; //광고 및 무료수신거부 텍스트 추가 if ($('input[name=send_adYn]:checked').val() == 'Y'){ //문자 내용에 광고 문자 추가해주기 $(advStr).insertBefore('textarea[name=smsTxtArea]'); $(advDenyStr).insertBefore('div[name=afterDeny]'); //미리보기에 광고 문자 추가해주기 $(preAdvStr).insertBefore('.none_txt'); $(preAdvDenyStr).insertAfter('.realtime'); //$('#smsTxtArea').val(advStr + "\r\n" + contents + "\r\n" + advDenyStr); }else{ //광고 및 무료수신거부 텍스트 삭제 //문자내용 광고문자 삭제하기 $('.ad_txt').remove(); $('.deny_txt').remove(); //미리보기 광고 문자 삭제하기 $('.ad_tit').remove(); $('.deny_receipt').remove(); } //문자 바이트수 계산하기 fnByteString($('#smsTxtArea').val()); } //문자 내용 입력시 바이트수 계산하기 $('#smsTxtArea').keyup(function(e){ var contents = $(this).val(); var adrYn = $("input[name=send_adYn]:checked").val(); if(adrYn == 'N'){ if((contents.indexOf("(광고)") > -1 && (contents.indexOf("무료거부") > -1 || contents.indexOf("무료 거부") > -1)) || contents.indexOf("(광고)") > -1){ alert("광고 내용이 인식되어 광고 문자로 전환됩니다."); $('#smsTxtArea').val(""); //입력 내용 지워주기 $('#send_adYnY').prop('checked', true); //광고 상하단 내용 넣어주기 advMsgInsert(); } fnByteString(contents); }else{ fnByteString(contents); } });//문자 바이트수 계산하기 끝 //스프레드 시트 Tabulator 초기 셋팅 /* var tabledata = [ ]; */ //var selectRow; //받는사람 연락처 내용 처리 //Tabulator AJAX Data Loading tableL = new Tabulator(".callList_box", { height:"255px", layout:"fitColumns", //data:tabledata, //autoColumns:true, headerHozAlign:"center", validationMode:"highlight", //clipboard:false, //clipboardCopySelector:"table", //clipboardPasteAction:"insert", // insert, update, replace placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional) resizableColumns:false, columns:[ //Define Table Columns {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){ cell.getRow().toggleSelect(); }}, {title:"이름", hozAlign:"center", field:"name", editor:"input", validator:["maxLength:12"], cellEdited:function(cell){ //cell - cell component fnReplCell(); }}, {title:"휴대폰", hozAlign:"center", field:"phone", editor:"input", width:100, validator:["required","minLength:10", "maxLength:12"], cellEdited:function(cell){ //cell - cell component fnDuplPhone(); }}, {title:"[*1*]", hozAlign:"center", field:"rep1", editor:"input", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){ //cell - cell component fnReplCell(); }}, {title:"[*2*]", hozAlign:"center", field:"rep2", editor:"input", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){ //cell - cell component fnReplCell(); }}, {title:"[*3*]", hozAlign:"center", field:"rep3", editor:"input", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){ //cell - cell component fnReplCell(); }}, {title:"[*4*]", hozAlign:"center", field:"rep4", editor:"input", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){ //cell - cell component fnReplCell(); }}, ], validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - 아직 잘 모르겠음 //take action on validation fail var valid = cell.isValid(); var fieldNm = cell.getField(); var cellVal = cell.getValue(); var returnVal = ""; if(!valid){ if(fieldNm == "name"){ alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다."); cell.setValue(strMaxLengthSubstring(cellVal, 11)); //스크립트 함수가 0부터 시작이므로 원하는 글자수 -1을 해줘야한다. cell.clearValidation(); }else if(fieldNm == "phone"){ alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요."); }else{ alert("치환문자를 정확히 입력해 주세요. 40글자 이내로 입력 가능합니다."); cell.setValue(strMaxLengthSubstring(cellVal, 39)); cell.clearValidation(); } //해당 셀 데이터 삭제 //cell.setValue(""); } return value % parameters.phone; }, }); //주소록 불러오기 팝업 내용 //Tabulator AJAX Data Loading tableAddr = new Tabulator(".callAddr_box", { height:"255px", layout:"fitColumns", headerHozAlign:"center", validationMode:"highlight", placeholder:"주소록 그룹을 선택해 주세요.", //fit columns to width of table (optional) resizableColumns:false, columns:[ //Define Table Columns {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){ cell.getRow().toggleSelect(); } }, {title:"그룹명", hozAlign:"center", field:"addrGroupNm", editor:"input", width:100, validator:["required","minLength:2", "maxLength:40"]}, {title:"이름", hozAlign:"center", field:"addrName", editor:"input", width:100, validator:["maxLength:12"]}, {title:"휴대폰번호", hozAlign:"center", field:"addrPhone", editor:"input", width:100, validator:["required","minLength:10", "maxLength:11"]}, {title:"[*1*]", hozAlign:"center", field:"addrRep1", editor:"input", width:84, validator:["maxLength:40"]}, {title:"[*2*]", hozAlign:"center", field:"addrRep2", editor:"input", width:84, validator:["maxLength:40"]}, {title:"[*3*]", hozAlign:"center", field:"addrRep3", editor:"input", width:84, validator:["maxLength:40"]}, {title:"[*4*]", hozAlign:"center", field:"addrRep4", editor:"input", width:84, validator:["maxLength:40"]}, ], validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - 아직 잘 모르겠음 var valid = cell.isValid(); var fieldNm = cell.getField(); if(!valid){ if(fieldNm == "addrName"){ alert("받는사람 이름은 최대 12글자까지만 입력 가능합니다."); }else if(fieldNm == "addrPhone"){ alert("휴대폰번호는 하이픈(-)을 제외한 숫자만 정확히 입력해 주세요."); }else if(fieldNm == "addrGroupNm"){ alert("그룹명을 정확히 입력해 주세요. 2 ~ 40글자 이내로 입력 가능합니다."); }else{ alert("치환문자를 정확히 입력해 주세요. 100글자 이내로 입력 가능합니다."); } //해당 셀 데이터 삭제 cell.setValue(""); } return value % parameters.addrPhone; }, }); //핸드폰 번호 Tabulator에서 수정시 중복 체크 function fnDuplPhone(){ var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 var tableData = []; //기존 받는사람 리스트를 배열에 미리 담아둔다. if(recTableData.length > 0){ for(var j=0; j < recTableData.length; j++){ tableData.push({phone: removeDash(recTableData[j].getData().phone.trim()) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4}); } } //수신목록에서 중복 휴대폰문자가 있는지 체크해주기 var dupCnt = dupliPhoneDataChk(tableData); if(dupCnt > 0){ if(confirm("동일한 휴대폰 번호가 받는사람 목록에 등록되어 있습니다. 중복 번호를 삭제하시겠습니까?")){ //수신목록에서 중복 휴대폰 번호 삭제해주기 tableL.clearData(); //기존 받는사람 목록을 삭제. tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 _fileForm2 = []; //form file data 초기화 _fileIdx = 0; //form file idx 초기화 totRows = tableL.getRows().length; updateTotCnt(totRows); //전체 데이터 갯수 구하기 } } } //받는사람 목록에 복사/붙여넣기 기능 처리 $('.callList_box').on('paste', function (e) { var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 var elmSplit= []; elmSplit = element.split("\n"); var elmLen = elmSplit.length; if(elmLen < 0){ alert("붙여넣을 연락처를 복사해주세요."); return false; }else{ tableErrorData.length = 0; // 오류 번호 배열 초기화 var splitData = []; var realPhone = []; for(var i=0; i < elmLen; i++){ var splitStr = elmSplit[i]; var tabData = []; var comData = []; if(splitStr.indexOf('\t') != -1){ splitData = splitStr.split('\t'); //탭 구분으로 데이터 분할 }else if(splitStr.indexOf(',') != -1){ splitData = splitStr.split(','); //콤마 구분으로 데이터 분할 }else{ splitData = splitStr.split(' '); } if(splitData.length == 0){// 데이터가 없는경우 alert("탭으로 구분하여 데이터를 복사해 주세요."); return false; }else if(splitData.length == 1){// 데이터가 탭으로 구분이 없는 경우 for(var j=0; j < splitData.length; j++){ if(checkHpNum(splitData[j].trim())){//핸드폰 양식이 맞는지 확인 //배열 끝에 데이터 추가해 주기 realPhone.push({phone: removeDash(splitData[j].trim()), name: ""}); } else { if (splitData[j].trim() != '' && splitData[j].trim() != null && splitData[j].trim() != undefined) { tableErrorData.push(splitData[j].trim()); } } } }else{//데이터가 탭으로 구분되어 이름, 연락처로 구분된 경우 var phone = ""; //핸드폰번호 var name = ""; //이름 var rep1 = ""; //치환문자1 var rep2 = ""; //치환문자2 var rep3 = ""; //치환문자3 var rep4 = ""; //치환문자4 var isPhoneValid = false; for(var j=0; j < splitData.length; j++){ if(j == 0){ name = splitData[j].trim(); } if(j == 1){ if(checkHpNum(splitData[j].trim())){//핸드폰 양식이 맞는지 확인 phone = removeDash(splitData[j].trim()); isPhoneValid = true; }else{ if (splitData[j].trim() != '' && splitData[j].trim() != null && splitData[j].trim() != undefined) { tableErrorData.push(splitData[j].trim()); } } } if(j == 2){ //치환문자1 rep1 = splitData[j].trim(); } if(j == 3){ //치환문자2 rep2 = splitData[j].trim(); } if(j == 4){ //치환문자3 rep3 = splitData[j].trim(); } if(j == 5){ //치환문자4 rep4 = splitData[j].trim(); } } if (isPhoneValid == true) { //배열 끝에 데이터 추가해 주기 realPhone.push({phone: phone, name: name, rep1 : rep1, rep2 : rep2, rep3 : rep3, rep4 : rep4 }); } }//else end } var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 var tableData = []; //기존 받는사람 리스트를 배열에 미리 담아둔다. if(recTableData.length > 0){ for(var j=0; j < recTableData.length; j++){ tableData.push({phone: removeDash(recTableData[j].getData().phone.trim()) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4, }); } } if(realPhone.length > 0){ for(var j=0; j < realPhone.length; j++){ tableData.push({phone: removeDash(realPhone[j].phone.trim()) , name: realPhone[j].name, rep1: realPhone[j].rep1, rep2: realPhone[j].rep2, rep3: realPhone[j].rep3, rep4: realPhone[j].rep4}); } } //tableData.push(realPhone); //중복 연락처 1개만 남기고 삭제하기 var removeDuplPhone = dupliPhoneData(tableData); //수신자 리스트에 전화번호 추가해주기 //tableL.addData(removeDuplPhone); tableL.setData(removeDuplPhone); totRows = tableL.getRows().length; updateTotCnt(totRows); //전체 데이터 갯수 구하기 var smsTxtArea = $('#smsTxtArea').val(); //일괄변환 문구 결제금액 처리 if(smsTxtArea.indexOf("[*이름*]") > -1 || smsTxtArea.indexOf("[*1*]") > -1 || smsTxtArea.indexOf("[*2*]") > -1 || smsTxtArea.indexOf("[*3*]") > -1 || smsTxtArea.indexOf("[*4*]") > -1){ fnReplCell(); }else{ //결제 금액 구하기 totalPriceSum(totRows); } if (tableErrorData.length > 0) { alert("올바르지 않은 휴대폰 번호가 "+ tableErrorData.length +" 건 있습니다."); } } }); //받는사람 번호 버튼 클릭시 Tabulator에 데이터 넣어주기 $('.addCallToF').click(function(){ var callToNum = $('#callTo').val(); if(callToNum == null || callToNum == ""){ alert("받는사람 번호를 입력해 주세요."); return false; }else if(!checkHpNum(callToNum)){ alert("올바른 전화번호를 입력해 주세요."); $('#callTo').val(""); return false; } //핸드폰 번호에 '-' 문자 제거하기 callToNum = removeDash(callToNum); //기존 받는사람 연락처 모두 불러오기 var data = tableL.getRows(); var tableData = []; var dpCnt = 0; for(var i=0; i < tableL.getRows().length; i++){ if(callToNum == data[i].getData().phone){ dpCnt++; } } if(dpCnt > 0){ alert("받는사람 리스트에 동일한 연락처가 있습니다."); $('#callTo').val(""); return false; }else{ tabledata = [{phone: callToNum},]; //빈 row 데이터 삭제하기 var befData = tableL.getRows(); var totLen = tableL.getRows().length; for(var i=0; i < totLen; i++){ tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name}); } //연락처 추가해 주기 addPhoneInfo(tabledata); //tableL.addData(tabledata); //전체 데이터 갯수 구하기 //totRows = tableL.getRows().length; //updateTotCnt(totRows); //결제 금액 구하기 //totalPriceSum(totRows); $('#callTo').val(""); } }); //받는사람 전체삭제 버튼 처리 $('.all_del').click(function(){ var data = tableL.getRows(); if(data == null || data == ""){ alert("받는사람을 추가해 주세요."); return false; }else{ if(confirm("받는사람 목록을 모두 삭제하시겠습니까?")){ tableL.clearData(); $("#rowTotCnt").text(0); //총건수 수정 $("#rowDupCnt").text(0); //중복건수 수정 totalPriceSum(0); //결제 금액 수정 } } }); // 받는사람 선택삭제 버튼 처리해주기 $('.select_del').click(function(){ if(tableL == null || tableL == ""){ alert("받는사람을 추가해 주세요."); return false; } var selectedData = tableL.getSelectedRows(); if(selectedData == "" || selectedData == null){ alert("삭제할 연락처를 선택해주세요."); return false; }else{ // 선택한 Row 데이터 삭제하기 if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){ for(var i=0; i < selectedData.length; i++){ selectedData[i].delete(); } totRows = tableL.getRows().length; updateTotCnt(totRows); var smsTxtArea = $('#smsTxtArea').val(); //일괄변환 문구 결제금액 처리 if(smsTxtArea.indexOf("[*이름*]") > -1 || smsTxtArea.indexOf("[*1*]") > -1 || smsTxtArea.indexOf("[*2*]") > -1 || smsTxtArea.indexOf("[*3*]") > -1 || smsTxtArea.indexOf("[*4*]") > -1){ fnReplCell(); }else{ //결제 금액 구하기 totalPriceSum(totRows); } } } }); /* //받는사람 중복 삭제 $('.duple_del').click(function(){ //기존 연락처 모두 불러오기 var data = tableL.getRows(); var tableData = []; var dpCnt = 0; var totLen = tableL.getRows().length; for(var i=0; i < totLen; i++){ tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name}); } var removeDuplData = dupliPhoneData(tableData); tableL.setData(removeDuplData); //총 받는사람 수 계산 totRows = tableL.getRows().length; updateTotCnt(totRows); //결제 금액 구하기 totalPriceSum(totRows); }); */ //주소록 불러오기 버튼 클릭시 $('.popupAddr').click(function(){ var login = '${LoginVO.id}'; if(login == null || login == ''){ alert("로그인 후 이용이 가능합니다."); return false; } $("#addrGroupLoad").load("/web/mjon/msgdata/selectAddrGroupListAjax.do", "" ,function(response, status, xhr){ //리스트 스크롤 처리해주기 $(".adr_pop_list").mCustomScrollbar({ axis: 'y', scrollbarPosition: "outside", theme: "dark", autoHideScrollbar: false }); }); }); //엑섹불러오기 버튼 클릭시 파일 첨부 실행 $('.c3').click(function(){ // 엑셀파일 불러오기 선택 시 $("#excelFile").click(); }); //엑섹불러오기 버튼 클릭시 파일 첨부 실행 $('.upImg').click(function(){ // 엑셀파일 불러오기 선택 시 $("#imgFile").click(); }); //최근전송내역 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기) $(document).on('click', '#latestAddPhone', function (){ var addPhoneList = []; //신규로 추가할 전화번호 저장변수 $("input:checkbox[name='latAddrChk']:checked").each(function(index){ var chkPhone = $(this).val(); if(!checkHpNum(chkPhone)){ alert("올바른 전화번호가 아닙니다."); return false; }else{ addPhoneList.push({phone: removeDash(chkPhone.trim())}); } }); if(addPhoneList.length > 0){ //연락처 추가해 주기 addPhoneInfo(addPhoneList); $("#btnLatestAddPhoneClose").trigger("click"); } else { alert("연락처를 선택해주세요."); return false; } //중복연락처 제거 //var removeDuplData = dupliPhoneData(addPhoneList); //받는사람 목록에 추가 //tableL.addData(removeDuplData); //총 받는사람 수 계산 //totRows = tableL.getRows().length; //updateTotCnt(totRows); //결제 금액 구하기 //totalPriceSum(totRows); }); //최근전송내역 팝업 선택 취소 버튼 처리 $(document).on('click', '#latestCancelPhone', function (){ $("input[name=latAddrChk]").prop("checked", false); }); //최근전송내역 팝업 삭제 버튼 처리 $(document).on('click', '#latestAddrDel', function (){ $(this).parent("#latestLi").remove(); }); //자주보내는 번호 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기) $(document).on('click', '#bookMarkAddPhone', function (){ var addPhoneList = []; //신규로 추가할 전화번호 저장변수 $("input:checkbox[name='bookAddrChk']:checked").each(function(index){ var chkPhone = $(this).val(); if(!checkHpNum(chkPhone)){ alert("올바른 전화번호가 아닙니다."); return false; }else{ addPhoneList.push({phone: removeDash(chkPhone.trim())}); } }); if(addPhoneList.length > 0){ //연락처 추가해 주기 addPhoneInfo(addPhoneList); $("#btnLatestAddPhoneClose").trigger("click"); } else { alert("연락처를 선택해주세요."); return false; } //중복연락처 제거 //var removeDuplData = dupliPhoneData(addPhoneList); //받는사람 목록에 추가 //tableL.addData(removeDuplData); //총 받는사람 수 계산 //totRows = tableL.getRows().length; //updateTotCnt(totRows); //결제 금액 구하기 //totalPriceSum(totRows); }); //자주보내는 번호 팝업 선택 취소 버튼 처리 $(document).on('click', '#bookMarkCancelPhone', function (){ $("input[name=bookAddrChk]").prop("checked", false); }); //자주보내는 번호 팝업 삭제 버튼 처리 $(document).on('click', '#bookMarkAddrDel', function (){ $(this).parent("#bookMarkLi").remove(); }); // 자주보내는 번호 팝업 닫기 버튼 처리 $(document).on('click', '#btnLatestAddPhoneClose', function (){ // 자주보내는 번호 체크박스 해제처리 setCheckBoxUnChecked(); }); // 자주보내는 번호 체크박스 해제처리 function setCheckBoxUnChecked() { $("input[name=latAddrChk]").prop("checked", false); $("input[name=bookAddrChk]").prop("checked", false); } //오류 검사 버튼 처리 $('.check_validity').click(function(){ var invalid = tableL.getInvalidCells(); //오류 데이터 체크 var dataLen = tableL.getRows().length; //연락처 데이터 갯수 var totLen = invalid.length; //오류 데이터 갯수 var errMsg = ""; //최종 alert에 표시할 메시지 저장 변수 if(dataLen > 0){ //연락처 정보가 있으면 수행 if(totLen > 0){ //내용에 오류가 있으면 수행 //오류 데이터 값 저장 for(var i=0; i < totLen; i++){ var cellValue = invalid[i].getValue(); if(i == 0){ errMsg = cellValue; }else{ errMsg = errMsg +", "+ cellValue; } } if(errMsg == "" || errMsg == null){ alert("내용에 오류가 있습니다."); return false; }else{ alert(errMsg + "의 내용에 오류가 있습니다."); return false; } }else{ alert("오류 데이터가 없습니다."); return false; } }else{ alert("연락처를 입력해 주세요."); return false; } }); //문자입력창의 첨부된 이미지 순서를 바꿀 때 $(document).on('mouseup', '.thumb_wrap img', function (){ //미리보기 창의 이미지 순서를 변경한다 setTimeout(function() { var previewHtml = ""; var imgCnt = $("#imgCnt").val(); //이미지 갯수만큼 for문 돌림 for(var i=0; i<imgCnt; i++) { var imgTag = $(".thumb_wrap li:eq("+i+") div").html(); // 썸네일에 있는 이미지 태그 가져오기 previewHtml += '<div class="img_box preBoxF on_scroll_img" id="preBoxF'+(i+1)+'">' previewHtml += imgTag; previewHtml += '</div>' } $('.preViewShort div').remove(); //미리보기 영역에 있던 이미지 다 지우고 $('.preViewShort').append(previewHtml); //새로 sorting된 이미지 그려주기 }, 100); }); //문자 샘플 탭, 그림문자 샘플 탭 선택시 옵션 초기화 $('.tab').click(function(){ var index = $(this).index(); var form = document.letterForm; if($(this).hasClass("active") === true){ if(index == 0){ form.pageIndex.value = 1; form.letterType.value = "S"; form.categoryCode.value = ""; form.hashTag.value = ""; }else if(index == 1){ form.pageIndex.value = 1; form.letterType.value = "P"; form.categoryCode.value = ""; form.hashTag.value = ""; }else if(index == 2){ setTimeout(function(){ map.relayout(); map.setCenter(testcoords); }, 0); } } }); //이미지 선택시 그림문자 처리 $(document).on('click', '.photoOnImg', function(){ // 클릭 시 조회수 증가 로직 var letterId = $(this).attr('id'); var url = "/web/mjon/msgdata/updateSmsTemplateCntAjax.do"; $.ajax({ type: "POST", url: url, data: {'letterId':letterId}, dataType:'json', async: false, cache: false, success: function (returnData, status) { console.log("status : ", status); }, error: function (e) {console.log("ERROR : ", e); } }); // 클릭 시 조회수 증가 로직 끝 var imgId = $(this).parent().find("input").val(); imageControl($(this), "edit_n", "Template", imgId); var contents = $('#smsTxtArea').val(); //(contents); totRows = tableL.getRows().length; updateTotCnt(totRows); //전체 데이터 갯수 구하기 //일괄변환 문구 결제금액 처리 if(contents.indexOf("[*이름*]") > -1 || contents.indexOf("[*1*]") > -1 || contents.indexOf("[*2*]") > -1 || contents.indexOf("[*3*]") > -1 || contents.indexOf("[*4*]") > -1){ fnReplCell(); }else{ //결제금액 표시해주기 var totalPrice = totalPriceSum(totRows); $('#totalPrice').text(totalPrice); $('#txtReplYn').val("N"); } var sendOfT=$('.send_top').offset().top; $('html,body').stop().animate({'scrollTop':sendOfT-60},250); /* //결제 금액 구하기 totalPriceSum(totRows); */ }); //그림문자 이미지 삭제 처리 - 동적으로 추가한 객체는 on 함수로 불러올 수 있다. $(document).on('click', '.file_close', function(){ var delImgPath = ""; //삭제하려는 이미지 경로 받아오기 var index = $(this).parent().index(); // 현재 선택 된 객체 인덱스 번호 받아오기 var imgCnt = $("#imgCnt").val(); // 현재 첨부된 이미지의 갯수 var contents = $('#smsTxtArea').val(); //선택한 태그의 부모 이미지 li 객체 삭제 $(this).parent(".delLi").remove(); //미리보기 화면에서의 이미지 객체 삭제 //삭제하려는 이미지 경로 받아오기 delImgPath = $('.preBoxF').eq(index).find("img").attr("src"); $('.preBoxF').eq(index).remove(); // 삭제한 이미지 경로 배열에서 삭제해 주기 for(var i=0; i < imgFilePath.length; i++){ if(imgFilePath[i] == delImgPath){ imgFilePath.splice(i, 1); //이미지 경로 삭제 imgFileId.splice(i, 1); //이미지 아이디 삭제 - 내 문자 보관함 저장용으로 사용 i--; } } //imgCnt--; $("#imgCnt").val(Number(imgCnt) - 1); //미리보기 포토 1,2,3 번 번호 표시 변경 $('.photo_num_02').hide(); $('.photo_num_03').hide(); if(imgCnt > 2){ $('.photo_num_01').show(); $('.photo_num_02').show(); }else if(imgCnt > 1){ $('.photo_num_01').show(); }else{ //그림을 모두 삭제 했을때 단문으로 변경 $('.preShort').show(); $('.prePhoto').hide(); $('.msg_com').removeClass("msg_photo"); $('.msg_com').addClass("msg_short"); $('.put_left').removeClass("photo"); $('#msgType').val("4"); // 메세지 타입 설정 fnByteString(contents); } //수신목록 전체 데이터 갯수 구하기 updateTotCnt(totRows); //일괄변환 문구 결제금액 처리 if(contents.indexOf("[*이름*]") > -1 || contents.indexOf("[*1*]") > -1 || contents.indexOf("[*2*]") > -1 || contents.indexOf("[*3*]") > -1 || contents.indexOf("[*4*]") > -1){ fnReplCell(); }else{ //결제금액 표시해주기 var totalPrice = totalPriceSum(totRows); $('#totalPrice').text(totalPrice); $('#txtReplYn').val("N"); } var scrollHei = $(".mCustomScrollBox").height(); if(scrollHei > 488) { $(".img_box").removeClass("on_scroll_img"); } }); // 초기화 버튼 처리 $('.btnReset').click(function(){ //일반문자 라이오 선택해 주기 $("#send_adYnN").prop("checked", true); $('.delLi').each(function(){ $(this).remove(); }); $('.preBoxF').each(function(){ $(this).remove(); }); //그림 카운트 초기화 $('#imgCnt').val(0); //그림을 모두 삭제 했을때 단문으로 변경 $('.preShort').show(); $('.prePhoto').hide(); $('.msg_com').removeClass("msg_photo"); $('.msg_com').addClass("msg_short"); $('#msgType').val("4"); // 메세지 타입 설정 //메세지 내용 초기화 $('#smsTxtArea').val(""); fnByteString(""); }); // 동적으로 추가해주기 때문에 on 사용 $(document).on('click', '.letterMsg', function(){ //문자 템플릿 선택시 상단 문자 내용에 입력해주기 // 클릭 시 조회수 증가 로직 var letterId = $(this).attr('id'); var url = "/web/mjon/msgdata/updateSmsTemplateCntAjax.do"; $.ajax({ type: "POST", url: url, data: {'letterId':letterId}, dataType:'json', async: false, cache: false, success: function (returnData, status) { console.log("status : ", status); }, error: function (e) {console.log("ERROR : ", e); } }); // 클릭 시 조회수 증가 로직 끝 var smsTxtArea = $(this).find('.msg_text').html(); smsTxtArea = smsTxtArea.replace(/(<br>|<br\/>|<br \/>)/g, '\n'); $('#smsTxtArea').val(""); $('#smsTxtArea').val(smsTxtArea); fnByteString(smsTxtArea); var sendOfT=$('.send_top').offset().top; $('html,body').stop().animate({'scrollTop':sendOfT-60},250); }); // 동적으로 추가해주기 때문에 on 사용 $(document).on('click', '.btnSearchF', function(){ // 검색 기능 실행 var formL = document.letterForm; var formM = document.myMsgForm; formL.categoryCode.value = ""; //해시태그 검색 시 카테고리 제거 formL.upperCateNo.value = ""; //해시태그 검색 시 카테고리 제거 /* if(form.searchKeyword.value == ""){ alert("검색어를 입력해 주세요."); return false; } */ var tabIndex = $(".selectedTab").children(".active").index(); //문자 리스트 불러오기 if(tabIndex == 0) { if($('.tDep1_letType a').eq(0).hasClass('on')) { formL.letterType.value="S"; } else if ($('.tDep1_letType a').eq(1).hasClass('on')) { formL.letterType.value="L"; } fnLetterListAjax(1); } //그림 문자 리스트 불러오기 if(tabIndex == 1) { formL.letterType.value="P"; fnPhotoListAjax(1); } //내문자함 리스트 불러오기 if(tabIndex == 3) { formM.searchKeyword.value = formL.searchKeyword.value; //letterForm의 검색어를 문자함 검색어 부분에 입력해줌 fnMyMsgListAjax(1); } $('.bottom_content.current .area_total_count').show(); return false; }); //탭 선택시에 검색자 초기화하여 검색하기 $(document).on('click', '.selectedTab', function(){ var formL = document.letterForm; var formM = document.myMsgForm; formL.categoryCode.value = ""; //탭 선택시 카테고리 제거 formL.upperCateNo.value = ""; //탭 선택시 카테고리 제거 var tabIndex = $(".selectedTab").children(".active").index(); //2줄보기, 4줄보기 초기화 $("#LPageUnit option:eq(0)").prop("selected", true); $("#PhPageUnit option:eq(0)").prop("selected", true); $("#msgPageUnit option:eq(0)").prop("selected", true); $('.bottom_content .area_total_count').hide(); //문자 리스트 불러오기 if(tabIndex == 0) { formL.letterType.value="S"; formL.pageUnit.value = "10"; formL.searchKeyword.value=""; fnLetterListAjax(1); } //그림 문자 리스트 불러오기 if(tabIndex == 1) { formL.letterType.value="P"; formL.pageUnit.value = "10"; formL.searchKeyword.value=""; fnPhotoListAjax(1); } //내문자함 리스트 불러오기 if(tabIndex == 3) { formM.pageUnit.value = "10"; formM.searchKeyword.value = ""; fnMyMsgListAjax(1); } }); /* 단문 / 장문 탭 옵션 선택시 실행 **/ $('.tDep1_mType').click(function(){ // 전체,기업, 개인 선택 옵션 처리 var mType = $(this).find('.on').text(); var form = document.letterForm; if(mType == "전체"){ form.memberType.value = ""; }else if(mType == "기업"){ form.memberType.value = "B"; }else{ form.memberType.value = "P"; } //문자 리스트 불러오기 //form.letterType.value = "S"; form.categoryCode.value = ""; form.hashTag.value = ""; form.pageIndex.value = 1; //문자 리스트 불러오기 fnLetterListAjax(1); }); $('.tDep1_letType').click(function(){ // 단문, 장문 선택 시 옵션처리 var letterType = $(this).find('.on').attr("value"); var form = document.letterForm; form.letterType.value = letterType; //문자 리스트 불러오기 fnLetterListAjax(1); }); $('.tDep1_cateCode').click(function(){ // 카테고리 선택 시 옵션 처리 var cateCode = $(this).find('.on').attr("value"); var form = document.letterForm; if($('.tDep1_letType a').eq(0).hasClass('on')) { form.letterType.value="S"; } else if ($('.tDep1_letType a').eq(1).hasClass('on')) { form.letterType.value="L"; } if(cateCode == "all"){ //전체 선택시 cateCode = ""; } else { //카테고리 코드 클릭 시 해쉬태그 초기화 후 전체 선택 form.hashTag.value=""; $('.tDep1_hashTag').find('.on').removeClass('on'); $('.tDep1_hashTag').find('.hashAll').addClass('on'); } form.upperCateNo.value = ""; form.categoryCode.value = cateCode; form.pageIndex.value = 1; //카테고리 클릭 시 검색자 초기화 form.searchKeyword.value = ""; //문자 리스트 불러오기 fnLetterListAjax(1); }); $('.tDep1_threeCateCode').click(function(){ // 하위 카테고리 선택 시 문자샘플 조회 var cateCode = $(this).find('.on').attr("value"); var form = document.letterForm; var upperCateNo = $(this).siblings('div').find('.on').attr('value'); form.upperCateNo.value = upperCateNo; form.categoryCode.value=cateCode; //해쉬태그 검색자 초기화 form.searchKeyword.value = ""; form.pageIndex.value = 1; //문자 리스트 불러오기 fnLetterListAjax(1); }); $('.tDep1_hashTag').click(function(){ // 해시 태그 선택 시 옵션 처리 var hashTag = $(this).find('.on').attr("value"); var form = document.letterForm; //해쉬태그 클릭 시 카테고리코드 초기화 후 전체 선택 form.categoryCode.value=""; $('.tDep1_cateCode').find('.on').removeClass('on'); $('.tDep1_cateCode').find('.cateAll').addClass('on'); //해쉬태그 클릭 시 검색자 초기화 form.searchKeyword.value = ""; form.hashTag.value = hashTag; form.pageIndex.value = 1; //문자 리스트 불러오기 fnLetterListAjax(1); }); /* 그림문자 탭 옵션 선택시 사용 */ $('.tDep2_mType').click(function(){ // 전체,기업, 개인 선택 옵션 처리 var mType = $(this).find('.on').text(); var form = document.letterForm; if(mType == "전체"){ form.memberType.value = ""; }else if(mType == "기업"){ form.memberType.value = "B"; }else{ form.memberType.value = "P"; } //문자 리스트 불러오기 form.letterType.value = "P"; form.categoryCode.value = ""; form.hashTag.value = ""; form.pageIndex.value = 1; fnPhotoListAjax(1); }); $('.tDep2_letType').click(function(){ // 그림문자 선택 var letterType = $(this).find('.on').attr("value"); var form = document.letterForm; form.letterType.value = 'P'; //문자 리스트 불러오기 fnPhotoListAjax(1); }); $('.tDep2_cateCode').click(function(){ // 그림 문자 카테고리 선택 시 옵션 처리 var cateCode = $(this).find('.on').attr("value"); var form = document.letterForm; if(cateCode == "all"){ //전체 선택시 cateCode = ""; } else { //카테고리 코드 클릭 시 해쉬태그 초기화 후 전체 선택 form.hashTag.value=""; $('.tDep2_hashTag').find('.on').removeClass('on'); $('.tDep2_hashTag').find('.hashAll').addClass('on'); } form.upperCateNo.value = ""; form.categoryCode.value = cateCode; form.pageIndex.value = 1; //카테고리 클릭 시 검색자 초기화 form.searchKeyword.value = ""; //문자 리스트 불러오기 fnPhotoListAjax(1); }); $('.tDep2_threeCateCode').click(function(){ // 하위 카테고리 선택 시 문자샘플 조회 var cateCode = $(this).find('.on').attr("value"); var form = document.letterForm; var upperCateNo = $(this).siblings('div').find('.on').attr('value'); form.upperCateNo.value = upperCateNo; form.categoryCode.value=cateCode; //해쉬태그 검색자 초기화 form.searchKeyword.value = ""; form.pageIndex.value = 1; //그림문자 리스트 불러오기 fnPhotoListAjax(1); }); $('.tDep2_hashTag').click(function(){ // 그림문자 해시 태그 선택 시 옵션 처리 var hashTag = $(this).find('.on').attr("value"); var form = document.letterForm; //해쉬태그 클릭 시 카테고리코드 초기화 후 전체 선택 form.categoryCode.value=""; $('.tDep2_cateCode').find('.on').removeClass('on'); $('.tDep2_cateCode').find('.cateAll').addClass('on'); //해쉬태그 클릭 시 검색자 초기화 form.searchKeyword.value = ""; form.hashTag.value = hashTag; form.pageIndex.value = 1; //문자 리스트 불러오기 fnPhotoListAjax(1); }); $(".fontPlus").click(function () { var currentSize = $(".preview_auto").css("fontSize"); var size = parseInt(currentSize, 10) * 1.2; var unit = currentSize.slice(-2); if(size > 65){ return false; } $(".preview_auto").css("fontSize", size+unit); }); $(".fontMinus").click(function () { var currentSize = $(".preview_auto").css("fontSize"); var size = parseInt(currentSize, 10) / 1.2; var unit = currentSize.slice(-2); if(size < 10){ return false; } $(".preview_auto").css("fontSize", size+unit); }); //즉시, 예약 선택시 날짜 영역 초기 표시 var reYn = $("input[name=reserYn]:checked").val(); if(reYn == "N"){ $('.rev_selected').hide(); }else{ $('.rev_selected').show(); } //즉시 발송 라디오 버튼 선택시 숨김처리 $("#reserYnN").on('click', function(){ $('.rev_selected').hide(); $('.send_rev .send_content').css('padding-bottom','108px'); $('.send_btn .btnType:first-child').html('발송하기'); }); //예약 발송 라디오 버튼 선택시 숨김 해제처리 $("#reserYnY").on('click', function(){ $('.rev_selected').show(); $('.send_rev .send_content').css('padding-bottom','0'); $('.send_btn .btnType:first-child').html('예약하기'); }); }); //문자 바이트수 계산하기 함수 function fnByteString(contents){ var totalByte = 0; //var content = contents; var adverYn = $("input[name='send_adYn']:checked").val(); var adTxtLeng = 0; var denyTxtLeng = 0; var adverTxt = $('.ad_txt').html(); var denyTxt = $('.deny_txt').html(); //광고문자 상단 문구 줄바꿈 처리하기(문자길이 바이트수 계산을 위해서) if(typeof adverTxt !='undefined' && adverTxt != null){ adverTxt = adverTxt.replaceAll("<p>",""); adverTxt = adverTxt.replaceAll("</p>",""); adTxtLeng = conByteLeng(adverTxt); } //광고문자 하단 문구 줄바꿈 처리하기(문자길이 바이트수 계산을 위해서) if(typeof denyTxt !='undefined' && denyTxt != null){ denyTxt = denyTxt.replaceAll("<p>","\n"); denyTxt = denyTxt.replaceAll("</p>",""); denyTxtLeng = conByteLeng(denyTxt); } $('#msgLeng').html(""); $('#limitLeng').html(""); var conLeng = conByteLeng(contents); // 내용 문자 입력 바이트 수 계산하기 //일반문자, 광고문자에 따른 문자 길이 변경해주기 if(adverYn == "N"){ $('#msgLeng').text(conLeng); //문자 길이 변수에 저장해주기 $('#smsLen').val(conLeng); }else{ conLeng = adTxtLeng + conLeng + denyTxtLeng; // 상단 광고 텍스트 , 하단 080 문자내용 길이 더해주기 $('#msgLeng').text(conLeng); //문자 길이 변수에 저장해주기 $('#smsLen').val(conLeng); } var photoSts = $('.delLi').length; if(photoSts > 0){ $('#msgLeng').html(conLeng + " / "); $('#limitLeng').html("2000"); $('.msg_com').html("그림"); $('#msgType').val("6"); // 메세지 타입 설정 $('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고 $('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제 $('.msg_com').removeClass("msg_long"); //장문 클래스 삭제하고 $('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제 $('.msg_com').addClass("msg_photo"); // 그림 클래스 삽입 $('.put_left').addClass("photo"); // 내용 입력 박스에 클래스 삽입 $('.put_left').css("display","block"); // 내용 입력 박스에 클래스 삽입 $('.msg_title').addClass('active'); //document.getElementById("mmsSubject").disabled = false; }else{ if(conLeng > 90){ $('#msgLeng').html(conLeng + " / "); $('#limitLeng').html("2000"); $('.msg_com').html("장문"); $('#msgType').val("6"); // 메세지 타입 설정 $('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고 $('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제 $('.msg_com').addClass("msg_long"); // 장문 클래스 삽입 $('.put_left').addClass("long"); // 내용 입력 박스에 클래스 삽입 $('.msg_title').addClass('active'); //document.getElementById("mmsSubject").disabled = false; }else{ $('#msgLeng').html(conLeng + " / "); $('#limitLeng').html("90"); $('.msg_com').html("단문"); $('#msgType').val("4"); // 메세지 타입 설정 $('.msg_com').removeClass("msg_long"); //단문 클래스 삭제하고 $('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제 $('.msg_com').addClass("msg_short"); // 장문 클래스 삽입 $('.put_left').addClass("short"); // 내용 입력 박스에 클래스 삽입 $('.msg_title, .title_wrap .textbox').removeClass('active'); $('#mmsSubject').val(""); $('#title_y').prop('checked',false); $('#title_n').prop('checked',true); //제목 비활성화로 내용 지워주기 /* $('#mmsSubject').val(""); document.getElementById("mmsSubject").disabled = true; */ } } // 미리보기 데이터 입력해 주기 , 줄바꿈 문자 변환해주기 //var repContent = ""; //repContent = content.replace(/(?:\r\n|\r|\n)/g, '<br/>'); if(conLeng > 0){ $('.none_txt').text(""); }else{ $('.none_txt').text("내용을 입력해주세요."); } //미리보기에 내용 입력해 주기 $('.realtime').text(contents); // 2000byte 초과시 메세지 알림 if(conLeng > 2000){ //2000바이트 초과시 문자열 잘라서 보여주기 var subUnderStr = strUnderLineSubstring(contents, 2000); $('#smsTxtArea').val(subUnderStr); //문자 바이트수 수정해주기 $('#msgLeng').text(conByteLeng(subUnderStr)); //문자 길이 변수에 저장해주기 $('#smsLen').val(conByteLeng(subUnderStr)); alert("문자 내용은 2000byte를 넘을 수 없습니다."); return false; } //수신목록 전체 데이터 갯수 구하기 updateTotCnt(totRows); //일괄변환 문구 결제금액 처리 if(contents.indexOf("[*이름*]") > -1 || contents.indexOf("[*1*]") > -1 || contents.indexOf("[*2*]") > -1 || contents.indexOf("[*3*]") > -1 || contents.indexOf("[*4*]") > -1){ fnReplCell(); }else{ var totalPrice = totalPriceSum(totRows); $('#totalPrice').text(totalPrice); $('#txtReplYn').val("N"); } } function openPhotoEditor() { var imgCnt = $("#imgCnt").val(); if(imgCnt >= 3) { alert("메시지에 첨부할 수 있는 이미지는 최대 3장입니다."); return; } //만들려는 팝업의 크기 var popup_wid = '1100'; var popup_ht = '851'; //중앙 정렬을 위해 윈도우 스크린의 width,height 구하는 변수 만듦 var popup_left = (window.screen.width / 2) - (popup_wid / 2); var popup_top =(window.screen.height / 2) - (popup_ht / 2); window.open('<c:url value='/web/mjon/msgdata/openImageEditorPopup.do'/>', 'a', 'width=' + popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top + ', scrollbar=no' ); } //그림샘플 이미지 선택시 문자 내용에 입력 처리 function imageControl(obj, editYn, imageName, imgId) { var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수 var imgSrc = obj.attr("src"); if(imgCnt >= 3){ alert("이미지는 3장만 선택할 수 있습니다."); return false; } $('.preShort').hide(); $('.prePhoto').show(); if($('.msg_com').hasClass("msg_short") === true){ $('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고 $('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입 $('.put_left').removeClass("short"); $('.put_left').addClass("photo"); $('.msg_com').html("그림"); $('#msgType').val("6"); // 메세지 타입 설정 //제목 입력 항목 활성화 //document.getElementById("mmsSubject").disabled = false; }else{ $('.msg_com').removeClass("msg_long"); //장문 클래스 삭제하고 $('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입 $('.put_left').removeClass("long"); $('.put_left').addClass("photo"); $('.msg_com').html("그림"); $('#msgType').val("6"); // 메세지 타입 설정 //제목 입력 항목 활성화 //document.getElementById("mmsSubject").disabled = false; } //이미지 카운트 증가시키기 //imgCnt ++; $("#imgCnt").val(Number(imgCnt)+1); //문자 내용 상단에 이미지 이름 영역 객체 추가해주기 var imgPath = '<img src="' + imgSrc + '" class="thumb_img '+ editYn +'" alt="thumb1"/>'; var liPath = '<li class="delLi '+imageName+'" id="delLi'+ imgCnt +'">' + '<div>'+ imgPath+ '</div>' + '<button type="button" class="file_close"><img src="/publish/images/content/thumb_del.png" alt="첨부파일 삭제"></button>' + '<button type="button" class="file_close_on"><img src="/publish/images/content/thumb_del_on.png" alt="첨부파일 삭제"></button>' + '</li>'; /* "<li class=\"delLi\"><p>" + imgPath + "</p><button type=\"button\" class=\"file_close\"><img class=\"delImg\" src=\"/publish/images/content/file_close.png\" alt=\"첨부파일 삭제\"></button></li>" */ $('.liOnImg').append(liPath); //미리보기 보여주기 $('.preiew_img').show(); var imgHtml = ""; var imgPath = "<div class=\"img_box preBoxF\" id=preBoxF"+ imgCnt +"><img src=\"" + imgSrc + "\" /></div>"; if($("#imgCnt").val() == 1){ $('.preViewShort').append(imgPath); $('.photo_num_01').show(); $('.photo_num_02').hide(); $('.photo_num_03').hide(); //$(".thumb_wrap li:eq(0)").addClass("on"); }else if($("#imgCnt").val() == 2){ $('.preViewShort').append(imgPath); $('.photo_num_02').show(); $(".thumb_wrap li").removeClass("on"); //$(".thumb_wrap li:eq(1)").addClass("on"); }else if($("#imgCnt").val() == 3){ $('.preViewShort').append(imgPath); $('.photo_num_03').show(); $(".thumb_wrap li").removeClass("on"); //$(".thumb_wrap li:eq(2)").addClass("on"); } // 배열에 선택한 이미지 경로 저장해주기 imgFilePath.push(imgSrc); // 배열에 선택한 이미지 아이디 저장해주기 - 내 문자 보관함 저장용으로 사용 if(typeof(imgId) != 'undefined' && imgId != null && editYn != 'edit_y'){ imgFileId.push(imgId); } //문자 길이 및 타입 변경해주기 var contents = $('#smsTxtArea').val(); fnByteString(contents); var scrollHei = $(".mCustomScrollBox").height(); if(scrollHei > 488) { $(".img_box").addClass("on_scroll_img"); } } //그림샘플 이미지 선택시 문자 내용에 입력 처리 function myMsgImageControl(imgSrc, editYn, imageName, imgId) { var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수 var imgSrc = imgSrc; if(imgCnt >= 3){ alert("이미지는 3장만 선택할 수 있습니다."); return false; } $('.preShort').hide(); $('.prePhoto').show(); if($('.msg_com').hasClass("msg_short") === true){ $('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고 $('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입 $('.put_left').removeClass("short"); $('.put_left').addClass("photo"); $('.msg_com').html("그림"); $('#msgType').val("6"); // 메세지 타입 설정 //제목 입력 항목 활성화 //document.getElementById("mmsSubject").disabled = false; }else{ $('.msg_com').removeClass("msg_long"); //장문 클래스 삭제하고 $('.msg_com').addClass("msg_photo"); // 그림문자용 클래스 삽입 $('.put_left').removeClass("long"); $('.put_left').addClass("photo"); $('.msg_com').html("그림"); $('#msgType').val("6"); // 메세지 타입 설정 //제목 입력 항목 활성화 //document.getElementById("mmsSubject").disabled = false; } //이미지 카운트 증가시키기 //imgCnt ++; $("#imgCnt").val(Number(imgCnt)+1); //문자 내용 상단에 이미지 이름 영역 객체 추가해주기 var imgPath = '<img src="' + imgSrc + '" class="thumb_img '+ editYn +'" alt="thumb1"/>'; var liPath = '<li class="delLi '+imageName+'" id="delLi'+ imgCnt +'">' + '<div>'+ imgPath+ '</div>' + '<button type="button" class="file_close"><img src="/publish/images/content/thumb_del.png" alt="첨부파일 삭제"></button>' + '<button type="button" class="file_close_on"><img src="/publish/images/content/thumb_del_on.png" alt="첨부파일 삭제"></button>' + '</li>'; /* "<li class=\"delLi\"><p>" + imgPath + "</p><button type=\"button\" class=\"file_close\"><img class=\"delImg\" src=\"/publish/images/content/file_close.png\" alt=\"첨부파일 삭제\"></button></li>" */ $('.liOnImg').append(liPath); //미리보기 보여주기 $('.preiew_img').show(); var imgHtml = ""; var imgPath = "<div class=\"img_box preBoxF\" id=preBoxF"+ imgCnt +"><img src=\"" + imgSrc + "\" /></div>"; if($("#imgCnt").val() == 1){ $('.preViewShort').append(imgPath); $('.photo_num_01').show(); $('.photo_num_02').hide(); $('.photo_num_03').hide(); //$(".thumb_wrap li:eq(0)").addClass("on"); }else if($("#imgCnt").val() == 2){ $('.preViewShort').append(imgPath); $('.photo_num_02').show(); $(".thumb_wrap li").removeClass("on"); //$(".thumb_wrap li:eq(1)").addClass("on"); }else if($("#imgCnt").val() == 3){ $('.preViewShort').append(imgPath); $('.photo_num_03').show(); $(".thumb_wrap li").removeClass("on"); //$(".thumb_wrap li:eq(2)").addClass("on"); } // 배열에 선택한 이미지 경로 저장해주기 imgFilePath.push(imgSrc); // 배열에 선택한 이미지 아이디 저장해주기 - 내 문자 보관함 저장용으로 사용 if(typeof(imgId) != 'undefined' && imgId != null){ imgFileId.push(imgId); } //문자 길이 및 타입 변경해주기 var contents = $('#smsTxtArea').val(); fnByteString(contents); var scrollHei = $(".mCustomScrollBox").height(); if(scrollHei > 488) { $(".img_box").addClass("on_scroll_img"); } } $(document).on('click', '.symbolButton, .changeWord', function (){ //var smsTxtArea = $('#smsTxtArea').val(); //$('#smsTxtArea').val(smsTxtArea + $(this).attr("value")); // 커서 위치에 삽입 setCursorInsertText("smsTxtArea", $(this).attr("value")); fnByteString($('#smsTxtArea').val()); }); $(document).on('click', '#recommBtn', function(){ var recommId = $('#recommId').val(); if(recommId == ''){ alert("추천인 ID를 입력해 주세요."); return false; } var data = new FormData(document.msgForm); var url = "/web/mjon/msgdata/selectRecommIdCheckAjax.do"; $.ajax({ type: "POST", enctype: 'multipart/form-data', url: url, data: data, dataType:'json', async: false, processData: false, contentType: false, cache: false, //timeout: 600000, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if(returnData.status == "success"){ alert("추천인 아이디가 확인 되었습니다."); return false; }else{ alert("존재하지 않는 추천인 아이디 입니다."); return false; } } else if(status== 'fail'){ alert("추천인 확인에 실패하였습니다. !!"); } }, error: function (e) { alert("추천인 확인에 실패하였습니다."); console.log("ERROR : ", e); } }); }); //문자발송 받는사람 목록 주소록에 등록하기 기능 처리 $('.registAddr').click(function(){ var tableData = tableL.getRows(); var dataLen = tableL.getRows().length; var nameList = []; //치환문자 이름 var phoneNum = []; //받는사람 var rep1List = []; //치환문자1 var rep2List = []; //치환문자2 var rep3List = []; //치환문자3 var rep4List = []; //치환문자4 if(dataLen > 0){ for(var i=0; i < dataLen; i++){ var name = tableData[i].getData().name; var phone = removeDash(tableData[i].getData().phone); var rep1 = tableData[i].getData().rep1; var rep2 = tableData[i].getData().rep2; var rep3 = tableData[i].getData().rep3; var rep4 = tableData[i].getData().rep4; if(phone == "" || phone == null){ alert("수신 목록에 핸드폰 번호가 없는 항목이 있습니다."); return false; }else if(!checkHpNum(phone)){ alert("수신 목록에 잘 못된 핸드폰 번호가 있습니다. 핸드폰 번호 : " + phone + " 입니다."); return false; } nameList[i] = name; phoneNum[i] = phone; if(rep1 == "" || rep1 == null){ rep1List[i] = "-"; }else{ rep1List[i] = rep1; } if(rep2 == "" || rep2 == null){ rep2List[i] = "-"; }else{ rep2List[i] = rep2; } if(rep3 == "" || rep3 == null){ rep3List[i] = "-"; }else{ rep3List[i] = rep3; } if(rep4 == "" || rep4 == null){ rep4List[i] = "-"; }else{ rep4List[i] = rep4; } /* if(name == "" || name == null){ alert("수신 목록에 이름이 없는 항목이 있습니다. 이름을 입력해 주세요"); return false; }else{ nameList[i] = name; phoneNum[i] = phone; if(rep1 == "" || rep1 == null){ rep1List[i] = "-"; }else{ rep1List[i] = rep1; } if(rep2 == "" || rep2 == null){ rep2List[i] = "-"; }else{ rep2List[i] = rep2; } if(rep3 == "" || rep3 == null){ rep3List[i] = "-"; }else{ rep3List[i] = rep3; } if(rep4 == "" || rep4 == null){ rep4List[i] = "-"; }else{ rep4List[i] = rep4; } } */ } //주소록 정보를 Form에 넣어준다. var form = document.msgForm; form.callToList.value = phoneNum; form.nameList.value = nameList; form.rep1List.value = rep1List; form.rep2List.value = rep2List; form.rep3List.value = rep3List; form.rep4List.value = rep4List; form.addrGrpId.value = $("#addrGrpIdInfo").val(); form.addrGrpNm.value = $("#addrGrpNm").val(); if ($("#addrGrpIdInfo option:selected").val() == "NEW" && ($("#addrGrpNm").val() == "" || $("#addrGrpNm").val() == null || $("#addrGrpNm").val() == undefined)) { alert("저장할 그룹을 선택하거나 새 그룹명을 입력해주세요."); return false; }else if ($("#addrGrpIdInfo option:selected").val() == "NEW" && $("#addrGrpNm").val() != "") { //주소록 중복체크 if (getAddrGroupDuplCheckAjax() == false) { alert("중복된 그룹명입니다. 새 그룹명을 입력해주세요."); return false; } } if(confirm("연락처 정보를 주소록에 등록 하시겠습니까?")){ var data = new FormData(form); var url = "/web/mjon/msgdata/insertMsgAddrListAjax.do"; $.ajax({ type: "POST", enctype: 'multipart/form-data', url: url, data: data, dataType:'json', async: true, processData: false, contentType: false, cache: false, //timeout: 600000, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if(returnData.result == "success"){ var alertMsg = "총 " + returnData.resultCnt + "건의 " +returnData.message; if(returnData.dupliCnt > 0) { alertMsg += "\n"+numberWithCommas(returnData.dupliCnt) + "건은 이미 등록되어있는 번호입니다."; } alert(alertMsg); $("#addrGrpNm").val(""); $('.addressregi_layer').attr('style',''); $('.mask').removeClass('on'); return false; }else if(returnData.result == "allDupl") { alert("요청하신 "+returnData.dupliCnt+"건의 번호가 주소록에 이미 등록되어있습니다."); $("#addrGrpNm").val(""); $('.addressregi_layer').attr('style',''); $('.mask').removeClass('on'); return false; }else{ alert(returnData.message); $("#addrGrpNm").val(""); $('.addressregi_layer').attr('style',''); $('.mask').removeClass('on'); return false; } } else if(status== 'fail'){ alert("주소록 등록에 실패하였습니다. !!"); } }, error: function (e) { alert("주소록 등록에 실패하였습니다."); console.log("ERROR : ", e); }, beforeSend : function(xmlHttpRequest) { //로딩창 show $('.loading_layer').addClass('active'); }, complete : function(xhr, textStatus) { //로딩창 hide $('.loading_layer').removeClass('active'); } }); } }else{ alert("연락처 정보를 등록해 주세요."); return false; } }); //주소록 불러오기 그룹명 검색 기능처리 function fnAddrGrpSearch(){ var form = document.searchAddrGrpForm; form.searchKeyword.value = form.searchGrpKeyword.value; form.searchCondition.value = ""; var sendData = $(document.searchAddrGrpForm).serializeArray(); $("#addrGroupLoad").load("/web/mjon/msgdata/selectAddrGroupListAjax.do", sendData ,function(response, status, xhr){ //리스트 스크롤 처리해주기 $(".adr_pop_list").mCustomScrollbar({ axis: 'y', scrollbarPosition: "outside", theme: "dark", autoHideScrollbar: false }); }); } //주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기 function fnSelectAddrList(type,addrGrpId,item){ // 주소록 그룹 열림, 닫힘 폴더이미지 초기화 $(".adr_pop_list div p").each(function (index, item) { $(item).find("img").attr("src", "/publish/images/content/close_folder2.png"); $(item).find("img").attr("alt", "폴더 닫힘"); }); var form = document.searchAddrGrpForm; form.type.value = type; form.searchAddrGrpId.value = addrGrpId; form.searchKeyword.value = ""; form.searchCondition.value = form.searchAddrCondition.value; //왼쪽 그룹리스트의 그룸명을 선택시 검색어를 초기화해준다. form.searchAddrKeyword.value=""; /* $(item).toggleClass("open"); if ($(item).hasClass("open") === true) { $(item).find("img").attr("src", "/publish/images/content/open_folder2.png"); $(item).find("img").attr("alt", "폴더 열림"); } else { $(item).find("img").attr("src", "/publish/images/content/close_folder2.png"); $(item).find("img").attr("alt", "폴더 닫힘"); } */ $(item).find("img").attr("src", "/publish/images/content/open_folder2.png"); $(item).find("img").attr("alt", "폴더 열림"); loadAddrList(); } function fnAddrSearch(){ var form = document.searchAddrGrpForm; form.searchKeyword.value = form.searchAddrKeyword.value; form.searchCondition.value = form.searchAddrCondition.value; loadAddrList(); } function loadAddrList(){ /* serialize 를 사용할때는 processData, contentType 옵션 제가할것 */ var data = $("#searchAddrGrpForm").serialize(); var url = "/web/mjon/msgdata/selectMsgAddrListAjax.do"; $.ajax({ type: "POST", url: url, data: data, dataType:'json', async: false, cache: false, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if(returnData.result == "success"){ var addrList = returnData.resultAddrList; var tableData = []; if(addrList.length == 0){ alert("주소록 정보가 없습니다."); tableAddr.setData(tableData); return false; } //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. for(var i=0; i < addrList.length; i++){ tableData.push({addrGroupNm: addrList[i].addrGrpNm, addrPhone: removeDash(addrList[i].addrPhoneNo) , addrName: addrList[i].addrNm, addrRep1: addrList[i].addrInfo1, addrRep2: addrList[i].addrInfo2, addrRep3: addrList[i].addrInfo3, addrRep4: addrList[i].addrInfo4}); } //우측 주소록 리스트 Tabulator에 입력해주기 tableAddr.setData(tableData); }else{ alert(returnData.message); return false; } } else if(status== 'fail'){ alert("주소록 불러오기에 실패하였습니다. !!"); } }, error: function (e) { alert("주소록 불러오기에 실패하였습니다."); console.log("ERROR : ", e); } }); } //주소록 불러오기에서 수신자 리스트 추가해 주기 function addrToList(){ var selectedData = tableAddr.getSelectedRows(); var tableData = []; if(selectedData == "" || selectedData == null){ alert("주소록을 선택해 주세요."); return false; }else{ // 선택한 Row 데이터 저장해주기 for(var i=0; i < selectedData.length; i++){ //좌측 받는사람 리스트를 담아둔 배열에 데이터를 추가해 준다. tableData.push({phone: removeDash(selectedData[i].getData().addrPhone), name: selectedData[i].getData().addrName, rep1: selectedData[i].getData().addrRep1, rep2: selectedData[i].getData().addrRep2, rep3: selectedData[i].getData().addrRep3, rep4: selectedData[i].getData().addrRep4} ); } //선택한 데이터 받는사람 리스트에 추가해 주기 addPhoneInfo(tableData); $(".closeAddr").trigger("click"); //주소록 레이어 팝업의 Tabulator 데이터 지워주기 tableAddr.clearData(); } } //주소록 팝업 닫기 기능 function addrClose(){ $(".closeAddr").trigger("click"); //주소록 레이어 팝업의 Tabulator 데이터 지워주기 tableAddr.clearData(); } //내문자함 선택시 저장된 내용 문자 입력영역에 처리해주기 function fnMyMsgAdd(msgId){ var form = document.addMyMsgForm; form.msgId.value = msgId; form.pageType.value = "myMsg"; var url = "/web/mjon/msgdata/selectMsgAddInfoAjax.do"; var data = new FormData(document.addMyMsgForm); $.ajax({ type: "POST", url: url, data: data, dataType:'json', async: false, processData: false, contentType: false, cache: false, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if(returnData.result == "success"){ var msgData = returnData.resultMsgInfo; var fileData = returnData.resultMsgAddPhotoInfo; var smsTxt = msgData.smsTxt; var subject = msgData.subject; var fileId = ""; var filePath = ""; var len = fileData.length; //기존 내용 지워주기 //$(".btnReset").trigger("click"); $('.delLi').each(function(){ $(this).remove(); }); $('.preBoxF').each(function(){ $(this).remove(); }); $('#imgCnt').val(0); //기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기 imgFilePath = []; imgFileId = []; //내문자함 텍스트 내용 입력해주기 $('#smsTxtArea').val(smsTxt); //첨부 이미지가 있는경우 이미지 처리해주기 if(len > 0){ for(var i=0; i < len; i++){ var num = i + 1; var imgId = fileData[i].atchFileId; var imgSn = fileData[i].fileSn; var fileStreCours = fileData[i].fileStreCours; var streFileNm = fileData[i].streFileNm; var fileExtsn = fileData[i].fileExtsn; /* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */ var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn; myMsgImageControl(imgSrc, "edit_n", "Template", imgId); } fnByteString(smsTxt); }else{ fnByteString(smsTxt); } //내 문자함 가져오기에서 글자길이 계산을 다시한다. $("#smsTxtArea").trigger("keyup"); // 문자전송 상단으로 이동 var sendOfT=$('.send_top').offset().top; $('html,body').stop().animate({'scrollTop':sendOfT-60},250); }else{ alert("내문자함 내용을 불러오지 못하였습니다."); return false; } } else if(status== 'fail'){ alert("내문자함 내용 입력에 실패하였습니다. !!"); } }, error: function (e) { alert("내문자함 내용 입력에 실패하였습니다."); console.log("ERROR : ", e); } }); } //최초 문자샘플 탭 리스트 데이터 불러오기 //fnLetterListAjax(); /* 윈도우팝업 열기 */ function infoPop(pageUrl){ document.popForm.pageType.value = pageUrl; document.popForm.action = "/web/pop/infoPop.do"; document.popForm.method = "post"; if(pageUrl == "adrvertisement1"){ window.open("about:blank", 'infoPop', 'width=790, height=800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); }else{ window.open("about:blank", 'infoPop', 'width=790, height=300, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); } document.popForm.target = "infoPop"; document.popForm.submit(); } $(document).on('click', '.addressregi_btn', function() { var tableData = tableL.getRows(); var dataLen = tableL.getRows().length; if(dataLen == 0){ alert("연락처 정보를 등록해 주세요."); return false; }else{ $('.addressregi_layer').css({'width':'680px','display':'block','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); setTimeout(function(){ $('.addressregi_layer').css({'opacity':'1'}); },150); $('.mask').addClass('on'); getAddrGroupList(); } }); $(document).on('click', '.addressregi_layer .tooltip-close', function() { $('.addressregi_layer').attr('style',''); $("#addrGrpNm").val(""); }); $(document).on('change', '#addrGrpIdInfo', function() { if ($("#addrGrpIdInfo option:selected").val() != "NEW") { $("#addrGrpNm").val(""); // 새그룹명 Clear; } }); //주소록 그룹정보 불러오기 function getAddrGroupList() { $.ajax({ type : "POST", async : false, url : "/web/mjon/addr/addrGroupListAjax.do", data : {}, dataType:'json', success : function(data) { //alert(JSON.stringify(data.addrGroupList)); // Show Html getAddrGroupListShow(data.addrGroupList); }, error : function(xhr, status, error) { alert(error); return false; } }); } //Show Html function getAddrGroupListShow(jsonList) { var sHtml = ""; sHtml += "<option value='NEW'>그룹추가</option>"; sHtml += "<option value='0'>그룹미지정</option>"; sHtml += "<option value='bookmark'>자주보내는 번호</option>"; for (var j = 0; j < jsonList.length; j++) { sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>"; } $("#addrGrpIdInfo").html(sHtml); } //주소록 그룹 중복체크 function getAddrGroupDuplCheckAjax() { var isReturn = true; $.ajax({ url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />", type : 'POST', data : {"addrGrpNm" : $("#addrGrpNm").val()}, dataType:'json', async: false, // 동기 success : function(data, status){ if(data.isSuccess == true) { if(data.isDupl == true) { //alert("중복된 그룹명입니다."); isReturn = false; } } else { //alert("Message : " + msg); } }, error: function (e) { //alert("주소록 중복체크에 실패했습니다."); } }); return isReturn; } /* 테스트발송 열기 */ function fnTestSend(){ if(!checkConf()){ //문자온 conf-check alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요."); return false; } var msgForm = document.msgForm; var form = document.testSendForm; var loginVO = '${LoginVO}'; var spamStatus = false; var callFrom = $("#callFromList option:selected").val(); var adverYn = $("input[name='send_adYn']:checked").val(); //광고 체크여부 //로그인 체크 if(loginVO == "" || loginVO == null){ alert("문자발송 서비스는 로그인 후 이용 가능합니다."); return false; } //MJ_MSG_GROUP_DATA 누락데이터 체크 //if (getMsgGroupDataErrorCheck() == false) { // alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요."); // return false; //} //문자내용에 이모지가 있는지 체크 var strCont = msgForm.smsTxtArea.value; if(!emojiCheck(strCont)) return false; // 발신번호 체크 if(callFrom == ""){ alert("발신번호를 입력해 주세요."); return false; } //그림문자가 아닌데 본문 비어있는지 확인 if(imgFilePath.length == 0) { if(msgForm.smsTxtArea.value == "") { alert("문자 내용을 입력해 주세요."); return false; } }else{//문자내용에 스팸 단어 포함여부 체크 var spmData = new FormData(msgForm); url = "/web/mjon/msgdata/selectSpamTxtChkAjax.do"; $.ajax({ type: "POST", url: url, data: spmData, dataType:'json', async: false, processData: false, contentType: false, cache: false, success: function (returnData, status) { if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 if("fail" == returnData.result){ alert(returnData.message); return false; }else if("loginFail" == returnData.result){ alert(returnData.message); return false; }else if("spams" == returnData.result){ // var spmFilterTxt = returnData.spmFilterTxt; spamStatus = true; //alert("문자 내용에 \"" + spmFilterTxt + "\"의 스팸문자가 포함되어 있습니다."); alert("전송 문자내용 중 스팸문구로 의심되는 단어가 포함되어 있어 문자발송이 불가합니다.\n자세한 사항은 문자온 고객센터를 통해 문의주시기 바랍니다."); return false; } } else if(status== 'fail'){ alert(returnData.message); return false; } }, error: function (e) { alert("시스템 오류가 발생하였습니다."); console.log("ERROR : ", e); return false;} }); } //단문 장문 그림(몇장인지) 판별하기 - 발송금액 계산 if($('#nowMsgType').text() == "그림"){ msgType = 'P'; if(imgFilePath.length == 1) { form.eachPrice.value = '<c:out value="${picturePrice}" />'; } else if(imgFilePath.length == 2) { form.eachPrice.value = '<c:out value="${picture2Price}" />'; } else if(imgFilePath.length == 3) { form.eachPrice.value = '<c:out value="${picture3Price}" />'; } //제목 사용한 경우 if($("input[name=title_status]:checked").val() == 'Y') { form.mmsSubject.value = msgForm.mmsSubject.value; } else { form.mmsSubject.value = ""; //초기화 } }else if($('#nowMsgType').text() == "장문"){ msgType = 'L'; form.eachPrice.value = '<c:out value="${longPrice}" />'; //제목 사용한 경우 if($("input[name=title_status]:checked").val() == 'Y') { form.mmsSubject.value = msgForm.mmsSubject.value; } else { form.mmsSubject.value = ""; //초기화 } }else{ msgType = 'S'; form.eachPrice.value = '<c:out value="${shortPrice}" />'; form.mmsSubject.value = ""; // 장문/그림 제목 초기화 } form.msgType.value = msgType; /* var phoneIn = $(".send_right .phone").html(); //팝업으로 보내기 전에 realtime class 삭제 - 스크립트 제외 phoneIn = phoneIn.replace(' class="realtime"',""); form.msgpreview.value = phoneIn; */ //발신번호 세팅 form.callFrom.value = callFrom; //이미지 path 보내기 form.imgFilePath.value = imgFilePath; //광고 if(adverYn == 'Y'){ form.msgKind.value = "A"; }else{ form.msgKind.value = "N"; } form.action = "/web/pop/testSendPop.do"; form.method = "post"; window.open("about:blank", 'testSendPop', 'width=770, height=850, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); form.target = "testSendPop"; form.submit(); } </script> <div class="loading_layer"> <div class="loading_container"> <div class="bar"></div> <div class="text">Loading</div> </div> </div> <div class="tooltip-wrap"> <div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close"> <div class="popup_heading"> <p><span>전송내역</p> <button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in"> <!-- tab button --> <ul class="tabType6"> <li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li> <li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li> </ul><!--// tab button --> <!-- 최근 전송내역 --> <div class="history_cont hascont current"> <div class="histroy_trans latestMsgArea" id="latestMsgArea"> <ul id="latestMsgUl"> <c:choose> <c:when test="${not empty resultLatestMsgList}"> <c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status"> <li id="latestLi"> <input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>"> <label for="addrChk_${status.count}" class="label">최근 전송내역</label> <p><c:out value="${latestMsgList.callTo}"/></p> <button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> </li> </c:forEach> </c:when> <c:otherwise> <li> <p>최근 발송 내역이 없습니다.</p> </li> </c:otherwise> </c:choose> </ul> </div> <div class="popup_btn_wrap2 hisroy_btn"> <button type="button" id="latestAddPhone">선택추가</button> <button type="button" id="latestCancelPhone">선택취소</button> </div> </div><!--// 최근 전송내역 --> <!-- 자주보내는 번호 --> <div class="history_cont hascont"> <div class="histroy_trans" id="bookMarkMsgArea"> <ul id="bookMsgUl"> <c:choose> <c:when test="${not empty resultBookMarkMsgList}"> <c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status"> <li id="bookMarkLi"> <input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>"> <label for="addrChk_${status.count}" class="label">최근 전송내역</label> <p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p> <button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> </li> </c:forEach> </c:when> <c:otherwise> <li> <p>등록된 자주 보내는 번호 내역이 없습니다.</p> </li> </c:otherwise> </c:choose> </ul> </div> <div class="popup_btn_wrap2 hisroy_btn"> <button type="button" id="bookMarkAddPhone">선택추가</button> <button type="button" id="bookMarkCancelPhone">선택취소</button> </div> </div><!--// 자주보내는 번호 --> </div> </div> </div><!--// 전송내역 팝업 --> <!-- 엑셀 불러오기 --> <form id="excelForm" name="excelForm" method="post"> <div class="tooltip-wrap"> <div class="popup-com import_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close"> <div class="popup_heading"> <p><span>엑셀</span> 불러오기</p> <button type="button" class="tooltip-close" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in"> <!-- 엑셀파일 불러오기 --> <div class="hascont"> <div class="titBox"> <p>- 최대 2만 건까지 등록할 수 있습니다.</p> <p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> <p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p> <p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. </p> <!-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --> <button type="button" class="excel_btn" onclick="location.href='/download/msg/엑셀주소록_등록양식.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button> </div> <div class="attachedFile"> <label for="" class="attachedFile_label">첨부파일</label> <input type="text" id="excelNm" readonly> <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport(event); return false;" style="display:none"/> <button type="button" class="btnType btnType6 c3">찾아보기</button> <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> </div> </div><!--// 엑셀파일 불러오기 --> <div class="popup_btn_wrap2"> <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" id="excelAdd">추가</button> <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02">닫기</button> </div> </div> </div> </div><!--// 엑셀 불러오기 --> </form> <!-- 이미지첨부 불러오기 시작--> <form id="imgForm" name="imgForm" method="post"> <div class="tooltip-wrap"> <div class="popup-com import_layer popupImg" tabindex="0" data-tooltip-con="popupImg" data-focus="popupImg" data-focus-prev="popupImg-close"> <div class="popup_heading"> <p><span>이미지</span> 불러오기</p> <button type="button" class="tooltip-close" data-focus="popupImg-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in"> <!-- 첨부파일 불러오기 --> <div class="hascont"> <div class="titBox"> <p>- 첨부할 이미지를 불러옵니다.(지원하는 파일 형식 : jpg, jpeg)</p> <p>- 이미지 권장 사이즈 : 640 X 960픽셀</p> <p>- 이미지가 권장 사이즈보다 큰 경우 자동 리사이징 처리되어 첨부됩니다.</p> <p>- 이미지 용량 : 300KB 이하</p> <p>- 이미지에 텍스트가 많은 경우 내용이 잘 보이지 않을 수 있습니다.</p> <p>- 문자발송 시 사전 테스트 발송 후 대량발송을 권장드립니다.</p> <p>- <span class="c_e40000">해상도 저하에 따른 캐시 환불 불가</span></p> </div> <div class="attachedFile"> <label for="" class="attachedFile_label">첨부파일</label> <input type="text" id="imgNm" readonly> <input type="file" id="imgFile" accept=".jpg, .jpeg" onchange="imgResizeInfo(event); return false;" style="display:none"/> <button type="button" class="btnType btnType6 upImg">찾아보기</button> <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 내용에 이미지가 등록됩니다.</p> </div> </div><!--// 첨부파일 불러오기 --> <div class="popup_btn_wrap2"> <button type="button" class="tooltip-close" data-focus="popupImg-close" data-focus-next="popupImg" id="imgAdd" onclick="imgExport(event); return false;">이미지 등록</button> <button type="button" class="tooltip-close closeResizeImg" data-focus="popupImg-close" data-focus-next="popupImg">닫기</button> </div> </div> </div> </div> </form> <!--// 이미지 첨부 불러오기 끝 --> <!-- 주소록 불러오기 --> <div class="tooltip-wrap"> <div class="popup-com import_layer popup06" tabindex="0" data-tooltip-con="popup06" data-focus="popup06" data-focus-prev="popup06-close" style="width: 1000px"> <div class="popup_heading"> <p><span>주소록 불러오기</p> <button type="button" onClick="javascript:addrClose(); return false;"> <img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in"> <div class="titBox titBox_pad"> <p>- 주소록 수정 및 변경은 <span>[주소록 관리]</span>에서만 가능합니다.</p> <button type="button" class="adr_admin" onClick="location.href='/web/mjon/addr/selectAddrList.do'">주소록 관리</button> </div> <div class="adr_wrap"> <form id="searchAddrGrpForm" name="searchAddrGrpForm" method="post" style="display: flex; justify-content: space-between;"> <input type="hidden" id="searchAddrGrpId" name="searchAddrGrpId" value=""/> <input type="hidden" id="type" name="type" value="all"/> <input type="hidden" id="searchKeyword" name="searchKeyword" value=""/> <input type="hidden" name="searchCondition" id="searchCondition" value="0" /> <div class="adr_pop_left"> <div class="adr_left_search"> <label for="searchKeyword" class="label">그룹명 검색</label> <input type="text" name="searchGrpKeyword" id="searchGrpKeyword" placeholder="그룹명 검색" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명 검색'" class="inputLight"> <button type="button" onClick="javascrit:fnAddrGrpSearch(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button> </div> <div class="adr_pop_box"> <div id="addrGroupLoad"> </div> </div> <!-- <div class="popup_btn"> <button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button> </div> --> </div> <div class="adr_pop_right"> <div class="clearfix"> <div class="btnWrap_last"> <label for="searchAddrCondition" class="label">카테고리 선택</label> <select id="searchAddrCondition" name="searchAddrCondition" class="selType2"> <option value='0'>전체</option> <option value='1'>그룹명</option> <option value='2'>이름</option> <option value='3'>핸드폰번호</option> </select> <label for="searchAddrKeyword" class="label">검색어 입력</label> <input type="text" id="searchAddrKeyword" name="searchAddrKeyword" placeholder="검색어를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요'" > <button type="button" class="btnType btnType17" onClick="javascrit:fnAddrSearch(); return false;">검색</button> </div> <!-- table --> <div class="adr_excel adr_pop_list2 callAddr_box"> </div> <!--// table --> </div> <div class="popup_btn_wrap2"> <button type="button" onClick="javascript:addrToList(); return false;">추가</button> <button type="button" onClick="javascript:addrClose(); return false;">닫기</button> </div> <%-- 주소록 레이어 팝업 닫기 실행 코드 --%> <input type="hidden" name="btnAddrClose" id="btnAddrClose" class="tooltip-close closeAddr" data-focus="popup06-close" /> </div> </form> </div> </div> </div> </div><!--// 주소록 불러오기 --> <!-- 주소록에 등록 data-tooltip:duplication_layer --> <div class="tooltip-wrap"> <div class="popup-com addressregi_layer" tabindex="0" data-tooltip-con="addressregi_layer" data-focus="addressregi_layer" data-focus-prev="addressregi_layer-close" style="width: 680px;"> <div class="popup_heading"> <p>주소록에 등록</p> <button type="button" class="tooltip-close" data-focus="addressregi_layer-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in" style="padding: 30px 20px;"> <table class="layer_tType1"> <caption>주소록 그룹선택 표</caption> <colgroup> <col style="width: 95px"> <col style="width: auto"> </colgroup> <tbody> <tr> <th>그룹 선택</th> <td> <label for="" class="label">그룹 선택</label> <select id="addrGrpIdInfo" name="addrGrpIdInfo"> </select> <label for="" class="label">그룹명 입력</label> <input type="text" id="addrGrpNm" name="addrGrpNm" placeholder="새 그룹명을 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명을 입력해주세요.'"class="inputLight" style="width: 300px;"> <input type="file" id="excelFile" accept=".xls, .xlsx, .txt" onchange="excelExport(event); return false;" style="display:none"/> </td> </tr> </tbody> </table> <div class="popup_btn_wrap2"> <button type="button" class="registAddr">등록</button> <button type="button" class="tooltip-close" data-focus="addressregi_layer-close" data-focus-next="addressregi_layer">닫기</button> </div> </div> </div> </div> <!--// 주소록에 등록 팝업 --> <!-- 이벤트 잔여 캐시로 발송 가능한 문자 건수 정보 --> <%-- <div class="tooltip-wrap"> <div class="popup-com import_layer popupEventSendInfo" tabindex="0" data-tooltip-con="popupEventSendInfo" data-focus="popupEventSendInfo" data-focus-prev="popupEventSendInfo-close"> <div class="popup_heading"> <p>이벤트 캐시 전송 가능 건수</p> <button type="button" class="tooltip-close" data-focus="popupEventSendInfo-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in"> <!-- 발송 건수 정보 표시 --> <div class="hascont"> <div class="titBox"> <p> 첫 결제 이벤트 잔액(캐시) : <fmt:formatNumber value="${eventRemainCash}" pattern="#,###.#"/> 원</p> <p id="evnShortMsg">단문(<fmt:formatNumber value="${eventMberInfo.eventShortPrice}" pattern="#,###.#"/>) : <fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventShortPrice) - ((eventRemainCash / eventMberInfo.eventShortPrice) % 1) }" pattern="#,###"/> 건</p> <p id="evnShortMsg">장문(<fmt:formatNumber value="${eventMberInfo.eventLongPrice}" pattern="#,###.#"/>) : <fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventLongPrice) - ((eventRemainCash / eventMberInfo.eventLongPrice) % 1)}" pattern="#,###"/> 건</p> <p id="evnShortMsg">그림 1장(<fmt:formatNumber value="${eventMberInfo.eventPicturePrice}" pattern="#,###.#"/>) : <fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicturePrice) - ((eventRemainCash / eventMberInfo.eventPicturePrice) % 1)}" pattern="#,###"/> 건</p> <p id="evnShortMsg">그림 2장(<fmt:formatNumber value="${eventMberInfo.eventPicture2Price}" pattern="#,###.#"/>) : <fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture2Price) - ((eventRemainCash / eventMberInfo.eventPicture2Price) % 1)}" pattern="#,###"/> 건</p> <p id="evnShortMsg">그림 3장(<fmt:formatNumber value="${eventMberInfo.eventPicture3Price}" pattern="#,###.#"/>) : <fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture3Price) - ((eventRemainCash / eventMberInfo.eventPicture3Price) % 1)}" pattern="#,###"/> 건</p> </div> </div><!--// 발송 건수 정보 표시 --> <div class="popup_btn_wrap2"> <button type="button" class="tooltip-close closePopupEventSendInfo" data-focus="popupEventSendInfo-close" data-focus-next="popupEventSendInfo">닫기</button> </div> </div> </div> </div> --%> <!-- 이벤트 잔여 캐시 정보 표시 팝업 --> <div class="tooltip-wrap"> <div class="popup-com event_cash_popup popup07" tabindex="0" data-tooltip-con="popup07" data-focus="popup07" data-focus-prev="popup07-close"> <div class="popup_heading"> <p>이벤트 잔액</p> <button type="button" class="tooltip-close" data-focus="popup07-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> </div> <div class="layer_in"> <div class="table_wrap"> <div class="table_top"> <p class="popup_title_18">첫 결제 이벤트 잔액(캐시)</p> <p><span class="c_e40000 fwBold"><fmt:formatNumber value="${eventRemainCash}" pattern="#,###.#"/></span>원</p> </div> <table class="popup_table_type2"> <colgroup> <col style="width: 25%;"> <col style="width: auto;"> </colgroup> <tbody> <tr> <th>단문(<fmt:formatNumber value="${eventMberInfo.eventShortPrice}" pattern="#,###.#"/>)</th> <td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventShortPrice) - ((eventRemainCash / eventMberInfo.eventShortPrice) % 1) }" pattern="#,###"/></span>건</td> </tr> <tr> <th>장문(<fmt:formatNumber value="${eventMberInfo.eventLongPrice}" pattern="#,###.#"/>)</th> <td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventLongPrice) - ((eventRemainCash / eventMberInfo.eventLongPrice) % 1)}" pattern="#,###"/></span>건</td> </tr> <tr> <th>그림 1장(<fmt:formatNumber value="${eventMberInfo.eventPicturePrice}" pattern="#,###.#"/>)</th> <td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicturePrice) - ((eventRemainCash / eventMberInfo.eventPicturePrice) % 1)}" pattern="#,###"/></span>건</td> </tr> <tr> <th>그림 2장(<fmt:formatNumber value="${eventMberInfo.eventPicture2Price}" pattern="#,###.#"/>)</th> <td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture2Price) - ((eventRemainCash / eventMberInfo.eventPicture2Price) % 1)}" pattern="#,###"/></span>건</td> </tr> <tr> <th>그림 3장(<fmt:formatNumber value="${eventMberInfo.eventPicture3Price}" pattern="#,###.#"/>)</th> <td><span class="c_002c9a fwBold"><fmt:formatNumber value="${(eventRemainCash / eventMberInfo.eventPicture3Price) - ((eventRemainCash / eventMberInfo.eventPicture3Price) % 1)}" pattern="#,###"/></span>건</td> </tr> </tbody> </table> </div> <div class="popup_btn_wrap2"> <button type="button" class="tooltip-close" data-focus="popup07-close" data-focus-next="popup07">닫기</button> </div> </div> </div> </div> <form id="msgForm" name="msgForm" method="post"> <input type="hidden" id="msgType" name="msgType" value="4" /><!-- 문자 종류 : 단문 - 4, 장문/그림 - 6 --> <input type="hidden" id="imgFilePath" name="imgFilePath" value="" /><!-- 선택 이미지 파일 경로 정보 , 로 구분 최대 3장까지 --> <input type="hidden" id="imgFileId" name="imgFileId" value="" /><!-- 선택 이미지 파일 아이디 정보 , 로 구분 최대 3장까지 --> <input type="hidden" id="fileCnt" name="fileCnt" value="0" /><!-- 첨부파일 추가 갯수 --> <input type="hidden" id="callToList" name="callToList" value=""/><!-- 수신자 전화번호 리스트 --> <input type="hidden" id="callFrom" name="callFrom" value=""/> <!-- 발신자 전화번호 --> <input type="hidden" id="eachPrice" name="eachPrice" value="0"/> <!-- 문자 개별 단가 금액 --> <input type="hidden" id="totPrice" name="totPrice" value="0"/> <!-- 총 결제 금액 --> <input type="hidden" id="smsLen" name="smsLen" value="0"/> <!-- 문자 길이 정보 --> <input type="hidden" id="reserveYn" name="reserveYn" value="N"/> <!-- 즉시/예약 선택여부 --> <input type="hidden" id="reqDate" name="reqDate" value=""/> <!-- 예약문자 날짜 --> <input type="hidden" id="imgCnt" value="0" /> <input type="hidden" id="smsTxt" name="smsTxt" value=""/><!-- 문자발송 문자 내용 --> <input type="hidden" id="nameList" name="nameList" value=""/><!-- 문자발송 문자 이름 리스트 --> <input type="hidden" id="rep1List" name="rep1List" value=""/><!-- 문자발송 문자 치환1 리스트 --> <input type="hidden" id="rep2List" name="rep2List" value=""/><!-- 문자발송 문자 치환2 리스트 --> <input type="hidden" id="rep3List" name="rep3List" value=""/><!-- 문자발송 문자 치환3 리스트 --> <input type="hidden" id="rep4List" name="rep4List" value=""/><!-- 문자발송 문자 치환4 리스트 --> <input type="hidden" name="templateYn" /> <input type="hidden" id="sPrice" name="sPrice" value="<c:out value="${shortPrice}"/>"/><!-- 단문문자 단가 --> <input type="hidden" id="mPrice" name="mPrice" value="<c:out value="${longPrice}"/>"/><!-- 장문문자 단가 --> <input type="hidden" id="pPrice" name="pPrice" value="<c:out value="${picturePrice}"/>"/><!-- 그림문자 단가 --> <input type="hidden" id="p2Price" name="p2Price" value="<c:out value="${picture2Price}"/>"/><!-- 그림2장문자 단가 --> <input type="hidden" id="p3Price" name="p3Price" value="<c:out value="${picture3Price}"/>"/><!-- 그림3장문자 단가 --> <input type="hidden" id="myPrice" name="myPrice" value="<c:out value="${userMoney}"/>"/><!-- 보유 캐시금액 --> <input type="hidden" id="msgKind" name="msgKind" value="N"/><!-- 문자종류 일반:N , 광고:A , 선거:C --> <input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/><!-- 변환문자 유무 --> <input type="hidden" id="shortMsgCnt" name="shortMsgCnt" value="0"/><!-- 단문 변환문자 건수 --> <input type="hidden" id="longMsgCnt" name="longMsgCnt" value="0"/><!-- 장문 변환문자 건수 --> <!-- 주소록 등록 --> <input type="hidden" id="addrGrpId" name="addrGrpId" value=""/> <input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/> <!-- 이벤트 관련 변수 --> <input type="hidden" id="eventStatus" name="eventStatus" value="<c:out value='${eventMberInfo.eventStatus}'/>"/> <input type="hidden" id="eventRemainCash" name="eventRemainCash" value="<c:out value='${eventRemainCash}'/>"/> <input type="hidden" id="eventYn" name="eventYn" value="N"/> <!-- 스팸문자 관련 변수 --> <input type="hidden" id="spamKeyword" name="spamKeyword"/> <input type="hidden" id="spamStatus" name="spamStatus"/> <input type="hidden" id="exceptSpamYn" name="exceptSpamYn" value="<c:out value='${exceptSpamYn}'/>"/> <!-- 이벤트 캐시 부족시 일반캐시로 계산을 위해 저장, 우영두 2023.03.28 --> <input type="hidden" id="norsPrice" name="norsPrice" value="<c:out value="${norShortPrice}"/>"/><!-- 단문문자 단가(이벤트 단가 제외) --> <input type="hidden" id="normPrice" name="normPrice" value="<c:out value="${norLongPrice}"/>"/><!-- 장문문자 단가(이벤트 단가 제외) --> <input type="hidden" id="norpPrice" name="norpPrice" value="<c:out value="${norPicturePrice}"/>"/><!-- 그림문자 단가(이벤트 단가 제외) --> <input type="hidden" id="norp2Price" name="norp2Price" value="<c:out value="${norPicture2Price}"/>"/><!-- 그림2장문자 단가(이벤트 단가 제외) --> <input type="hidden" id="norp3Price" name="norp3Price" value="<c:out value="${norPicture3Price}"/>"/><!-- 그림3장문자 단가(이벤트 단가 제외) --> <input type="hidden" id="evnPhoneNumCnt" name="evnPhoneNumCnt" value="0"/><!-- 치환 이벤트 발송 수신자 갯수 --> <input type="hidden" id="evnShortMsgCnt" name="evnShortMsgCnt" value="0"/><!-- 치환 이벤트 단문 건수 --> <input type="hidden" id="evnLongMsgCnt" name="evnLongMsgCnt" value="0"/><!-- 치환 이벤트 장문 건수 --> <!-- <div class="top_content current" id="tab1_1"> --> <div class="heading"> <h2>문자전송</h2> <button type="button" class="button info" onclick="infoPop('adrvertisement1');" style="right: 128px;">광고규정</button> <button type="button" class="button info" onclick="infoPop('selectMsgDataView1');">사용안내</button> </div> <div class="send_general"> <div class="send_left"> <%-- <dl class="myprice_view"> <dt>나의 요금제</dt> <dd> <ul> <li><span class="type">단문</span><span class="price"><c:out value="${shortPrice}"/></span>원</li> <li><span class="type">장문</span><span class="price"><c:out value="${longPrice}"/></span>원</li> <li><span class="type">그림</span><span class="price"><c:out value="${picturePrice}"/></span>원 <span class="count">(2장 : <c:out value="${picture2Price}"/>원 / 3장 : <c:out value="${picture3Price}"/>원)</span></li> </ul> </dd> </dl> --%> <table class="tType1"> <caption>일반 문자보내기 분류 번호 내용 등을 입력하는 표</caption> <colgroup> <col style="width: 100px;"> <col style="width: auto;"> </colgroup> <tbody> <tr> <th scope="row">문자분류</th> <td class="send_cf"> <input id="send_adYnN" type="radio"name="send_adYn" value="N" checked="checked"> <label for="send_adYnN">일반</label> <input id="send_adYnY" type="radio" name="send_adYn" value="Y"> <label for="send_adYnY">광고</label> </td> </tr> <tr> <th scope="row">발신번호</th> <td class="put_num"> <label for="callFrom" class="label"></label> <select id="callFromList" name="callFromList" class="sel_number"> <c:choose> <c:when test="${not empty resultPhonList}"> <c:forEach var="phonList" items="${resultPhonList}" varStatus="status"> <option value="${phonList}">${phonList}</option> </c:forEach> </c:when> <c:otherwise> <option value="">등록된 발신 번호가 없습니다.</option> </c:otherwise> </c:choose> </select> <button type="button" class="btnType btnType6" onclick="location.href='/web/user/sendNumberManage.do'">번호등록</button> </td> </tr> <tr class="msg_title"> <th scope="row">제목</th> <td> <ul class="title_wrap"> <li> <input id="title_y" type="radio"name="title_status" value="Y" onchange="titleStatus(this);"> <label for="title_y">사용</label> <input id="title_n" type="radio" name="title_status" value="N" onchange="titleStatus(this);" checked="checked"> <label for="title_n">사용안함</label> </li> <li class="textbox"> <label for="mmsSubject" class="label"></label> <input type="text" size="20" id="mmsSubject" name="mmsSubject" class="w100" maxlength="20" placeholder="" onfocus="this.placeholder=''" > </li> </ul> </td> </tr> <!-- 문자 내용 영역 --> <tr> <th scope="row" class="vTop">내용</th> <td class="putText"> <div class="clearfix"> <div class="put_left short"> <!-- 업로드한 이미지의 썸네일 영역 --> <ul class="thumb_wrap liOnImg"></ul> <!-- //업로드한 이미지의 썸네일 영역 --> <label for="smsTxtArea" class="label"></label> <textarea id="smsTxtArea" name="smsTxtArea" class="put_text"></textarea> <div class="text_length"> <div name="afterDeny"> <p> <span class="fwMd" id="msgLeng">0 /</span> <span class="c_002c9a fwMd" id="limitLeng"> 90</span>byte </p> <span class="msg_com msg_short">단문</span> </div> </div> </div> <div class="put_right"> <div class="btn_popup_wrap spc_wrap"> <button type="button" class="btnType btnType7" onclick="miniPopup(this);">특수문자</button> <div class="send_miniPop spc_character"> <div class="tab_character"> <a href="#none" class="on">특수문자</a> <a href="#none">웃음</a> <a href="#none">슬픔</a> <a href="#none">분노</a> <a href="#none">사랑</a> <a href="#none">그외</a> </div> <!-- 특수문자 부분 --> <div class="cnt_character on"> <div class="box_character"> <c:forEach var="symbolList" items="${symbolList}" varStatus="status"> <c:if test="${symbolList.symbolType == 'D'}"> <a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}"><c:out value="${symbolList.symbol}"/></a> </c:if> </c:forEach> </div> </div> <!-- 웃음 --> <div class="cnt_character emt_character"> <div class="box_character"> <c:forEach var="symbolList" items="${symbolList}" varStatus="status"> <c:if test="${symbolList.symbolType == 'S'}"> <a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a> </c:if> </c:forEach> </div> </div> <!-- //웃음 --> <!-- 슬픔 --> <div class="cnt_character emt_character"> <div class="box_character"> <c:forEach var="symbolList" items="${symbolList}" varStatus="status"> <c:if test="${symbolList.symbolType == 'C'}"> <a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a> </c:if> </c:forEach> </div> </div> <!-- //슬픔 --> <!-- 분노 --> <div class="cnt_character emt_character"> <div class="box_character"> <c:forEach var="symbolList" items="${symbolList}" varStatus="status"> <c:if test="${symbolList.symbolType == 'A'}"> <a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a> </c:if> </c:forEach> </div> </div> <!-- //분노 --> <!-- 사랑 --> <div class="cnt_character emt_character"> <div class="box_character"> <c:forEach var="symbolList" items="${symbolList}" varStatus="status"> <c:if test="${symbolList.symbolType == 'L'}"> <a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a> </c:if> </c:forEach> </div> </div> <!-- //사랑 --> <!-- 그외 --> <div class="cnt_character emt_character emt_etc "> <div class="box_character"> <c:forEach var="symbolList" items="${symbolList}" varStatus="status"> <c:if test="${symbolList.symbolType == 'E'}"> <a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a> </c:if> </c:forEach> </div> </div> <!-- //그외 --> <button type="button" class="btn_close" onclick="miniPopup(this);">닫기</button> </div> </div> <div class="btn_popup_wrap convers_wrap"> <button type="button" class="btnType btnType7" onclick="miniPopup(this)">특정문구 일괄변환<i class="qmMark"></i></button> <div class="send_miniPop convers"> <div> <div class="convers_top"> <span>특정문구 일괄변환이란?</span> <p>주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의<br> 메시지를 발송하는 기능</p> </div> <div class="convers_middle"><a href="javascript:void(0)" class="changeWord" value="[*이름*]">[*이름*]</a></div> <div class="convers_bottom"> <a href="javascript:void(0)" class="changeWord" value="[*1*]">[*1*]</a> <a href="javascript:void(0)" class="changeWord" value="[*2*]">[*2*]</a> <a href="javascript:void(0)" class="changeWord" value="[*3*]">[*3*]</a> <a href="javascript:void(0)" class="changeWord" value="[*4*]">[*4*]</a> </div> </div> <button type="button" class="btn_close" onclick="miniPopup(this);">닫기</button> </div> </div> <button type="button" class="btnType btnType7" onclick="javascript:fnGoMyMsg(); return false;">내문자함</button> <%-- <button type="button" data-tooltip="popupImg" class="btnType btnType7">이미지 첨부</button> --%> <button type="button" class="btnType btnType8" onclick="openPhotoEditor();">이미지 불러오기</button> <div class="send_btnWrap"> <button type="button" class="btnType btnType9" onclick="javascript:fn_saveMyMsg(); return false;">문자저장</button> <button type="button" class="btnType btnType9 btnReset">초기화</button> </div> </div> </div> <p>* 현재 [<span id="nowMsgType">단문</span>] <span class="c_e40000 fwBold nowMsgCnt">0</span>건 발송 가능합니다.</p> </td> </tr> <tr> <th scope="row" class="vTop">받는사람</th> <td class="putText"> <div class="clearfix receipt_num"> <div class="receipt_num_top"> <label for="callTo" class="label">받는 번호입력</label> <input type="text" id="callTo" name="callTo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="번호를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;"> <button type="button" class="btnType btnType6 addCallToF">번호추가</button> <span><span class="vMiddle">*</span> 중복번호는 한번만 발송됩니다.</span> </div> <div class="receipt_num_midde"> <div class="listType list01 callList_box" id="callList_box"> <div class="list_table list_head"> <div class="cb_wrap"> <label for="" class="label"></label> <input type="checkbox"> </div> <div class="list_table_num"> <p>번호</p> <img src="/publish/images/sortUp.png"> <img src="/publish/images/sortDown.png"> </div> <div class="list_table_name"> <p>이름</p> <img src="/publish/images/sortUp.png"> <img src="/publish/images/sortDown.png"> </div> </div> </div> <div class="put_right"> <div class="btn_popup_wrap spc_wrap"> <button type="button" data-tooltip="popup06" class="btnType btnType7 popupAddr">주소록 불러오기</button> </div> <div class="btn_popup_wrap"> <button type="button" data-tooltip="popup02" class="btnType btnType7">엑셀 불러오기</button> </div> <div class="btn_popup_wrap"> <button type="button" data-tooltip="popup03" class="btnType btnType7 tab1">최근 전송내역</button> </div> <div class="btn_popup_wrap"> <button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주 보내는 번호</button> </div> <div class="btn_popup_wrap check_validity_wrap"> <button type="button" class="btnType btnType7 check_validity">오류 검사 <i class="qmMark"></i></button> <div class="error_hover_cont send_hover_cont"> <p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p> <span>(예시) 010-1234-0001(O) / 010-123-0001(X)</span> </div> </div> </div> </div> <div class="list_bottom clearfix"> <div class="remove_btnWrap"> <button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button> <button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button> </div> <div class="list_bottom_right"> <p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p> <%--<button type="button" class="address_reg2 registAddr">주소록에 등록</button>--%> <button type="button" class="address_reg2 addressregi_btn">주소록에 등록</button> </div> </div> </div> </td> </tr> <tr> <th colspan="2" class="billingAmount"> <div> <div class="final_pay"> <div class="pay_info_list"> <p>발송금액 :</p> <div class="info" id="repPriceTxt"> 단문 : <strong>20</strong>건<span>/</span>장문 : <strong>150</strong>건<span>/</span>그림문자 : <strong>30</strong>건 </div> </div> <p class="price" ><span id="repPriceTxt"></span><span id="totalPriceTxt">0</span> 원<span></span></p> </div> <c:if test="${eventRemainCash > 0 && eventMberInfo.eventStatus eq 'Y'}"> <p style="text-align: right; font-size: 14px; color: #666; margin: -10px 0 15px 0; font-weight: 300;">* 이벤트회원의 발송금액은 이벤트단가를 적용하여 계산된 금액이므로 실제 발송금액과 다를 수 있습니다.</p> </c:if> <div class="pay_type clearfix"> <fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" /> <div> <input type="radio" id="radio_bill_1" name="radio_bill" checked="checked"> <label for="radio_bill_1">보유잔액</label> <%-- <label for="radio_bill_1">내 충전금 (<span id="spUserMoney"> <c:choose> <c:when test="${not empty userMoney}"> <c:out value="${commaPrice}"/> </c:when> <c:otherwise> 0 </c:otherwise> </c:choose> </span>원)</label> --%> <label for="userMoney" class="label">보유잔액</label> <input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly> <span class="won">원</span> <button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button> </div> <c:if test="${eventRemainCash > 0 && eventMberInfo.eventStatus eq 'Y'}"> <div><button type="button" data-tooltip="popup07" class="btnType btnType3 btn_event_cash">이벤트 잔액</button></div> </c:if> </div> </div> </th> </tr> <%-- <tr> <th scope="row">추천인 ID</th> <td class="check_num"> <input id="radio5" type="radio"name="recom" checked="checked"> <label for="radio5">없음</label> <input id="radio6" type="radio" name="recom"> <label for="radio6">있음</label> <div> <label for="recommId" class="label"></label> <input type="text" size="20" id="recommId" name="recommId" value="" placeholder="추천인 아이디 입력" onfocus="this.placeholder=''" onblur="this.placeholder='추천인 아이디 입력'"> <button type="button" class="btnType btnType9" id="recommBtn">추천인 확인</button> </div> </td> </tr> --%> </tbody> </table> </div> <div class="send_right"> <div class="phone"> <div class="phoneIn"> <div> <p><img src="/publish/images/search.png">미리보기</p> <div class="text_length2 clearfix preShort"> <span class="msg_com msg_short">단문</span> <div> <span>글자크기</span> <button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button> <button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button> </div> </div> <div class="text_length2 clearfix prePhoto"> <span class="msg_com msg_photo">포토</span> <ul class="photo_msg_num"> <li class="photo_num_01" onclick="imgClick(0);"><a href="#none">1</a></li> <li class="photo_num_02" onclick="imgClick(1);"><a href="#none">2</a></li> <li class="photo_num_03" onclick="imgClick(2);"><a href="#none">3</a></li> </ul> <div> <span>글자크기</span> <button type="button" class="fontPlus"><img src="/publish/images/content/font_plus.png"></button> <button type="button" class="fontMinus"><img src="/publish/images/content/font_minus.png"></button> </div> </div> <!-- 텍스트 미리보기 --> <div class="text_preview"> <div class="preiew_img preViewShort"></div> <div class="preview_auto"> <p class="none_txt">내용을 입력해주세요.</p> <pre class="realtime"></pre> </div> </div> <!-- //텍스트 미리보기 --> </div> </div> <p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p> </div> <div class="phone_bottom"> <div class="send_rev"> <div class="send_content"> <div class="rev_radio"> <ul> <li><input type="radio" id="reserYnN" name="reserYn" value="N" checked="checked"><label for="reserYnN">즉시</label></li> <li><input type="radio" id="reserYnY" name="reserYn" value="Y"><label for="reserYnY">예약</label></li> </ul> </div> <div class="send_btn"> <button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button> <button type="button" class="btnType btnType10" onclick="javascript:fnTestSend(); return false;">테스트발송</button> </div> </div> <div class="rev_selected"> <div class="rev_top"> <span>날짜 :</span> <div class="calendar_wrap"> <input type="text" class="startDate2 inp resDate calendar02" title="검색 시작일" id="startDate2" name="startDate2" value="" data-datecontrol="true"> </div> <label for="msgResHour" class="label">시 선택</label> <div class="selBox"> <select class="selType1" id="msgResHour" name="msgResHour"> <c:forEach var="hour" begin="0" end="23" step="1" varStatus="status"> <c:choose> <c:when test="${hour < 10}"> <option value="0${hour}">0${hour}시</option> </c:when> <c:otherwise> <option value="${hour}">${hour}시</option> </c:otherwise> </c:choose> </c:forEach> </select> <label for="msgResMin" class="label">분 선택</label> <select class="selType1" id="msgResMin" name="msgResMin"> <c:forEach var="min" begin="0" end="55" step="5"> <c:choose> <c:when test="${min < 10}"> <option value="0${min}">0${min}분</option> </c:when> <c:otherwise> <option value="${min}">${min}분</option> </c:otherwise> </c:choose> </c:forEach> </select> </div> </div> <div class="rev_bottom"> <input type="checkbox" id="divideChk" name="divideChk"> <label for="divideChk">분할전송</label> <select class="selType1" id="divideCnt" name="divideCnt"> <option value="2">2</option> <option value="10">10</option> <option value="20">20</option> <option value="30">30</option> </select> <label for="divideCnt">건</label> <select class="selType1" id="divideTime" name="divideTime"> <option value="5">05분</option> <option value="10">10분</option> <option value="15">15분</option> <option value="20">20분</option> <option value="30">30분</option> </select> <label for="divideTime">간격</label> </div> </div> </div> </div> </div> </div> <!-- </div> --><!--// tab content1 --> </form> <form id="latestMsgForm" name="latestMsgForm" method="post"> <input type="hidden" id="userId" name="userId" value="${LoginVO.id}"/> </form> <form id="addMyMsgForm" name="addMyMsgForm" method="post"> <input type="hidden" id="msgId" name="msgId" value=""/> <input type="hidden" id="pageType1" name="pageType" value=""/> </form> <form name="popForm" id="popForm" method="post"> <input type="hidden" id="pageType2" name="pageType" value=""/> </form> <form name="testSendForm" id="testSendForm" method="post"> <input type="hidden" name="msgKind" value=""/> <input type="hidden" name="msgpreview" value=""/> <input type="hidden" name="mmsSubject" value=""/> <input type="hidden" name="callFrom" value=""/> <input type="hidden" name="imgFilePath" value=""/> <input type="hidden" name="eachPrice" value=""/> <input type="hidden" name="msgType" value=""/> <input type="hidden" name="smsTxt" value=""/> </form>

          
        
    
    
Copyright Yona authors & © NAVER Corp. & NAVER LABS Supported by NAVER CLOUD PLATFORM

or
Sign in with github login with Google Sign in with Google
Reset password | Sign up