581 lines
17 KiB
JavaScript
581 lines
17 KiB
JavaScript
|
|
function fnReplCell_advc(){
|
|
console.log(':: fnReplCell_advc :: ');
|
|
|
|
var smsTxtArea = $('#smsTxtArea').val();
|
|
console.log('smsTxtArea : ', smsTxtArea);
|
|
var orgSmsTxt = smsTxtArea; // 광고문자 뺀 문자내용
|
|
|
|
var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장
|
|
|
|
var smsTxt = smsTxtArea;
|
|
|
|
var data = recTableData[0].getData();
|
|
|
|
if(typeof data.name != 'undefined'
|
|
&& data.name != null
|
|
&& data.name != ""){
|
|
|
|
var name = data.name;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*이름*]", name);
|
|
|
|
|
|
}
|
|
if(typeof data.rep1 != 'undefined' && data.rep1 != null && data.rep1 != ""){
|
|
|
|
var rep1 = data.rep1;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*1*]", rep1);
|
|
|
|
}
|
|
|
|
if(typeof data.rep2 != 'undefined' && data.rep2 != null && data.rep2 != ""){
|
|
|
|
var rep2 = data.rep2;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*2*]", rep2);
|
|
|
|
}
|
|
|
|
if(typeof data.rep3 != 'undefined' && data.rep3 != null && data.rep3 != ""){
|
|
|
|
var rep3 = data.rep3;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*3*]", rep3);
|
|
|
|
}
|
|
|
|
if(typeof data.rep4 != 'undefined' && data.rep4 != null && data.rep4 != ""){
|
|
|
|
var rep4 = data.rep4;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*4*]", rep4);
|
|
|
|
}
|
|
|
|
console.log('smsTxt : ', smsTxt);
|
|
$('.realtime').text(smsTxt);
|
|
|
|
|
|
}
|
|
|
|
//특정문구 일괄변환 문자길이 체크 하기
|
|
function fnReplCell(){
|
|
|
|
var smsTxtArea = $('#smsTxtArea').val();
|
|
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
|
|
var orgSmsTxt = smsTxtArea; // 광고문자 뺀 문자내용
|
|
|
|
var adTxt = $('.ad_txt').text();
|
|
var denyTxt = $('.deny_txt').text();
|
|
|
|
var adverTxt = "";
|
|
|
|
//이벤트 잔여 캐시 자동 처리 관련 변수
|
|
var evnRemainCash = parseFloat($("#eventRemainCash").val()); //이벤트 잔여 캐시 금액
|
|
var evnEachPrice = parseFloat($("#eachPrice").val());
|
|
var evnShortPrice = parseFloat($("#sPrice").val());
|
|
var evnLongPrice = parseFloat($("#mPrice").val());
|
|
var evnPhoneNumCnt = 0;
|
|
var evnShortMsgCnt = 0;
|
|
var evnLongMsgCnt = 0;
|
|
var evnMsgCntSts = true;
|
|
|
|
if(adTxt.length > 0 && denyTxt.length > 0){
|
|
|
|
adverTxt = adTxt + "\n" + smsTxtArea + "\n" + denyTxt;
|
|
smsTxtArea = adverTxt;
|
|
|
|
}
|
|
|
|
|
|
console.log('???smsTxtArea :: ', smsTxtArea);
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
|| smsTxtArea.indexOf("[*1*]") > -1
|
|
|| smsTxtArea.indexOf("[*2*]") > -1
|
|
|| smsTxtArea.indexOf("[*3*]") > -1
|
|
|| smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
|
|
var rowData = tableL.getRows();
|
|
var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장
|
|
//var tableData = [];
|
|
|
|
var msg_short = 0; //단문문자 갯수
|
|
var msg_long = 0; //장문문자 갯수
|
|
|
|
//일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함.
|
|
//치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에 치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두
|
|
$('#txtReplYn').val("Y");
|
|
|
|
var nmStatus = false;
|
|
var rep1Status = false;
|
|
var rep2Status = false;
|
|
var rep3Status = false;
|
|
var rep4Status = false;
|
|
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1){
|
|
|
|
nmStatus = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*1*]") > -1){
|
|
|
|
rep1Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*2*]") > -1){
|
|
|
|
rep2Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*3*]") > -1){
|
|
|
|
rep3Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
rep4Status = true;
|
|
}
|
|
|
|
|
|
//기존 받는사람 리스트를 배열에 미리 담아둔다.
|
|
if(recTableData.length > 0){
|
|
|
|
for(var j=0; j < recTableData.length; j++){
|
|
|
|
var smsTxt = smsTxtArea;
|
|
|
|
if(typeof recTableData[j].getData().name != 'undefined'
|
|
&& recTableData[j].getData().name != null
|
|
&& recTableData[j].getData().name != ""){
|
|
|
|
// console.log('name : ', name);
|
|
// console.log('smsTxt : ', smsTxt);
|
|
// console.log('orgSmsTxt : ', orgSmsTxt);
|
|
var name = recTableData[j].getData().name;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*이름*]", name);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*이름*]", name);//광고, 선거 문자인 경우 상하단 문구 제거한 문자내용만 보여주도록 함. 치환문자 있으면 변환해서 보여줌
|
|
|
|
|
|
}/*else{
|
|
|
|
if(nmStatus){
|
|
alert("[*이름*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null && recTableData[j].getData().rep1 != ""){
|
|
|
|
var rep1 = recTableData[j].getData().rep1;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*1*]", rep1);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*1*]", rep1);
|
|
|
|
}/*else{
|
|
|
|
if(rep1Status){
|
|
alert("[*1*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null && recTableData[j].getData().rep2 != ""){
|
|
|
|
var rep2 = recTableData[j].getData().rep2;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*2*]", rep2);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*2*]", rep2);
|
|
|
|
}/*else{
|
|
|
|
if(rep2Status){
|
|
alert("[*2*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null && recTableData[j].getData().rep3 != ""){
|
|
|
|
var rep3 = recTableData[j].getData().rep3;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*3*]", rep3);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*3*]", rep3);
|
|
|
|
}/*else{
|
|
|
|
if(rep3Status){
|
|
alert("[*3*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null && recTableData[j].getData().rep4 != ""){
|
|
|
|
var rep4 = recTableData[j].getData().rep4;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*4*]", rep4);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*4*]", rep4);
|
|
|
|
}/*else{
|
|
|
|
if(rep4Status){
|
|
alert("[*4*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
var msgLen = conByteLeng(smsTxt);
|
|
|
|
if(msgLen < 1){
|
|
|
|
|
|
}else if(msgLen > 2000){
|
|
|
|
alert("문자 내용은 2000byte를 넘을 수 없습니다.");
|
|
return false;
|
|
|
|
}else{
|
|
|
|
if(msgLen > 90){
|
|
|
|
msg_long++;
|
|
console.log(evnRemainCash + " === " + evnLongPrice);
|
|
if(evnRemainCash >= evnLongPrice && evnMsgCntSts == true){//이벤트 금액으로 보낼수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnLongPrice;
|
|
evnPhoneNumCnt++;
|
|
evnLongMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnLongMsgCnt").val(evnLongMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운팅 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
msg_short++;
|
|
console.log(evnRemainCash + " === " + evnShortPrice);
|
|
if(evnRemainCash >= evnShortPrice && evnMsgCntSts == true){//이벤트 금액으로 발송할 수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnShortPrice;
|
|
evnPhoneNumCnt++;
|
|
evnShortMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnShortMsgCnt").val(evnShortMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운티 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
replTotalPriceSum(msg_short, msg_long, totRows);
|
|
|
|
//첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자.
|
|
if(j == 0){
|
|
|
|
console.log('adverTxt : ', adverTxt);
|
|
//미리보기에 내용 입력해 주기
|
|
if(adverTxt.length > 0){
|
|
|
|
$('.realtime').text(orgSmsTxt);
|
|
|
|
}else{
|
|
|
|
$('.realtime').text(smsTxt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//일괄변환문자 포함 여부 변경
|
|
//$('#txtReplYn').val("Y");
|
|
|
|
}
|
|
|
|
//변환후 문자 중에 장문이 1개 이상 있는 경우 문자 제목을 입력해 주기
|
|
/*var txtReplYn = $('#txtReplYn').val();
|
|
|
|
if(txtReplYn == 'Y' && (msg_long > 0 || imgCnt > 0)){
|
|
|
|
//장문, 그림 문자가 포함되어 있는 경우 제목을 입력하도록 처리
|
|
$('#mmsSubject').attr("disabled", false);
|
|
|
|
}else if(txtReplYn == 'Y' && msg_long < 1){
|
|
|
|
//일괄변환애 단문문자만 있는경우 제목 입력 안되도록 처리
|
|
$('#mmsSubject').val("");
|
|
$('#mmsSubject').attr("disabled", true);
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//특정문구 일괄변환 문자길이 체크 하기
|
|
function fnReplCellExcel(){
|
|
console.log('fnReplCellExcel');
|
|
var smsTxtArea = $('#smsTxtArea').val();
|
|
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
|
|
var orgSmsTxt = smsTxtArea; // 광고문자 뺀 문자내용
|
|
var adTxt = $('.ad_txt').text();
|
|
var denyTxt = $('.deny_txt').text();
|
|
|
|
var adverTxt = "";
|
|
|
|
//이벤트 잔여 캐시 자동 처리 관련 변수
|
|
var evnRemainCash = parseFloat($("#eventRemainCash").val()); //이벤트 잔여 캐시 금액
|
|
var evnEachPrice = parseFloat($("#eachPrice").val());
|
|
var evnShortPrice = parseFloat($("#sPrice").val());
|
|
var evnLongPrice = parseFloat($("#mPrice").val());
|
|
var evnPhoneNumCnt = 0;
|
|
var evnShortMsgCnt = 0;
|
|
var evnLongMsgCnt = 0;
|
|
var evnMsgCntSts = true;
|
|
|
|
if(adTxt.length > 0 && denyTxt.length > 0){
|
|
|
|
adverTxt = adTxt + "\n" + smsTxtArea + "\n" + denyTxt;
|
|
smsTxtArea = adverTxt;
|
|
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
|| smsTxtArea.indexOf("[*1*]") > -1
|
|
|| smsTxtArea.indexOf("[*2*]") > -1
|
|
|| smsTxtArea.indexOf("[*3*]") > -1
|
|
|| smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
|
|
var rowData = tableR.getRows();
|
|
var recTableData = tableR.getRows(); // 받는사람 리스트의 전체 목록을 저장
|
|
//var tableData = [];
|
|
|
|
var msg_short = 0;
|
|
var msg_long = 0;
|
|
|
|
var nmStatus = false;
|
|
var rep1Status = false;
|
|
var rep2Status = false;
|
|
var rep3Status = false;
|
|
var rep4Status = false;
|
|
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1){
|
|
|
|
nmStatus = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*1*]") > -1){
|
|
|
|
rep1Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*2*]") > -1){
|
|
|
|
rep2Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*3*]") > -1){
|
|
|
|
rep3Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
rep4Status = true;
|
|
}
|
|
|
|
//일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함.
|
|
//치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에 치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두
|
|
$('#txtReplYn').val("Y");
|
|
|
|
//기존 받는사람 리스트를 배열에 미리 담아둔다.
|
|
if(recTableData.length > 0){
|
|
|
|
for(var j=0; j < recTableData.length; j++){
|
|
|
|
var smsTxt = smsTxtArea;
|
|
if(typeof recTableData[j].getData().name != 'undefined'
|
|
&& recTableData[j].getData().name != null
|
|
&& recTableData[j].getData().name != "")
|
|
{
|
|
|
|
var name = recTableData[j].getData().name;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*이름*]", name);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*이름*]", name);//광고, 선거 문자인 경우 상하단 문구 제거한 문자내용만 보여주도록 함. 치환문자 있으면 변환해서 보여줌
|
|
|
|
}/*else{
|
|
|
|
if(nmStatus){
|
|
alert("[*이름*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null){
|
|
|
|
var rep1 = recTableData[j].getData().rep1;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*1*]", rep1);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*1*]", rep1);
|
|
|
|
}/*else{
|
|
|
|
if(rep1Status){
|
|
alert("[*1*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null){
|
|
|
|
var rep2 = recTableData[j].getData().rep2;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*2*]", rep2);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*2*]", rep2);
|
|
|
|
}/*else{
|
|
|
|
if(rep2Status){
|
|
alert("[*2*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null){
|
|
|
|
var rep3 = recTableData[j].getData().rep3;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*3*]", rep3);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*3*]", rep3);
|
|
|
|
}/*else{
|
|
|
|
if(rep3Status){
|
|
alert("[*3*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null){
|
|
|
|
var rep4 = recTableData[j].getData().rep4;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*4*]", rep4);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*4*]", rep4);
|
|
|
|
}/*else{
|
|
|
|
if(rep4Status){
|
|
alert("[*4*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
var msgLen = conByteLeng(smsTxt);
|
|
|
|
if(msgLen < 1){
|
|
|
|
|
|
}else if(msgLen > 2000){
|
|
|
|
alert("문자 내용은 2000byte를 넘을 수 없습니다.");
|
|
return false;
|
|
|
|
}else{
|
|
|
|
if(msgLen > 90){
|
|
|
|
msg_long++;
|
|
console.log(evnRemainCash + " === " + evnLongPrice);
|
|
if(evnRemainCash >= evnLongPrice && evnMsgCntSts == true){//이벤트 금액으로 보낼수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnLongPrice;
|
|
evnPhoneNumCnt++;
|
|
evnLongMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnLongMsgCnt").val(evnLongMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운팅 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
|
|
}else{
|
|
|
|
msg_short++;
|
|
if(evnRemainCash >= evnShortPrice && evnMsgCntSts == true){//이벤트 금액으로 발송할 수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnShortPrice;
|
|
evnPhoneNumCnt++;
|
|
evnShortMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnShortMsgCnt").val(evnShortMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운티 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
replTotalPriceSum(msg_short, msg_long, totRows);
|
|
|
|
//첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자.
|
|
if(j == 0){
|
|
|
|
//미리보기에 내용 입력해 주기
|
|
if(adverTxt.length > 0){
|
|
|
|
$('.realtime').text(orgSmsTxt);
|
|
|
|
}else{
|
|
|
|
$('.realtime').text(smsTxt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//일괄변환문자 포함 여부 변경
|
|
//$('#txtReplYn').val("Y")
|
|
|
|
}
|
|
|
|
//변환후 문자 중에 장문이 1개 이상 있는 경우 문자 제목을 입력해 주기
|
|
/*var txtReplYn = $('#txtReplYn').val();
|
|
|
|
if(txtReplYn == 'Y' && (msg_long > 0 || imgCnt > 0 )){
|
|
|
|
//장문, 그림 문자가 포함되어 있는 경우 제목을 입력하도록 처리
|
|
$('#mmsSubject').attr("disabled", false);
|
|
|
|
}else if(txtReplYn == 'Y' && msg_long < 1){
|
|
|
|
//일괄변환에 단문문자만 있는경우 제목 입력 안되도록 처리
|
|
$('#mmsSubject').val("");
|
|
$('#mmsSubject').attr("disabled", true);
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//치환문자 replaceAll 기능 처리하는 함수
|
|
function stringReplaceAll(str, a, b){
|
|
|
|
return str.split(a).join(b);
|
|
}
|