문자전송 > 엑셀 불러오기 || 주소록 > 엑셀 불러오기 -> 오류수정 번호 빈값 안나오게 처리

This commit is contained in:
hehih 2024-09-19 10:45:13 +09:00
parent 08ca5447ba
commit 4f5a477561
5 changed files with 1354 additions and 1485 deletions

View File

@ -5,14 +5,13 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<script type="text/javascript">
var currentTime = new Date().getTime(); // 현재 시간을 밀리초로 가져옵니다.
</script>
<script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script>
<script type="text/javascript" src="https://oss.sheetjs.com/sheetjs/xlsx.full.min.js"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/init.js'/>?v="+currentTime></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/event.js'/>?v="+currentTime></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>?v="+currentTime></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/init.js'/>?v=20240919"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/event.js'/>?v=20240919"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>?v=20240919"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/cmn.js?date=202409021440'/>"></script>

View File

@ -143,133 +143,6 @@ $(document).ready(function(){
// 오류검사 항목 중복제거
function SetTableErrorDupliCheck(sVal) {
var isDuplicate = false;
if (tableErrorCheckData.length == 0) {
tableErrorCheckData.push(sVal);
}
else {
for (var i = 0; i < tableErrorCheckData.length; i++)
{
if (tableErrorCheckData[i] == sVal) {
isDuplicate = true;
}
}
if (isDuplicate) {
return;
}
else {
tableErrorCheckData.push(sVal);
}
}
}
// 오류검사 항목 중복제거
function SetTableErrorDupliCheck(sVal) {
var isDuplicate = false;
if (tableErrorCheckData.length == 0) {
tableErrorCheckData.push(sVal);
}
else {
for (var i = 0; i < tableErrorCheckData.length; i++)
{
if (tableErrorCheckData[i] == sVal) {
isDuplicate = true;
}
}
if (isDuplicate) {
return;
}
else {
tableErrorCheckData.push(sVal);
}
}
}
$('.check_validity').click(function(){
tableErrorCheckData.length = 0; // 오류 번호 배열 초기화
var data = $tableExcel.getRows();
var invalid = $tableExcel.getInvalidCells(); //오류 데이터 체크
var dataLen = $tableExcel.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();
SetTableErrorDupliCheck(cellValue);
}
for(var i=0; i < dataLen; i++){
// 휴대폰번호 체크
var phone = data[i].getData().phone;
var valiCheck = checkHpNum(phone);
if(!valiCheck){
SetTableErrorDupliCheck(phone);
}
}
}
else {
for(var i=0; i < dataLen; i++){
// 휴대폰번호 체크
var phone = data[i].getData().phone;
var valiCheck = checkHpNum(phone);
if(!valiCheck){
SetTableErrorDupliCheck(phone);
}
}
}
}
else {
alert("연락처를 입력해 주세요.");
return false;
}
if (tableErrorCheckData.length > 0) {
for (var i = 0; i < tableErrorCheckData.length; i++)
{
errMsg += tableErrorCheckData[i];
if ((tableErrorCheckData.length - 1) > i) {
errMsg += ", ";
}
}
alert(errMsg + "의 내용에 오류가 있습니다.");
}
else {
alert("오류 데이터가 없습니다.");
}
return false;
});
//받는사람 중복 삭제
$('.duple_del').click(function(){
//기존 연락처 모두 불러오기
var data = $tableExcel.getRows();
var tableData = [];
var dpCnt = 0;
var totLen = $tableExcel.getRows().length;
for(var i=0; i < totLen; i++){
tableData.push({name: data[i].getData().name.trim(), phone: data[i].getData().phone.trim()});
}
var removeDuplData = dupliPhoneData(tableData);
$tableExcel.setData(removeDuplData);
//총 받는사람 수 계산
totRows = $tableExcel.getRows().length;
updateTotCnt(totRows);
});
});

View File

@ -331,6 +331,14 @@ $(document).ready(function(){
function excelFileChange(file) {
if (file) {
// 파일 크기 체크 (20MB)
const maxSize = 20 * 1024 * 1024; // 20MB in bytes
if (file.size > maxSize) {
alert('파일 크기는 20MB를 초과할 수 없습니다.');
return;
}
fn_loadAddActive();
var reader = new FileReader();
var extension = file.name.split('.').pop().toLowerCase();
@ -500,15 +508,18 @@ function fn_phoneDupl($objTabul) {
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
const errors = []; // 오류 데이터를 저장할 배열
const duplicates = []; // 오류 데이터를 저장할 배열
const newData = []; // 유효한 데이터만 저장할 새로운 배열
data.forEach((row, index) => {
if (index % 10000 === 0) {
console.log('i : ', index);
}
const number = row.addrPhoneNo;
// number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리
if (!number || (typeof number === 'string' && !number.trim())){
console.log("number : ", number);
return;
}
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
@ -518,32 +529,24 @@ function fn_phoneDupl($objTabul) {
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
} else {
// 오류: 유효성 통과 못함
errorCount++;
$tableError.addRow({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "오류" // 결과 메시지 추가
});
errors.push({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "오류" // 결과 메시지 추가
});
// 오류: 유효성 통과 못함
errorCount++;
errors.push({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "오류" // 결과 메시지 추가
});
}
} else {
// 중복
duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가
$tableError.addRow({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "중복" // 결과 메시지 추가
});
duplicates.push({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "중복" // 결과 메시지 추가
});
// 중복
duplicateCount++;
errors.push({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "중복" // 결과 메시지 추가
});
}
});
@ -561,17 +564,14 @@ function fn_phoneDupl($objTabul) {
$("#excelRowErrorCnt").text(errorCount);
// popup 영역
$("#errorPopTotCnt").text($objTabul.getDataCount());
// 중복 카운트
$("#errorPopDupCnt").text(duplicateCount);
// 에러 카운트
$("#errorPopErrorCnt").text(errorCount);
//
$("#errorPopTotCnt").text(duplicateCount+errorCount);
var errorData = errors.concat(duplicates);
// 오류 및 중복 데이터를 한 번에 추가
$tableError.setData(errorData);
$tableError.setData(errors);
if(errorCount > 0){
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
@ -711,7 +711,7 @@ function popMore(e){
<!-- 엑셀입력 -->
<div class="popCont current pop_more_cont" id="popCont_1">
<div class="titBox">
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 3MB) 가능합니다. </p>
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </p>
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
<p>- 구분선(|), 역슬래시(, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
<p>- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.</p>

View File

@ -71,15 +71,18 @@ $(document).ready(function(){
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
const errors = []; // 오류 데이터를 저장할 배열
const duplicates = []; // 오류 데이터를 저장할 배열
const newData = []; // 유효한 데이터만 저장할 새로운 배열
data.forEach((row, index) => {
// if (index % 10000 === 0) {
// console.log('i : ', index);
// }
const number = row.addrPhoneNo;
// number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리
if (!number || (typeof number === 'string' && !number.trim())){
console.log("number : ", number);
return;
}
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
@ -89,14 +92,14 @@ $(document).ready(function(){
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
} else {
// 오류: 유효성 통과 못함
errorCount++;
// 오류: 유효성 통과 못함
errorCount++;
errors.push({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "오류" // 결과 메시지 추가
});
errors.push({
name: row.addrNm, // 이름
phone: row.addrPhoneNo, // 폰번호
result: "오류" // 결과 메시지 추가
});
}
} else {
// 중복
@ -113,12 +116,17 @@ $(document).ready(function(){
// data 배열을 newData 배열로 대체
data = newData;
// 수정된 데이터로 테이블 업데이트
$objTabul.setData(data);
$(tabluC+" #rowTotCnt").text($objTabul.getDataCount());
// 중복 카운트
$(tabluC+" #rowDupCnt").text(duplicateCount);
// 에러 카운트
$(tabluC+" #rowErrorCnt").text(errorCount);
// popup 영역
$("#errorPopTotCnt").text($objTabul.getDataCount());
// 중복 카운트
$("#errorPopDupCnt").text(duplicateCount);
// 에러 카운트
@ -126,18 +134,9 @@ $(document).ready(function(){
//
// $("#errorPopTotCnt").text(duplicateCount+errorCount);
// 수정된 데이터로 테이블 업데이트
$objTabul.setData(data);
// 중복 번호 개수를 #rowDupCnt 요소에 표시
$("#rowDupCnt").text(duplicateCount);
$(tabluC+" #rowTotCnt").text($objTabul.getDataCount());
$("#errorPopTotCnt").text($objTabul.getDataCount());
var errorData = errors.concat(duplicates);
// 오류 및 중복 데이터를 한 번에 추가
$tableError.setData(errorData);
$tableError.setData(errors);
if(errorCount > 0){
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');

View File

@ -158,7 +158,6 @@ $(document).ready(function(){
$tableExcel.on("columnWidth",function(column){
var titleIndex = titleArray.indexOf(column._column.definition.title);
titleIndex += 1;
console.log(titleIndex)
if(titleIndex != 0){
$('.tableExcel .select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
}else{
@ -181,7 +180,6 @@ $(document).ready(function(){
$tableClip.on("columnWidth",function(column){
var titleIndex = titleArray.indexOf(column._column.definition.title);
titleIndex += 1;
console.log(titleIndex)
if(titleIndex != 0){
$('.tableClip .select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
}else{