From 9079e3fe7b3d7eefa42fdb23606f702b68b2483b Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 14 Aug 2024 12:03:46 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=A0=84=EC=86=A1=20>=20?= =?UTF-8?q?=EC=97=91=EC=85=80=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20(=20TODO:=EC=98=A4=EB=A5=98=EB=B2=88?= =?UTF-8?q?=ED=98=B8=EA=B2=80=EC=82=AC,=20=EC=98=A4=EB=A5=98=EA=B2=80?= =?UTF-8?q?=EC=82=AC,=20=EC=84=A4=EB=AA=85=EB=AC=B8=EA=B5=AC,=20=EC=83=98?= =?UTF-8?q?=ED=94=8C=ED=8C=8C=EC=9D=BC=20=EB=93=B1=EB=93=B1=20=EC=9D=80=20?= =?UTF-8?q?cs=ED=8C=80=EC=97=90=EC=84=9C=20=EA=B2=B0=EC=A0=95=ED=95=98?= =?UTF-8?q?=EA=B3=A0=20=EC=95=8C=EB=A0=A4=EC=A4=80=EB=8B=A4=ED=95=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/jsp/web/addr/AddrListAjax.jsp | 1 - .../jsp/web/msgdata/MsgDataSMLView.jsp | 1 - .../msgdata/include/msgDataIncludeExcel.jsp | 340 +++++++++++++----- src/main/webapp/publish/css/popupLayer.css | 6 +- 4 files changed, 251 insertions(+), 97 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/AddrListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/AddrListAjax.jsp index 6aa2fe0c..f3d4e906 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/AddrListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/AddrListAjax.jsp @@ -1030,7 +1030,6 @@ function setAddrDupliClose() { - -->
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index 41fc1561..df438c48 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -32,7 +32,6 @@ function addPhoneInfo_advc(tableAddr){ var addrData = tableAddr.getData().map((row, index) => ({ - no: index+1, name: row.addrName, phone: removeDash(row.addrPhone), rep1: row.addrRep1, diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp index fc4f8f23..64471add 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp @@ -54,13 +54,44 @@ $(document).ready(function(){ $("#excelFile").on("change", function(event) { var fileInfo = event.target.files; - if(fileInfo.length > 0){ - excelFileChange(fileInfo[0]); - } + console.log('fileInfo.length : ', fileInfo.length); + if(fileInfo.length > 0){ + excelFileChange(fileInfo[0]); + } else { + fn_loadRemoveActive(); // 파일이 선택되지 않은 경우 로딩 상태 제거 + $(this).val(''); // 파일 선택 초기화 + } }); + $(document).on('click', '#btnAddrMassClose', function() { + // 대량등록 닫기 + setAddrMassClose(); + }); + + + $(document).on('click', '#closeBtn', function() { + // 대량등록 닫기 + setAddrMassClose(); + }); + + + // 엑셀등록 닫기 + function setAddrMassClose() { + $tableExcel.clearData(); + $("#excelRowTotCnt").text(0); //총건수 수정 + $("#excelRowDupCnt").text(0); //중복건수 수정 + dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 + addrMassDupliSaveList = null; + + $("#btnAddrMassDupli").hide(); + $('#tableExcelDupliBtn').hide(); +// $("#btnAddrMassSaveDupli").hide(); +// $('#closeBtn').click(); + + } + //############################################################################################# //파일업로드 드래그앤 드롭 //############################################################################################# @@ -75,7 +106,7 @@ $(document).ready(function(){ e.preventDefault(); }); $(document).on("drop",".upload_area",function(e){ -// fn_loadAddActive(); + fn_loadAddActive(); e.preventDefault(); var files = e.originalEvent.dataTransfer.files; excelFileChange(files[0]); @@ -103,95 +134,157 @@ $(document).ready(function(){ //타이틀 select 선택 이벤트 $('.field-selector').on('change', function() { fn_loadAddActive(); - var selectedFields = []; - var isDuplicate = false; - if($tableExcel.getData().length < 1){ - alert('데이터 입력 후 선택해 주세요.'); - $(this).val(""); - fn_loadRemoveActive(); - return false; - } - - // 중복체크 - $('.field-selector').each(function() { - var selectedField = $(this).val(); - if (selectedField) { - if (selectedFields.includes(selectedField)) { - alert("중복된 필드를 선택할 수 없습니다."); - $(this).val(""); // 중복 필드를 선택한 경우 빈 값으로 초기화 - isDuplicate = true; - return false; // 반복문 종료 - } - selectedFields.push(selectedField); + setTimeout(() => { // 파일 읽기 완료 후 실행되도록 함 + var selectedFields = []; + var isDuplicate = false; + + if($tableExcel.getData().length < 1){ + alert('데이터 입력 후 선택해 주세요.'); + $(this).val(""); + fn_loadRemoveActive(); + return false; } - }); + + // 중복체크 + $('.field-selector').each(function() { + var selectedField = $(this).val(); + if (selectedField) { + if (selectedFields.includes(selectedField)) { + alert("중복된 필드를 선택할 수 없습니다."); + $(this).val(""); // 중복 필드를 선택한 경우 빈 값으로 초기화 + isDuplicate = true; + return false; // 반복문 종료 + } + selectedFields.push(selectedField); + } + }); + + + // + updateTableFields($tableExcel); + + // 필드가 휴대폰이면 열 중복체크 + if($(this).val() == 'addrPhoneNo'){ + fn_phoneDupl($tableExcel); + } + fn_loadRemoveActive(); - - // - updateTableFields($tableExcel); - - // 필드가 휴대폰이면 열 중복체크 - if($(this).val() == 'addrPhoneNo'){ - fn_phoneDupl($tableExcel); - } - fn_loadRemoveActive(); - + }, 0); // 지연 없이 즉시 실행되도록 0ms 지연을 설정 }); - // 받는사람 선택삭제 버튼 처리해주기 - $('#in_select_del').click(function(){ + // 받는사람 선택삭제 버튼 처리해주기 + $('#in_select_del').click(function(){ + + if($tableExcel == null || $tableExcel == ""){ - if(tableL == null || tableL == ""){ + alert("받는사람을 추가해 주세요."); + return false; + + } + + var selectedData = $tableExcel.getSelectedRows(); + + if(selectedData == "" || selectedData == null){ + + alert("삭제할 연락처를 선택해주세요."); + return false; + + }else{ // 선택한 Row 데이터 삭제하기 + + if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){ + + // 선택 데이터 삭제 + selectedData.forEach(row => row.delete()); + + + totRows = $tableExcel.getRows().length; + $("#excelRowTotCnt").text(totRows); + - 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(); - }else{ - //결제 금액 구하기 - totalPriceSum(totRows); - } - - } - } + } + + }); + + // 추가버튼 + $('#btnAddrMassReg').click(function(){ + + if($tableExcel.getData().length < 1){ + alert("한 개 이상의 연락처를 입력하세요"); + return false; + } +// else if (selectedData.length > 20000) { +// alert("2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."); +// return false; +// } + + + // tableExcel 그룹의 select 요소들을 확인 +// var isPhoneSelected = false; +// var isNameSelected = false; + var columns = $tableExcel.getColumns(); + var isAddrPhoneNoSelected = columns.some(column => column.getField() === 'addrPhoneNo'); + + if (!isAddrPhoneNoSelected) { +// isPhoneSelected = true; + alert('휴대폰이 선택되지 않았습니다.'); + return false; + + } + + console.log('$tableExcel : ' ,$tableExcel); + var addrData = $tableExcel.getData().map((row, index) => ({ + name: row.addrNm, + phone: removeDash(row.addrPhoneNo), + rep1: row.addrInfo1, + rep2: row.addrInfo2, + rep3: row.addrInfo3, + rep4: row.addrInfo4, + })); + + tableL.setData(addrData); + + var totRows = tableL.getRows().length; + updateTotCnt(totRows); //전체 데이터 갯수 구하기 + console.log('totRows : ', totRows); + var smsTxtArea = $('#smsTxtArea').val(); + if(smsTxtArea.indexOf("[*이름*]") > -1 + || smsTxtArea.indexOf("[*1*]") > -1 + || smsTxtArea.indexOf("[*2*]") > -1 + || smsTxtArea.indexOf("[*3*]") > -1 + || smsTxtArea.indexOf("[*4*]") > -1){ - }); - - + fnReplCell(); + + }else{ + + //결제 금액 구하기 + totalPriceSum(totRows); + + } + + setAddrMassClose(); + }); + + + //받는사람 전체삭제 버튼 처리 + $('#allDel').click(function(){ + var data = $tableExcel.getRows(); + $tableExcel.clearData(); + $("#excelRowTotCnt").text(0); //총건수 수정 + $("#excelRowDupCnt").text(0); //중복건수 수정 + dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 + + // select box 초기화 + $('.field-selector').each(function() { $(this).val(''); }); + + }); + }); @@ -285,8 +378,8 @@ function updateTable(tableData) { ]); $tableExcel.setData(tableData).then(() => { - // rowTotCnt 업데이트 - document.getElementById("rowTotCnt").innerText = tableData.length; + // excelRowTotCnt 업데이트 + document.getElementById("excelRowTotCnt").innerText = tableData.length; }); fn_loadRemoveActive(); @@ -366,7 +459,7 @@ function fn_phoneDupl($objTabul) { alert('휴대폰 형식에 맞지 않는 데이터가 있습니다.\n 확인해 주세요'); } - $("#rowDupCnt").text(dupliPhoneDataRealList.length); + $("#excelRowDupCnt").text(dupliPhoneDataRealList.length); if (dupliPhoneDataRealList.length > 0) { // alert("중복된 휴대폰 번호가 있습니다: \n" + duplicatePhones.join(", ")); @@ -380,14 +473,45 @@ function fn_phoneDupl($objTabul) { // 고유한 데이터만 남기고 테이블 업데이트 $objTabul.setData(rowsToKeep); - $("#rowTotCnt").text(rowsToKeep.length); + $("#excelRowTotCnt").text(rowsToKeep.length); } +function fn_dupliPopupShow(){ + + $("#tableExcelDupliBtn").show(); +} + +function makeAddrMassDupliPop(dupliPhoneDataRealList) { + var sHtml = ""; + sHtml += "
"; + sHtml += ""; + sHtml += " "; + sHtml += " "; + sHtml += " "; + sHtml += " "; + sHtml += " "; + sHtml += " "; + sHtml += " "; + sHtml += " "; + sHtml += " "; + for (var i = 0; i < dupliPhoneDataRealList.length; i++) { + sHtml += " "; + sHtml += " "; + sHtml += " "; + } + sHtml += " "; + sHtml += "
중복 휴대폰번호 (" + numberWithCommas(dupliPhoneDataRealList.length) + "개)
" + dupliPhoneDataRealList[i] + "
"; + sHtml += "
"; + + $("#addrMassDupli_layer").html(sHtml); + fn_dupliPopupShow(); + +} function fn_dupliPopupShow(){ - $('#tableExcelDupliBtn').show() + $('#tableExcelDupliBtn').show(); } //한국의 핸드폰 번호 형식 검사 함수 @@ -399,6 +523,9 @@ function isValidKoreanPhoneNumber(phone) { return valid; } + + + // 상단 설명 더보기 function popMore(e){ $(e).closest(".pop_more_cont").toggleClass("pop_more_click"); @@ -414,9 +541,26 @@ function popMore(e){ + +
+ +
+
@@ -459,7 +603,7 @@ function popMore(e){ - 그룹 선택 + + +
+
+

파일 붙여넣기마우스로 엑셀, TXT파일을 여기에 끌어다 놓으세요

+
+ + +
-
-

파일 붙여넣기마우스로 엑셀, TXT파일을 여기에 끌어다 놓으세요

-
+ +

- 총 0건 / 중복 0건 + 총 0건 / 중복 0건   @@ -594,7 +746,7 @@ function popMore(e){

- + @@ -618,7 +770,7 @@ function popMore(e){
diff --git a/src/main/webapp/publish/css/popupLayer.css b/src/main/webapp/publish/css/popupLayer.css index 1e976345..c1e59d3e 100644 --- a/src/main/webapp/publish/css/popupLayer.css +++ b/src/main/webapp/publish/css/popupLayer.css @@ -1195,7 +1195,11 @@ .layer_in .popup_search_type1 button { width:63px;} .layer_in .gorup_join_cont .input_right.type1 {padding:0 0 0 30px; font-size:17px; font-weight:300;} - +/* 주소록 대량등록 */ +.file_upload_wrap{position:relative;display:flex;justify-content:space-between;align-items:center;} +.file_upload_wrap .file_add.upload_area{display:flex;width:78%;margin:0;align-items:center;justify-content:center;} +.file_upload_wrap .file_add.upload_area p{display:block;} +.file_upload_wrap .btnType.c3{position:unset;height:82px;} /* ie */