diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp index d23a009d..5e821eb4 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp @@ -15,6 +15,8 @@ + + + + + + +
+ +
+ + + +
+ +
+ + + +
+ + + + + + + + + +
+
+

- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.

+

- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

+

- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.

+

- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

+

- 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

+
+
+ +
+
+ + +
+ + + + + + + + + + + + +
엑셀입력 표
+
+
+

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

+
+ + +
+
+
+ + +
+

+ 총 0건 + / 중복 0건 + / 오류 0건 + +

+ + + + +

+ +
+ + + + +
+ +
+
+
+
+ + +
+ +
+
+ + + + + + + + + + + + + +
\ No newline at end of file diff --git a/src/main/webapp/js/kakao/at/addr.js b/src/main/webapp/js/kakao/at/addr.js index d56d58c8..6463f4c7 100644 --- a/src/main/webapp/js/kakao/at/addr.js +++ b/src/main/webapp/js/kakao/at/addr.js @@ -320,7 +320,7 @@ function fnAddrGrpSearch(){ }); } - +/* //문자발송 받는사람 목록 주소록에 등록하기 기능 처리 $('.registAddr').click(function(){ @@ -384,7 +384,7 @@ $('.registAddr').click(function(){ rep4List[i] = rep4; } - /* if(name == "" || name == null){ + if(name == "" || name == null){ alert("수신 목록에 이름이 없는 항목이 있습니다. 이름을 입력해 주세요"); return false; @@ -418,7 +418,7 @@ $('.registAddr').click(function(){ rep4List[i] = rep4; } - } */ + } } @@ -520,4 +520,4 @@ $('.registAddr').click(function(){ }); - +*/ diff --git a/src/main/webapp/js/kakao/at/alimtalkExcel.js b/src/main/webapp/js/kakao/at/alimtalkExcel.js index 5e571f81..93867c7d 100644 --- a/src/main/webapp/js/kakao/at/alimtalkExcel.js +++ b/src/main/webapp/js/kakao/at/alimtalkExcel.js @@ -23,12 +23,6 @@ $(document).ready(function(){ }); - //치환문자 있는 엑섹불러오기 버튼 클릭시 파일 첨부 실행 - $('.c3').click(function(){ // 엑셀파일 불러오기 선택 시 - - $("#excelFile").click(); - - }); }); diff --git a/src/main/webapp/js/kakao/at/tabulator.js b/src/main/webapp/js/kakao/at/tabulator.js index 09095cc9..051e09bd 100644 --- a/src/main/webapp/js/kakao/at/tabulator.js +++ b/src/main/webapp/js/kakao/at/tabulator.js @@ -21,14 +21,44 @@ $(document).ready(function (){ layout:"fitColumns", headerHozAlign:"center", validationMode:"highlight", - headerHozAlign:"center", - validationMode:"highlight", - placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional) - resizableColumns:false, + headerHozAlign:"center", + clipboard: true, // 클립보드 기능 활성화 + clipboardPasteAction: "replace", // 붙여넣기 시 기존 데이터 교체 (또는 "update" 선택 가능) + validationMode:"highlight", + placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional) + resizableColumns:false, + clipboardPasteParser: function(clipboard){ + const rows = clipboard.split("\n").filter(row => row.trim() !== ""); + + // 1. 붙여넣기 데이터 → 가공 + const newData = rows + .map(row => { + const cols = row.split("\t"); + const phoneRaw = cols[0].trim(); + const phone = removeDash(phoneRaw); + return { phone }; + }) + .filter(row => checkHpNum(row.phone)); + + // 2. 기존 데이터 가져오기 + const existingData = tableL.getData(); + + // 3. 기존 데이터 + 붙여넣은 데이터 합치기 + const combinedData = existingData.concat(newData); + + // 4. 중복 제거 + 갯수 카운트 + const result = removeDuplicatesAndCount(combinedData, 'phone'); + + // 5. 외부 처리 함수 호출 + setAllCntData(result); + fn_priceClclt(); + + // 6. 테이블에 반영할 데이터 리턴 + return result; + }, columnDefaults:{ // 공통설정 hozAlign: "center", headerHozAlign: "center", - editor: "input", editor: false }, columns:[ //Define Table Columns @@ -179,48 +209,50 @@ $(document).ready(function (){ //최근전송내역 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기) $(document).on('click', '#latestAddPhone', function (){ - var addPhoneList = []; //신규로 추가할 전화번호 저장변수 - - $("input:checkbox[name='latAddrChk']:checked").each(function(index){ - - var chkPhone = $(this).val(); - - if(!checkHpNum(chkPhone)){ - - alert("올바른 전화번호가 아닙니다."); - return false; - - }else{ - - addPhoneList.push({phone: removeDash(chkPhone.trim())}); - - } - - }); - - - if(addPhoneList.length > 0){ - //연락처 추가해 주기 - addPhoneInfo(addPhoneList); - $("#btnLatestAddPhoneClose").trigger("click"); - } - else { - alert("연락처를 선택해주세요."); - return false; - } - - //중복연락처 제거 - //var removeDuplData = dupliPhoneData(addPhoneList); - - //받는사람 목록에 추가 - //tableL.addData(removeDuplData); - - //총 받는사람 수 계산 - //totRows = tableL.getRows().length; - //updateTotCnt(totRows); - - //결제 금액 구하기 - //totalPriceSum(totRows); + var addPhoneList = []; + + $("input:checkbox[name='latAddrChk']:checked").each(function(){ + var chkPhone = $(this).val().trim(); + + console.log('b chkPhone: ', chkPhone); + if(!checkHpNum(chkPhone)){ +// alert("올바른 전화번호가 아닙니다."); + return false; + } +// console.log('a chkPhone: ', chkPhone); + addPhoneList.push(chkPhone); + }); + + if(addPhoneList.length < 1) { + alert("연락처를 선택해주세요."); + return false; + } + + + // 1. 기존 로직: 연락처 추가 처리 +// addPhoneInfo(addPhoneList); + + // 2. Tabulator에 넣기 위한 포맷 변환 + const formattedData = addPhoneList.map(num => ({phone: num})); + + // 3. 기존 테이블 데이터와 합치기 + const existingData = tableL.getData(); + const combinedData = existingData.concat(formattedData); + + // 4. 중복 제거 + const result = removeDuplicatesAndCount(combinedData, 'phone'); + +// console.log('result: ', result); + // 5. 테이블에 반영 +// tableL.setData(result); + + // 6. 수량/가격 계산 + setAllCntData(result); + fn_priceClclt(); + + // 7. 팝업 닫기 + $("#btnLatestAddPhoneClose").trigger("click"); + }); @@ -312,63 +344,6 @@ $(document).ready(function (){ } - //오류 검사 버튼 처리 - $('.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; - - } - - }); - }); var tableErrorData = [];