4532 lines
155 KiB
Plaintext
4532 lines
155 KiB
Plaintext
<%@ 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>
|
|
<!-- 주소록 유효성 체크 공통유틸로 인해 추가 -->
|
|
<script type="text/javascript" src="<c:url value='/js/web/addr/cmn.js?date=202409021440'/>"></script>
|
|
|
|
<% pageContext.setAttribute("newLineChar", "\r\n"); %>
|
|
<script type="text/javascript">
|
|
|
|
|
|
|
|
|
|
$(document).ready(function(){
|
|
|
|
|
|
// console.log(' + $(#tabDision).val() : ',$('#tabDision').val())
|
|
// if($('#tabDision').val() == 'tab02'){
|
|
// $('#send_adYnY').prop('checked', true); // 상태 변경 및 이벤트 발생
|
|
// advMsgInsert();
|
|
// }
|
|
|
|
//받는사람 연락처 내용 처리
|
|
//Tabulator AJAX Data Loading
|
|
tableL = new Tabulator(".callList_box", {
|
|
height:"255px",
|
|
layout:"fitColumns",
|
|
headerHozAlign:"center",
|
|
validationMode:"highlight",
|
|
placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional)
|
|
resizableColumns:false,
|
|
columnDefaults:{ // 공통설정
|
|
hozAlign: "center",
|
|
headerHozAlign: "center",
|
|
editor: "input",
|
|
editor: false
|
|
},
|
|
columns:[ //Define Table Columns
|
|
{formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
|
|
cell.getRow().toggleSelect();
|
|
}},
|
|
// {formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", field:"No", width:30},
|
|
{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
|
{title:"이름", field:"name", editor:false, validator:["maxLength:12"], cellEdited:function(cell){
|
|
fnReplCell_advc();
|
|
}},
|
|
{title:"휴대폰", field:"phone", width:100, editor:false, validator:["required","minLength:10", "maxLength:12"]},
|
|
{title:"[*1*]", field:"rep1", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
fnReplCell_advc();
|
|
}},
|
|
{title:"[*2*]", field:"rep2", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
fnReplCell_advc();
|
|
}},
|
|
{title:"[*3*]", field:"rep3", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
fnReplCell_advc();
|
|
}},
|
|
{title:"[*4*]", field:"rep4", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
fnReplCell_advc();
|
|
}},
|
|
|
|
],
|
|
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 초기화
|
|
tableAddr = new Tabulator(".callAddr_box", {
|
|
height: "255px",
|
|
layout: "fitData",
|
|
headerHozAlign: "center",
|
|
validationMode: "highlight",
|
|
resizableColumns: true,
|
|
progressiveLoad:"scroll",
|
|
progressiveRender: true, // 렌더링 최적화 활성화
|
|
progressiveRenderSize: 100, // 한 번에 렌더링할 행 수를 줄임
|
|
placeholder: "주소록 그룹을 선택해 주세요.",
|
|
columns: [
|
|
// {formatter: "rowSelection", clipboard: false, hozAlign: "center", headerSort: false},
|
|
{formatter: "rowSelection", titleFormatter: "rowSelection", hozAlign: "center", headerSort: false,
|
|
cellClick: function(e, cell) {
|
|
fn_loadAddActive(); // 로딩 활성화
|
|
setTimeout(() => {
|
|
tableAddr.blockRedraw(); // 렌더링 차단
|
|
cell.getRow().toggleSelect(); // 선택 상태 토글
|
|
tableAddr.restoreRedraw(); // 렌더링 재개
|
|
fn_loadRemoveActive(); // 로딩 비활성화
|
|
}, 0); // 비동기적으로 실행
|
|
}
|
|
},
|
|
{title: "No", hozAlign: "center", formatter: "rownum", align: "center", headerHozAlign: "center", width: 60},
|
|
{title: "그룹명", hozAlign: "center", field: "addrGroupNm", editor: false, width: 100},
|
|
{title: "이름", hozAlign: "center", field: "name", editor: false, width: 100},
|
|
{title: "휴대폰번호", hozAlign: "center", field: "phone", editor: false, width: 100},
|
|
{title: "[*1*]", hozAlign: "center", field: "rep1", editor: false, width: 84},
|
|
{title: "[*2*]", hozAlign: "center", field: "rep2", editor: false, width: 84},
|
|
{title: "[*3*]", hozAlign: "center", field: "rep3", editor: false, width: 84},
|
|
{title: "[*4*]", hozAlign: "center", field: "rep4", editor: false, width: 84},
|
|
],
|
|
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("");
|
|
}
|
|
console.log('parameters : ', parameters);
|
|
return value % parameters.addrPhone;
|
|
},
|
|
});
|
|
|
|
|
|
|
|
/*
|
|
* 20240823
|
|
* 미리보기 스크립트
|
|
*/
|
|
// 현재 위치
|
|
var currentIndex = 0;
|
|
|
|
// 제일 이전
|
|
$('#btnFirst').on('click', function(){
|
|
currentIndex = 0;
|
|
|
|
updateButtons(currentIndex );
|
|
fn_previewText(currentIndex);
|
|
});
|
|
|
|
// 이전
|
|
$('#btnPrev').on('click', function(){
|
|
|
|
if (currentIndex > 0) {
|
|
currentIndex--;
|
|
updateButtons(currentIndex );
|
|
fn_previewText(currentIndex);
|
|
}
|
|
});
|
|
|
|
|
|
// 다음
|
|
$('#btnNext').on('click', function(){
|
|
var dataLength = tableL.getData().length;
|
|
if (currentIndex < dataLength - 1) {
|
|
currentIndex++;
|
|
updateButtons(currentIndex );
|
|
fn_previewText(currentIndex);
|
|
}
|
|
});
|
|
|
|
// 제일 다음
|
|
$('#btnLast').on('click', function(){
|
|
var dataLength = tableL.getData().length;
|
|
currentIndex = dataLength - 1;
|
|
updateButtons(currentIndex );
|
|
fn_previewText(currentIndex);
|
|
});
|
|
|
|
updateButtons(currentIndex);
|
|
|
|
// 최근 전송내역
|
|
resultLatestMsgList();
|
|
//자주보내는 번호
|
|
resultBookMarkMsgList();
|
|
|
|
});
|
|
|
|
|
|
//최근 전송내역
|
|
function resultLatestMsgList(){
|
|
|
|
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"/web/mjon/msgdata/resultLatestMsgListAjax.do",
|
|
data:{},
|
|
dataType:'json',
|
|
// timeout:(1000*30),
|
|
success:function(data){
|
|
|
|
|
|
// 가져온 데이터 배열
|
|
let resultList = data.object;
|
|
let $latestMsgUl = $('#latestMsgUl'); // 기존 리스트 UL
|
|
|
|
// 기존 내용을 비우기
|
|
$latestMsgUl.empty();
|
|
|
|
// 데이터가 있는 경우
|
|
if (resultList && resultList.length > 0) {
|
|
resultList.forEach(function(item, index) {
|
|
let listItem =
|
|
'<li id="latestLi">' +
|
|
'<input type="checkbox" id="addrChk_' + (index + 1) + '" name="latAddrChk" value="' + item.callTo + '">' +
|
|
'<label for="addrChk_' + (index + 1) + '" class="label">최근 전송내역</label>' +
|
|
'<p>' + item.callTo + '</p>' +
|
|
'<button type="button" id="latestAddrDel">' +
|
|
'<img src="/publish/images/popup/close3.png" alt="전화번호 삭제">' +
|
|
'</button>' +
|
|
'</li>';
|
|
|
|
$latestMsgUl.append(listItem);
|
|
});
|
|
} else {
|
|
// 데이터가 없는 경우
|
|
$latestMsgUl.append('<li><p>최근 발송 내역이 없습니다.</p></li>');
|
|
}
|
|
},
|
|
error:function(request , status, error){
|
|
console.log(' error ?');
|
|
console.log('request : ', request);
|
|
console.log('status : ', status);
|
|
}
|
|
});
|
|
}
|
|
|
|
// 자주보내는 번호
|
|
function resultBookMarkMsgList(){
|
|
|
|
$.ajax({
|
|
type:"POST",
|
|
url:"/web/mjon/msgdata/resultBookMarkMsgList.do",
|
|
data:{},
|
|
dataType:'json',
|
|
// timeout:(1000*30),
|
|
success:function(data){
|
|
|
|
|
|
// 가져온 데이터 배열
|
|
let resultList = data.object;
|
|
let $bookMsgUl = $('#bookMsgUl'); // 기존 리스트 UL
|
|
|
|
// 기존 내용을 비우기
|
|
$bookMsgUl.empty();
|
|
|
|
// 데이터가 있는 경우
|
|
if (resultList && resultList.length > 0) {
|
|
resultList.forEach(function(item, index) {
|
|
// console.log(item.addrPhoneNo + " : " + item.addrPhoneNo);
|
|
let listItem =
|
|
'<li id="bookMarkLi">' +
|
|
'<input type="checkbox" id="bokAddrChk_' + (index + 1) + '" name="bookAddrChk" value="' + item.addrPhoneNo + '">' +
|
|
'<label for="bokAddrChk_' + (index + 1) + '" class="label">최근 전송내역</label>' +
|
|
'<p>' + item.addrPhoneNo + '</p>' +
|
|
'<button type="button" id="bookMarkAddrDel">' +
|
|
'<img src="/publish/images/popup/close3.png" alt="전화번호 삭제">' +
|
|
'</button>' +
|
|
'</li>';
|
|
|
|
$bookMsgUl.append(listItem);
|
|
});
|
|
} else {
|
|
// 데이터가 없는 경우
|
|
$bookMsgUl.append('<li><p>등록된 자주 보내는 번호 내역이 없습니다..</p></li>');
|
|
}
|
|
},
|
|
error:function(request , status, error){
|
|
console.log(' error ?');
|
|
console.log('request : ', request);
|
|
console.log('status : ', status);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
/*
|
|
* 버튼 disabled 스크립트
|
|
*/
|
|
function updateButtons(currentIndex ) {
|
|
|
|
|
|
var dataLength = tableL.getData().length;
|
|
// console.log('dataLength ', dataLength);
|
|
// console.log('currentIndex ', currentIndex);
|
|
|
|
|
|
if (currentIndex <= 0) {
|
|
$('#btnPrev').attr('disabled', true);
|
|
$('#btnFirst').attr('disabled', true);
|
|
} else {
|
|
$('#btnPrev').attr('disabled', false);
|
|
$('#btnFirst').attr('disabled', false);
|
|
}
|
|
|
|
if (currentIndex >= dataLength - 1) {
|
|
$('#btnNext').attr('disabled', true);
|
|
$('#btnLast').attr('disabled', true);
|
|
} else {
|
|
$('#btnNext').attr('disabled', false);
|
|
$('#btnLast').attr('disabled', false);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* 미리보기 데이터 치환
|
|
*/
|
|
function fn_previewText(rowIndex){
|
|
|
|
var smsText = $('#smsTxtArea').val()
|
|
// 데이터 가져오기
|
|
var data = tableL.getData();
|
|
|
|
// 특정 인덱스(예: 1)로 행을 선택하여 치환
|
|
var row = data[rowIndex]; // 인덱스 1의 행을 선택
|
|
|
|
|
|
// 이름 치환
|
|
smsText = smsText.replace(/\[\*이름\*\]/g, row.name !== undefined && row.name !== null ? row.name : '[*이름*]');
|
|
|
|
// rep1, rep2, rep3, rep4 치환
|
|
smsText = smsText.replace(/\[\*1\*\]/g, row.rep1 !== undefined && row.rep1 !== null ? row.rep1 : '[*1*]');
|
|
smsText = smsText.replace(/\[\*2\*\]/g, row.rep2 !== undefined && row.rep2 !== null ? row.rep2 : '[*2*]');
|
|
smsText = smsText.replace(/\[\*3\*\]/g, row.rep3 !== undefined && row.rep3 !== null ? row.rep3 : '[*3*]');
|
|
smsText = smsText.replace(/\[\*4\*\]/g, row.rep4 !== undefined && row.rep4 !== null ? row.rep4 : '[*4*]');
|
|
|
|
// 결과 출력 또는 다른 곳에 사용
|
|
console.log(smsText);
|
|
$('.realtime').text(smsText);
|
|
}
|
|
|
|
var tableErrorData = [];
|
|
var totRows = 0; // 좌측 받는사람 총 갯수
|
|
|
|
/* 파일등록 */
|
|
var _fileIdx = 0;
|
|
var _fileForm2 = new Array();
|
|
var fileExt = ""; // 첨부파일 확장자
|
|
var excelAddr = []; //엑셀 불러오기에서 내용 저장하는 배열 변수
|
|
|
|
//전체 데이터 갯수 구하는 함수
|
|
function updateTotCnt(data){
|
|
|
|
console.log(' :: updateTotCnt :: ');
|
|
var rowTotCnt = data;
|
|
$("#rowTotCnt").text(numberWithCommas(rowTotCnt));
|
|
|
|
}
|
|
|
|
|
|
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)); // 받는사람 목록에 주소 정보 입력하기
|
|
tableL.addData(getSpupDupliPhoneDataChk(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_advc();
|
|
|
|
}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_advc();
|
|
|
|
}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("");
|
|
}
|
|
|
|
// 발송금액 단가표시
|
|
function SetPriceWrapOpen() {
|
|
var loginVO = '${LoginVO}';
|
|
//로그인 체크
|
|
if(loginVO == "" || loginVO == null){
|
|
}
|
|
else {
|
|
// 발송금액 가격안내
|
|
$("#myPriceWrap").show();
|
|
}
|
|
}
|
|
|
|
//등급제 시행 ON/OFF 체크
|
|
function getMberSettingDetail() {
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/web/grd/mberSettDetailAjax.do",
|
|
data: {},
|
|
dataType:'json',
|
|
async: false,
|
|
success: function (data) {
|
|
if (data.isSuccess) {
|
|
// 발송금액 가격안내
|
|
$("#myPriceWrap").show();
|
|
}
|
|
else {
|
|
//alert("Msg : " + data.msg);
|
|
}
|
|
},
|
|
error: function (e) {
|
|
//alert("ERROR : " + JSON.stringify(e));
|
|
}
|
|
});
|
|
}
|
|
|
|
$(document).ready(function (){
|
|
// 발송금액 단가표시
|
|
SetPriceWrapOpen();
|
|
|
|
// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
|
|
var blineCodeYn = $("#blineCode").val();
|
|
if(blineCodeYn != 'N' && blineCodeYn != ''){
|
|
$('input[name="send_adYn"]').val(['Y']);
|
|
$(".send_adYnN").css('display', 'none');
|
|
// advMsgInsert();
|
|
}
|
|
|
|
//미리보기 이미지 영역 숨김 처리
|
|
$('.preiew_img').hide();
|
|
$('.prePhoto').hide();
|
|
|
|
//최초 화면 문자열 길이 체크해주기
|
|
var strCon = $('#smsTxtArea').val();
|
|
fnByteString(strCon);
|
|
|
|
//일반문자, 광고문자 텍스트 내용 추가해주기
|
|
$('input[name=send_adYn]').change(function(){
|
|
|
|
// advMsgInsert();
|
|
|
|
});
|
|
|
|
|
|
|
|
let debounceTimer;
|
|
//문자 내용 입력시 바이트수 계산하기
|
|
$('#smsTxtArea').keyup(function(e){
|
|
// console.log("11$('.preview_auto').test() :: ",$('.realtime').html())
|
|
// console.log("11$('.preview_auto').test() :: ",$('.realtime').text())
|
|
|
|
var contents = $(this).val();
|
|
clearTimeout(debounceTimer); // 기존 타이머를 초기화
|
|
debounceTimer = setTimeout(() => {
|
|
fnByteString(contents); // 일정 시간 후에만 문자 내용 처리 실행
|
|
}, 300); // 300ms 지연
|
|
});//문자 바이트수 계산하기 끝
|
|
|
|
|
|
//스프레드 시트 Tabulator 초기 셋팅
|
|
/* var tabledata = [
|
|
]; */
|
|
|
|
//var selectRow;
|
|
|
|
//핸드폰 번호 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) {
|
|
console.log(' :: callList _box :: ');
|
|
|
|
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_advc();
|
|
}else{
|
|
//결제 금액 구하기
|
|
totalPriceSum(totRows);
|
|
}
|
|
|
|
if (tableErrorData.length > 0) {
|
|
alert("올바르지 않은 휴대폰 번호가 "+ tableErrorData.length +" 건 있습니다.");
|
|
}
|
|
|
|
|
|
// 미리보기 버튼 활성화
|
|
updateButtons(0);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//받는사람 번호 버튼 클릭시 Tabulator에 데이터 넣어주기
|
|
$('.addCallToF').click(function(){
|
|
|
|
var textarea = $('#callTo');
|
|
if (textarea.val() == null || textarea.val() == "") {
|
|
alert("받는사람 번호를 입력해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
const numbers = textarea.val().split('\n')
|
|
.map(num => removeDash(num.trim()))
|
|
.filter(num => num !== "")
|
|
.filter(num => isValidPhoneNumber(num)); // 유효한 번호만 필터링;
|
|
|
|
console.log('numbers : ', numbers);
|
|
const addrData = processPhoneNumbers(numbers);
|
|
|
|
|
|
// 기존 tableL의 데이터를 가져옵니다.
|
|
var existingData = tableL.getData();
|
|
|
|
// 데이터 병합 및 중복 제거
|
|
const result = mergeAndValidateData(existingData, addrData);
|
|
|
|
|
|
// 테이블 데이터 업데이트
|
|
if (!updateTableData(tableL, result)) return false;
|
|
|
|
// textarea 초기화
|
|
textarea.val(''); // jQuery 객체에서 값을 초기화할 때는 .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("선택하신 받는 사람을 삭제하시겠습니까?")){
|
|
|
|
// 선택 데이터 삭제
|
|
selectedData.forEach(row => row.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_advc();
|
|
}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 numbers = []; //신규로 추가할 전화번호 저장변수
|
|
$("input:checkbox[name='latAddrChk']:checked").each(function(index){
|
|
var chkPhone = $(this).val();
|
|
if(!checkHpNum(chkPhone)){
|
|
alert("올바른 전화번호가 아닙니다.");
|
|
return false;
|
|
}else{
|
|
numbers.push(removeDash(chkPhone.trim()));
|
|
}
|
|
});
|
|
|
|
|
|
if(numbers.length < 1)
|
|
{
|
|
alert("연락처를 선택해주세요.");
|
|
return false;
|
|
}
|
|
|
|
|
|
fn_phoneAddProcess(tableL, numbers);
|
|
|
|
|
|
$("#btnLatestAddPhoneClose").trigger("click");
|
|
|
|
});
|
|
|
|
//최근전송내역 팝업 전체추가 버튼 처리
|
|
$(document).on('click', '#latestAddPhoneAll', function (){
|
|
var numbers = []; //신규로 추가할 전화번호 저장변수
|
|
$("input:checkbox[name='latAddrChk']").each(function(index){
|
|
var chkPhone = $(this).val();
|
|
if(!checkHpNum(chkPhone)){
|
|
alert("올바른 전화번호가 아닙니다.");
|
|
return false;
|
|
}else{
|
|
numbers.push(removeDash(chkPhone.trim()));
|
|
}
|
|
});
|
|
|
|
if(numbers.length < 1)
|
|
{
|
|
alert("연락처를 선택해주세요.");
|
|
return false;
|
|
}
|
|
|
|
|
|
fn_phoneAddProcess(tableL, numbers);
|
|
|
|
|
|
$("#btnLatestAddPhoneClose").trigger("click");
|
|
|
|
});
|
|
|
|
//최근전송내역 팝업 선택 취소 버튼 처리
|
|
$(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 numbers = []; //신규로 추가할 전화번호 저장변수
|
|
$("input:checkbox[name='bookAddrChk']:checked").each(function(index){
|
|
var chkPhone = $(this).val();
|
|
if(!checkHpNum(chkPhone)){
|
|
alert("올바른 전화번호가 아닙니다.");
|
|
return false;
|
|
}else{
|
|
numbers.push(removeDash(chkPhone.trim()));
|
|
}
|
|
});
|
|
|
|
if(numbers.length < 1)
|
|
{
|
|
alert("연락처를 선택해주세요.");
|
|
return false;
|
|
}
|
|
|
|
|
|
fn_phoneAddProcess(tableL, numbers);
|
|
|
|
|
|
$("#btnLatestAddPhoneClose").trigger("click");
|
|
});
|
|
|
|
//자주보내는 번호 팝업 전체추가 버튼 처리
|
|
$(document).on('click', '#bookMarkAddPhoneAll', function (){
|
|
var numbers = []; //신규로 추가할 전화번호 저장변수
|
|
$("input:checkbox[name='bookAddrChk']").each(function(index){
|
|
var chkPhone = $(this).val();
|
|
if(!checkHpNum(chkPhone)){
|
|
alert("올바른 전화번호가 아닙니다.");
|
|
return false;
|
|
}else{
|
|
numbers.push(removeDash(chkPhone.trim()));
|
|
}
|
|
});
|
|
|
|
|
|
if(numbers.length < 1)
|
|
{
|
|
alert("연락처를 선택해주세요.");
|
|
return false;
|
|
}
|
|
|
|
|
|
fn_phoneAddProcess(tableL, numbers);
|
|
|
|
|
|
$("#btnLatestAddPhoneClose").trigger("click");
|
|
|
|
});
|
|
|
|
//자주보내는 번호 팝업 선택 취소 버튼 처리
|
|
$(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_advc();
|
|
|
|
}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_advc();
|
|
|
|
}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);
|
|
|
|
// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
|
|
var blineCodeYn = $("#blineCode").val();
|
|
if(blineCodeYn != 'N' && blineCodeYn != ''){
|
|
$('input[name="send_adYn"]').val(['Y']);
|
|
$(".send_adYnN").css('display', 'none');
|
|
}
|
|
|
|
$('.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 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());
|
|
|
|
} */
|
|
|
|
//문자 바이트수 계산하기 함수
|
|
function fnByteString(contents){
|
|
console.log(' : fnByteString : ');
|
|
var totalByte = 0;
|
|
//var content = contents;
|
|
var adverYn = $('#send_adYn').val();
|
|
var adTxtLeng = 0;
|
|
var denyTxtLeng = 0;
|
|
var adverTxt = $('.ad_txt').html();
|
|
var denyTxt = $('.deny_txt').html();
|
|
totRows = tableL.getRows().length;
|
|
|
|
//광고문자 상단 문구 줄바꿈 처리하기(문자길이 바이트수 계산을 위해서)
|
|
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"){
|
|
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){
|
|
|
|
var fullContents = adverYn != "N" ? adverTxt + denyTxt + contents : contents;
|
|
var subUnderStr = strUnderLineSubstring(fullContents, 2000).replace(adverTxt, "").replace(denyTxt, "");
|
|
subUnderStr = subUnderStr.replace(adverTxt,"").replace(denyTxt, "");
|
|
// console.log('subUnderStr : ', subUnderStr)
|
|
|
|
|
|
$('#smsTxtArea').val(subUnderStr);
|
|
|
|
var contentLeng = conByteLeng(subUnderStr);
|
|
var totalLeng = adverYn != "N" ? contentLeng + adTxtLeng + denyTxtLeng : contentLeng;
|
|
|
|
// console.log('contentLeng : ', totalLeng);
|
|
$('#msgLeng').text(totalLeng + " / ");
|
|
$('#smsLen').val(contentLeng);
|
|
|
|
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();
|
|
fnReplCell_advc();
|
|
|
|
}else{
|
|
console.log('totRows : ', totRows);
|
|
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);
|
|
$(".thumb_wrap").removeClass("none");
|
|
|
|
//문자 내용 상단에 이미지 이름 영역 객체 추가해주기
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
phoneNum[i] = phone;
|
|
|
|
if(name == "" || name == null){
|
|
nameList[i] = "";
|
|
}else{
|
|
nameList[i] = name.replaceAll(",","§");
|
|
}
|
|
|
|
if(rep1 == "" || rep1 == null){
|
|
rep1List[i] = "-";
|
|
}else{
|
|
rep1List[i] = rep1.replaceAll(",","§");
|
|
}
|
|
|
|
if(rep2 == "" || rep2 == null){
|
|
rep2List[i] = "-";
|
|
}else{
|
|
rep2List[i] = rep2.replaceAll(",","§");
|
|
}
|
|
|
|
if(rep3 == "" || rep3 == null){
|
|
rep3List[i] = "-";
|
|
}else{
|
|
rep3List[i] = rep3.replaceAll(",","§");
|
|
}
|
|
|
|
if(rep4 == "" || rep4 == null){
|
|
rep4List[i] = "-";
|
|
}else{
|
|
rep4List[i] = rep4.replaceAll(",","§");
|
|
}
|
|
|
|
/* 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 를 사용할때는 processDa ta, contentType 옵션 제가할것
|
|
*/
|
|
var data = $("#searchAddrGrpForm").serialize();
|
|
|
|
var url = "/web/mjon/msgdata/selectMsgAddrListAjax_advc.do";
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: url,
|
|
data: data,
|
|
dataType:'json',
|
|
async: true,
|
|
cache: false,
|
|
success: function (data) {
|
|
console.log('data : ', data);
|
|
if(data.status == "OK"){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
|
|
var addrList = data.object;
|
|
|
|
if(addrList.length == 0){
|
|
|
|
alert("주소록 정보가 없습니다.");
|
|
// tableAddr.setData([]);
|
|
return false;
|
|
}
|
|
|
|
// console.log('data : ', data);
|
|
tableAddr.setData(addrList);
|
|
}
|
|
else
|
|
{
|
|
alert("주소록 불러오기에 실패하였습니다. !!");
|
|
}
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
alert("주소록 불러오기에 실패하였습니다.");
|
|
console.error("Error:", jqXHR.status, textStatus, errorThrown);
|
|
console.error("Response Text:", jqXHR.responseText);
|
|
try {
|
|
let json = JSON.parse(jqXHR.responseText);
|
|
console.log("Parsed JSON Response:", json);
|
|
} catch (e) {
|
|
console.error("JSON Parse Error:", e);
|
|
}
|
|
},
|
|
beforeSend : function(xmlHttpRequest) {
|
|
//로딩창 show
|
|
$('.loading_layer').addClass('active');
|
|
},
|
|
complete : function(xhr, textStatus) {
|
|
//로딩창 hide
|
|
$('.loading_layer').removeClass('active');
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
//주소록 불러오기에서 수신자 리스트 추가해 주기
|
|
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 addrToList_advc(type){
|
|
console.log('tableAddr.getDataCount() : ', tableAddr.getDataCount());
|
|
// 선택된 데이터 또는 전체 데이터 변수 초기화
|
|
let selectedData = type === 'select' ? tableAddr.getSelectedRows() : tableAddr.getData();
|
|
|
|
// 데이터가 비어있으면 경고 후 종료
|
|
if (!selectedData || selectedData.length < 1) {
|
|
|
|
if(tableAddr.getDataCount() < 1){
|
|
alert("주소록을 선택해 주세요.");
|
|
}else{
|
|
alert("전화번호를 선택해 주세요.");
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// 데이터 변환 로직
|
|
const addrData = selectedData.map(row => {
|
|
const rowData = type === 'select' ? row.getData() : row; // 'select'는 행 객체에서 데이터 추출
|
|
return {
|
|
name: rowData.name,
|
|
phone: removeDash(rowData.phone),
|
|
rep1: rowData.rep1,
|
|
rep2: rowData.rep2,
|
|
rep3: rowData.rep3,
|
|
rep4: rowData.rep4
|
|
};
|
|
});
|
|
|
|
|
|
// 기존 tableL의 데이터를 가져옵니다.
|
|
var existingData = tableL.getData();
|
|
// 기존 데이터와 새로운 데이터를 합칩니다.
|
|
var combinedData = existingData.concat(addrData);
|
|
|
|
// @ phone을 기준으로 중복 제거 및 갯수 계산
|
|
const result = removeDuplicatesAndCount(combinedData, 'phone');
|
|
|
|
|
|
|
|
// 총 30만건이 넘으면 false
|
|
if (!validateRowLimit(result.uniqueCount)) {
|
|
return false;
|
|
}
|
|
|
|
|
|
// 합쳐진 데이터를 tableL에 설정합니다.
|
|
tableL.setData(result.uniqueArray);
|
|
// 중복데이터 건수 입력
|
|
setRowDupCnt(result.duplicateArray.length);
|
|
|
|
|
|
// 미리보기 버튼 활성화
|
|
updateButtons(0);
|
|
|
|
var totRows = tableL.getRows().length;
|
|
updateTotCnt(totRows); //전체 데이터 갯수 구하기
|
|
totalPriceSum(totRows);
|
|
|
|
|
|
$(".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();
|
|
|
|
/* 윈도우팝업 열기 */
|
|
/* 윈도우팝업 열기 */
|
|
var infoPopT; // 전역 변수로 선언하여 팝업 추적
|
|
|
|
function infoPop(pageUrl) {
|
|
// 기존 팝업이 존재하면 닫기
|
|
if (infoPopT && !infoPopT.closed) {
|
|
infoPopT.close();
|
|
}
|
|
|
|
// 기본값 설정
|
|
let width = 790, height = 350;
|
|
|
|
if (pageUrl === "adrvertisement1") {
|
|
width = 790;
|
|
height = 800;
|
|
} else if (pageUrl === "selectMsgDataView3") {
|
|
width = 500;
|
|
height = 550;
|
|
}
|
|
|
|
// 🔥 현재 브라우저 창 크기 가져오기
|
|
let screenWidth = window.innerWidth || document.documentElement.clientWidth || screen.width;
|
|
let screenHeight = window.innerHeight || document.documentElement.clientHeight || screen.height;
|
|
|
|
// 💡 팝업을 브라우저 창 중앙에 위치시키기 위해 `top`, `left` 계산
|
|
let left = (screenWidth - width) / 2 + window.screenX;
|
|
let top = (screenHeight - height) / 2 + window.screenY;
|
|
|
|
// 📝 옵션 문자열 (정확한 중앙 정렬 적용)
|
|
let options = "width=" + width + ",height=" + height + ",top=" + top + ",left=" + left +
|
|
",fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbars=1";
|
|
|
|
console.log('팝업 옵션 : ', options);
|
|
|
|
// 🔥 window.open() 호출
|
|
infoPopT = window.open("", 'infoPop', options);
|
|
|
|
// 🔄 폼 데이터 설정 및 제출
|
|
document.popForm.pageType.value = pageUrl;
|
|
document.popForm.action = "/web/pop/infoPop.do";
|
|
document.popForm.method = "post";
|
|
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 = $('#send_adYn').val(); //광고 체크여부
|
|
|
|
//로그인 체크
|
|
if(loginVO == "" || loginVO == null){
|
|
alert("문자발송 서비스는 로그인 후 이용 가능합니다.");
|
|
return false;
|
|
}
|
|
|
|
var blineCodeYn = $("#blineCode").val();
|
|
if(blineCodeYn != 'N'){
|
|
if(!blineSendCheck(blineCodeYn)){ //문자온 conf-check
|
|
alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요.");
|
|
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;
|
|
}
|
|
|
|
console.log('imgFilePath : ', imgFilePath);
|
|
//그림문자가 아닌데 본문 비어있는지 확인
|
|
if(imgFilePath.length == 0) {
|
|
if(msgForm.smsTxtArea.value == "") {
|
|
alert("문자 내용을 입력해 주세요.");
|
|
return false;
|
|
}
|
|
}
|
|
/* else{//문자내용에 스팸 단어 포함여부 체크
|
|
console.log(' : spam데이터 : ');
|
|
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 = '6';
|
|
|
|
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=subjectChkYn]:checked").val() == 'Y') {
|
|
form.mmsSubject.value = msgForm.mmsSubject.value;
|
|
} else {
|
|
form.mmsSubject.value = ""; //초기화
|
|
}
|
|
|
|
|
|
}else if($('#nowMsgType').text() == "장문"){
|
|
|
|
msgType = '6';
|
|
|
|
form.eachPrice.value = '<c:out value="${longPrice}" />';
|
|
|
|
//제목 사용한 경우
|
|
if($("input[name=subjectChkYn]:checked").val() == 'Y') {
|
|
form.mmsSubject.value = msgForm.mmsSubject.value;
|
|
} else {
|
|
form.mmsSubject.value = ""; //초기화
|
|
}
|
|
|
|
}else{
|
|
|
|
msgType = '4';
|
|
|
|
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/testSmsSendPop.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();
|
|
}
|
|
|
|
//이벤트 잔액 로그인 체크
|
|
$(".btn_event_cash").off().on("click", function(){
|
|
var loginVO = '${LoginVO}';
|
|
if(loginVO == "" || loginVO == null){
|
|
alert("로그인 후 이용이 가능합니다.");
|
|
return false;
|
|
}
|
|
});
|
|
|
|
function checkNumber(event) {
|
|
var divideCnt = $('#divideCnt').val();
|
|
if(!(event.key >= 0 && event.key <= 9)) {
|
|
return false;
|
|
}
|
|
|
|
var totCnt = divideCnt + "" + event.key;
|
|
if(Number(totCnt) > 5000){
|
|
|
|
alert("분할전송 건수는 5,000건을 초과할 수 없습니다.");
|
|
$('#divideCnt').val("20");
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//문자 발송목록
|
|
function getMjMsgSentListAll(pageNo) {
|
|
document.sentListForm.pageIndex.value = pageNo;
|
|
document.sentListForm.msgSentType.value = "01"; // 01:문자전송, 02:선거문자
|
|
|
|
var sendData= $(document.sentListForm).serializeArray();
|
|
$("#mjMsgSentListAllLoad").load("/web/mjon/msgdata/selectMjMsgSentListAjax.do", sendData ,function(response, status, xhr){
|
|
|
|
});
|
|
}
|
|
|
|
</script>
|
|
|
|
<div class="loading_layer">
|
|
<div class="loading_container">
|
|
<div class="bar"></div>
|
|
<div class="text">Loading</div>
|
|
</div>
|
|
</div>
|
|
|
|
<form id="sentListForm" name="sentListForm" method="post">
|
|
<input type="hidden" name="pageType" value=""/>
|
|
<input type="hidden" name="pageIndex" value=""/>
|
|
<input type="hidden" name="msgSentType" value=""/>
|
|
<input type="hidden" name="searchSortCnd" value="" />
|
|
<input type="hidden" name="searchSortOrd" value="" />
|
|
</form>
|
|
|
|
<!-- 2023 10 16 재전송 : 상세내용 팝업 -->
|
|
<div class="tooltip-wrap" style="z-index:110;">
|
|
<div class="popup-com adr_layer rev_popup01" tabindex="0" data-tooltip-con="rev_popup01"
|
|
data-focus="rev_popup01" data-focus-prev="rev_popup01-close" style="width: 440px;">
|
|
<div class="popup_heading">
|
|
<p>문자내용</p>
|
|
<button type="button" class="tooltip-close" data-focus="rev_popup01-close"><img
|
|
src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
|
|
</div>
|
|
<div class="layer_in" id="msgSentDetailPopLoad" style="padding-bottom: 0px;">
|
|
</div>
|
|
<div class="popup_btn_wrap2" style="justify-content: center; margin-bottom: 30px;">
|
|
<button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--// 2023 10 16 재전송 : 상세내용 팝업 -->
|
|
|
|
<!-- 2023 10 16 재전송 팝업 -->
|
|
<div class="tooltip-wrap">
|
|
<div class="popup-com import_layer popup05" tabindex="0" data-tooltip-con="popup05" data-focus="popup05" data-focus-prev="popup05-close" style="width: 900px;">
|
|
<div class="popup_heading">
|
|
<p><span>전송내역</p>
|
|
<button type="button" class="tooltip-close" data-focus="popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
|
|
</div>
|
|
<div class="layer_in" id="mjMsgSentListAllLoad" style="padding-bottom: 0px; min-height:428px;">
|
|
</div>
|
|
<div class="popup_btn_wrap2" style="margin-bottom: 30px;">
|
|
<button type="button" class="tooltip-close" data-focus="popup05-close" data-focus-next="popup05">닫기</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--// 2023 10 16 재전송 팝업 -->
|
|
|
|
<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" style="width: 230px;">
|
|
<button type="button" id="latestAddPhoneAll">전체추가</button>
|
|
<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">
|
|
<li>
|
|
<p>데이터 로딩중입니다.</p>
|
|
</li>
|
|
<%-- <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" style="width: 230px;">
|
|
<button type="button" id="bookMarkAddPhoneAll">전체추가</button>
|
|
<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-com adr_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close" style="width: 1000px;">
|
|
<%@include file="/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp" %>
|
|
<!-- <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*]~[*4*] : 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 adr_call_popup" 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" style="max-width:722px">
|
|
</div>
|
|
<!--// table -->
|
|
</div>
|
|
<div class="popup_btn_wrap2">
|
|
<!-- <button type="button" onClick="javascript:addrToList(); return false;">추가</button> -->
|
|
<button type="button" onClick="javascript:addrToList_advc('all'); return false;">전체추가</button>
|
|
<button type="button" onClick="javascript:addrToList_advc('select'); 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="imgFilePathAdvc" name="imgFilePathAdvc" value="" /><!-- 선택 이미지 파일 경로 정보 , 로 구분 최대 3장까지 -->
|
|
<input type="hidden" id="imgFileId" name="imgFileId" value="" /><!-- 선택 이미지 파일 아이디 정보 , 로 구분 최대 3장까지 -->
|
|
<input type="hidden" id="imgFileIdAdvc" name="imgFileIdAdvc" 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" name="templateYnAdvc" />
|
|
<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"/><!-- 치환 이벤트 장문 건수 -->
|
|
|
|
<input type="hidden" id="blineCode" name="blineCode" value="<c:out value="${blineCode}"/>"/>
|
|
|
|
<input type="hidden" id="tabDision" value="<c:out value="${tabDision}"/>"/>
|
|
|
|
<input type="hidden" id="send_adYn" name="send_adYn" value="${tabDision eq 'tab02' ? 'Y' : 'N'}"/>
|
|
|
|
<!-- <div class="top_content current" id="tab1_1"> -->
|
|
<div class="heading">
|
|
<h2>
|
|
<c:choose>
|
|
<c:when test="${tabDision eq 'tab01'}">
|
|
일반문자 <span class="ad_text"><i>i</i>광고성 메시지는 <a href="#none" onclick="fnMsgExcelDataView()">[대량문자]</a> 탭을 이용해주세요</span>
|
|
</c:when>
|
|
<c:otherwise>
|
|
대량문자(광고문자)
|
|
<button type="button" class="button info ad_btn" onclick="infoPop('adrvertisement1');" style="right: 128px;"><i></i>광고규정</button>
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</h2>
|
|
<!-- /web/mjon/msgdata/selectMsgDataSMLViewAjax.do -->
|
|
<!-- MsgDataSMLView.jsp -->
|
|
<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 class="send_adYnN" id="send_adYnN" type="radio"name="send_adYn" value="N" checked="checked">
|
|
<label class="send_adYnN" 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="subjectChkYn" value="Y" onchange="titleStatus(this);">
|
|
<label for="title_y">사용</label>
|
|
<input id="title_n" type="radio" name="subjectChkYn" 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 none liOnImg"></ul>
|
|
<!-- //업로드한 이미지의 썸네일 영역 -->
|
|
<label for="smsTxtArea" class="label"></label>
|
|
<c:if test="${tabDision eq 'tab02'}">
|
|
<div class="ad_txt"><p>(광고)</p></div>
|
|
</c:if>
|
|
<textarea id="smsTxtArea" name="smsTxtArea" class="put_text" onkeyup="fnByteString($(this').val());"></textarea>
|
|
<div class="text_length">
|
|
<c:if test="${tabDision eq 'tab02'}">
|
|
<div class="deny_txt"><p>무료거부 0808800858</p> </div>
|
|
</c:if>
|
|
<div name="afterDeny">
|
|
<p>
|
|
<span class="fwMd" id="msgLeng">
|
|
|
|
<c:choose>
|
|
<c:when test="${tabDision eq 'tab02'}">
|
|
27
|
|
</c:when>
|
|
<c:otherwise>
|
|
0
|
|
</c:otherwise>
|
|
</c:choose> /
|
|
</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_top">
|
|
<label for="" class="label">받는 번호입력</label>
|
|
<!-- <input type="text" placeholder="번호를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;"> -->
|
|
<!-- oninput="this.value = this.value.replace(/[^0-9.\n]/g, '').replace(/(\..*)\./g, '$1');" -->
|
|
<textarea name="callTo" id="callTo" cols="30" rows="10" class="receipt_num"
|
|
placeholder="번호를 입력하세요"
|
|
onfocus="this.placeholder=''"
|
|
onblur="this.placeholder='번호를 입력하세요'"
|
|
style="width:340px;"></textarea>
|
|
<!-- <button type="button" class="btnType btnType6">번호추가</button> -->
|
|
<div class="btn_popup_wrap">
|
|
<button type="button" class="btnType btnType6 btn_add_number addCallToF">번호추가<i class="qmMark"></i></button>
|
|
<span style="display:block;margin:10px 0 0 0;"><span class="vMiddle">*</span> 중복번호는 한번만 추가됩니다.</span>
|
|
<div class="error_hover_cont send_hover_cont">
|
|
<!-- <p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p> -->
|
|
<p>줄바꿈(Enter) 기준으로 핸드폰 번호 입력이 가능합니다.</p>
|
|
<span>
|
|
(예시)<br/>
|
|
010-1234-0001↵<br/>
|
|
010-1235-0002↵<br/>
|
|
01012350003↵<br/>
|
|
01012350004↵<br/>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="receipt_num_midde">
|
|
<div class="listType list01 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">
|
|
<button type="button" data-tooltip="popup05" class="btnType btnType7 tab2" onclick="getMjMsgSentListAll('1');">재전송</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-12345-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 class="my_price_wrap" id="myPriceWrap" style="display: none;">
|
|
<div class="center-line"></div>
|
|
<ul>
|
|
<li class="title">
|
|
<img src="/publish/images/content/icon_mypage_message.png" alt="">나의 단가 <span>:</span>
|
|
</li>
|
|
<li class="price_line">
|
|
<span class="type">단문</span>
|
|
<span class="price"><fmt:formatNumber value="${shortPrice}" pattern="###.#" /></span>원
|
|
<span class="line">/ </span>
|
|
</li>
|
|
<li class="price_line">
|
|
<span class="type">장문</span>
|
|
<span class="price"><fmt:formatNumber value="${longPrice}" pattern="###.#" /></span>원
|
|
<span class="line">/ </span>
|
|
</li>
|
|
<li class="price_line">
|
|
<span class="type">그림</span>
|
|
<span class="price"><fmt:formatNumber value="${picturePrice}" pattern="###.#" /></span>원
|
|
(2장 : <fmt:formatNumber value="${picture2Price}" pattern="###.#" />원 / 3장 : <fmt:formatNumber value="${picture3Price}" pattern="###.#" />원)
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!-- End -->
|
|
|
|
</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">
|
|
<c:choose>
|
|
<c:when test="${tabDision eq 'tab02'}">
|
|
<p class="ad_tit">(광고)</p>
|
|
<p class="none_txt"></p>
|
|
<pre class="realtime"></pre>
|
|
<p class="deny_receipt">무료거부 0808800858</p>
|
|
</c:when>
|
|
<c:otherwise>
|
|
<p class="none_txt">내용을 입력해주세요.</p>
|
|
<pre class="realtime"></pre>
|
|
</c:otherwise>
|
|
</c:choose>
|
|
</div>
|
|
</div>
|
|
<!-- //텍스트 미리보기 -->
|
|
</div>
|
|
</div>
|
|
<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
|
|
<div class="preview_util">
|
|
<button type="button" id="btnFirst"><img src="/publish/images/content/page_first.png"></button>
|
|
<button type="button" id="btnPrev" data-index="0"><img src="/publish/images/content/page_prev.png"></button>
|
|
<p>미리보기</p>
|
|
<button type="button" id="btnNext" data-index="1"><img src="/publish/images/content/page_next.png"></button>
|
|
<button type="button" id="btnLast"><img src="/publish/images/content/page_last.png"></button>
|
|
</div>
|
|
</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>
|
|
<input type="text" class="dividType1" id="divideCnt" name="divideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/>
|
|
<label for="divideCnt">건씩</label> <!-- 2023 11 17 수정 -->
|
|
<select class="selType1" id="divideTime" name="divideTime">
|
|
<option value="1">01분</option>
|
|
<option value="2">02분</option>
|
|
<option value="3">03분</option>
|
|
<option value="4">04분</option>
|
|
<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>
|
|
|