문자전송 > 엑셀 불러오기 || 주소록 > 엑셀 불러오기 -> 오류수정 번호 빈값 안나오게 처리
This commit is contained in:
parent
08ca5447ba
commit
4f5a477561
File diff suppressed because it is too large
Load Diff
@ -142,135 +142,8 @@ $(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);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -331,6 +331,14 @@ $(document).ready(function(){
|
|||||||
|
|
||||||
function excelFileChange(file) {
|
function excelFileChange(file) {
|
||||||
if (file) {
|
if (file) {
|
||||||
|
|
||||||
|
// 파일 크기 체크 (20MB)
|
||||||
|
const maxSize = 20 * 1024 * 1024; // 20MB in bytes
|
||||||
|
if (file.size > maxSize) {
|
||||||
|
alert('파일 크기는 20MB를 초과할 수 없습니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fn_loadAddActive();
|
fn_loadAddActive();
|
||||||
var reader = new FileReader();
|
var reader = new FileReader();
|
||||||
var extension = file.name.split('.').pop().toLowerCase();
|
var extension = file.name.split('.').pop().toLowerCase();
|
||||||
@ -500,15 +508,18 @@ function fn_phoneDupl($objTabul) {
|
|||||||
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
|
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
|
||||||
|
|
||||||
const errors = []; // 오류 데이터를 저장할 배열
|
const errors = []; // 오류 데이터를 저장할 배열
|
||||||
const duplicates = []; // 오류 데이터를 저장할 배열
|
|
||||||
const newData = []; // 유효한 데이터만 저장할 새로운 배열
|
const newData = []; // 유효한 데이터만 저장할 새로운 배열
|
||||||
|
|
||||||
data.forEach((row, index) => {
|
data.forEach((row, index) => {
|
||||||
if (index % 10000 === 0) {
|
|
||||||
console.log('i : ', index);
|
|
||||||
}
|
|
||||||
|
|
||||||
const number = row.addrPhoneNo;
|
const number = row.addrPhoneNo;
|
||||||
|
|
||||||
|
// number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리
|
||||||
|
if (!number || (typeof number === 'string' && !number.trim())){
|
||||||
|
console.log("number : ", number);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
|
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
|
||||||
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
|
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
|
||||||
|
|
||||||
@ -518,32 +529,24 @@ function fn_phoneDupl($objTabul) {
|
|||||||
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
|
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
|
||||||
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
|
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
|
||||||
} else {
|
} else {
|
||||||
// 오류: 유효성 통과 못함
|
// 오류: 유효성 통과 못함
|
||||||
errorCount++;
|
errorCount++;
|
||||||
$tableError.addRow({
|
|
||||||
name: row.addrNm, // 이름
|
errors.push({
|
||||||
phone: row.addrPhoneNo, // 폰번호
|
name: row.addrNm, // 이름
|
||||||
result: "오류" // 결과 메시지 추가
|
phone: row.addrPhoneNo, // 폰번호
|
||||||
});
|
result: "오류" // 결과 메시지 추가
|
||||||
errors.push({
|
});
|
||||||
name: row.addrNm, // 이름
|
|
||||||
phone: row.addrPhoneNo, // 폰번호
|
|
||||||
result: "오류" // 결과 메시지 추가
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 중복
|
// 중복
|
||||||
duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가
|
duplicateCount++;
|
||||||
$tableError.addRow({
|
|
||||||
name: row.addrNm, // 이름
|
errors.push({
|
||||||
phone: row.addrPhoneNo, // 폰번호
|
name: row.addrNm, // 이름
|
||||||
result: "중복" // 결과 메시지 추가
|
phone: row.addrPhoneNo, // 폰번호
|
||||||
});
|
result: "중복" // 결과 메시지 추가
|
||||||
duplicates.push({
|
});
|
||||||
name: row.addrNm, // 이름
|
|
||||||
phone: row.addrPhoneNo, // 폰번호
|
|
||||||
result: "중복" // 결과 메시지 추가
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -561,17 +564,14 @@ function fn_phoneDupl($objTabul) {
|
|||||||
$("#excelRowErrorCnt").text(errorCount);
|
$("#excelRowErrorCnt").text(errorCount);
|
||||||
|
|
||||||
// popup 영역
|
// popup 영역
|
||||||
|
$("#errorPopTotCnt").text($objTabul.getDataCount());
|
||||||
// 중복 카운트
|
// 중복 카운트
|
||||||
$("#errorPopDupCnt").text(duplicateCount);
|
$("#errorPopDupCnt").text(duplicateCount);
|
||||||
// 에러 카운트
|
// 에러 카운트
|
||||||
$("#errorPopErrorCnt").text(errorCount);
|
$("#errorPopErrorCnt").text(errorCount);
|
||||||
//
|
|
||||||
$("#errorPopTotCnt").text(duplicateCount+errorCount);
|
|
||||||
|
|
||||||
|
|
||||||
var errorData = errors.concat(duplicates);
|
$tableError.setData(errors);
|
||||||
// 오류 및 중복 데이터를 한 번에 추가
|
|
||||||
$tableError.setData(errorData);
|
|
||||||
|
|
||||||
if(errorCount > 0){
|
if(errorCount > 0){
|
||||||
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
|
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
|
||||||
@ -711,7 +711,7 @@ function popMore(e){
|
|||||||
<!-- 엑셀입력 -->
|
<!-- 엑셀입력 -->
|
||||||
<div class="popCont current pop_more_cont" id="popCont_1">
|
<div class="popCont current pop_more_cont" id="popCont_1">
|
||||||
<div class="titBox">
|
<div class="titBox">
|
||||||
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 3MB) 가능합니다. </p>
|
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </p>
|
||||||
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
|
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
|
||||||
<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
|
<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
|
||||||
<p>- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.</p>
|
<p>- 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.</p>
|
||||||
|
|||||||
@ -1,454 +1,453 @@
|
|||||||
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
|
||||||
//타이틀 select 선택 이벤트
|
//타이틀 select 선택 이벤트
|
||||||
$('[data-group]').on('change', '.field-selector', function() {
|
$('[data-group]').on('change', '.field-selector', function() {
|
||||||
|
|
||||||
fn_loadAddActive();
|
fn_loadAddActive();
|
||||||
|
|
||||||
|
|
||||||
var group = $(this).closest('[data-group]').data('group');
|
var group = $(this).closest('[data-group]').data('group');
|
||||||
var selectedFields = [];
|
var selectedFields = [];
|
||||||
var isDuplicate = false;
|
var isDuplicate = false;
|
||||||
|
|
||||||
|
|
||||||
// 타불 객체 가져오기
|
// 타불 객체 가져오기
|
||||||
var $objTabul = fn_utils_getTabulator();
|
var $objTabul = fn_utils_getTabulator();
|
||||||
|
|
||||||
console.log('$objTabul : ', $objTabul);
|
console.log('$objTabul : ', $objTabul);
|
||||||
|
|
||||||
if($objTabul.getData().length < 1){
|
if($objTabul.getData().length < 1){
|
||||||
alert('데이터 입력 후 선택해 주세요.');
|
alert('데이터 입력 후 선택해 주세요.');
|
||||||
$(this).val("");
|
$(this).val("");
|
||||||
fn_loadRemoveActive();
|
fn_loadRemoveActive();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 중복체크
|
// 중복체크
|
||||||
$('[data-group="' + group + '"] .field-selector').each(function() {
|
$('[data-group="' + group + '"] .field-selector').each(function() {
|
||||||
var selectedField = $(this).val();
|
var selectedField = $(this).val();
|
||||||
if (selectedField) {
|
if (selectedField) {
|
||||||
if (selectedFields.includes(selectedField)) {
|
if (selectedFields.includes(selectedField)) {
|
||||||
alert("중복된 필드를 선택할 수 없습니다.");
|
alert("중복된 필드를 선택할 수 없습니다.");
|
||||||
$(this).val(""); // 중복 필드를 선택한 경우 빈 값으로 초기화
|
$(this).val(""); // 중복 필드를 선택한 경우 빈 값으로 초기화
|
||||||
isDuplicate = true;
|
isDuplicate = true;
|
||||||
return false; // 반복문 종료
|
return false; // 반복문 종료
|
||||||
}
|
}
|
||||||
selectedFields.push(selectedField);
|
selectedFields.push(selectedField);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// 데이터 넣기
|
// 데이터 넣기
|
||||||
updateTableFields($objTabul, group);
|
updateTableFields($objTabul, group);
|
||||||
|
|
||||||
// 필드가 휴대폰이면 열 중복체크
|
// 필드가 휴대폰이면 열 중복체크
|
||||||
if($(this).val() == 'addrPhoneNo'){
|
if($(this).val() == 'addrPhoneNo'){
|
||||||
fn_phoneDupl($objTabul);
|
fn_phoneDupl($objTabul);
|
||||||
}
|
}
|
||||||
fn_loadRemoveActive();
|
fn_loadRemoveActive();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ 핸드폰 중복 데이터
|
* @ 핸드폰 중복 데이터
|
||||||
* */
|
* */
|
||||||
function fn_phoneDupl($objTabul) {
|
function fn_phoneDupl($objTabul) {
|
||||||
|
|
||||||
$tableError.clearData();
|
$tableError.clearData();
|
||||||
|
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabluC = '.'+tabulNm
|
var tabluC = '.'+tabulNm
|
||||||
|
|
||||||
var data = $objTabul.getData();
|
var data = $objTabul.getData();
|
||||||
var phoneNumberChk = false;
|
var phoneNumberChk = false;
|
||||||
var existingNumbers = new Set(); // 배열에서 Set으로 변경
|
var existingNumbers = new Set(); // 배열에서 Set으로 변경
|
||||||
|
|
||||||
let errorCount = 0; // 중복 번호 개수를 저장할 변수
|
let errorCount = 0; // 중복 번호 개수를 저장할 변수
|
||||||
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
|
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
|
||||||
|
|
||||||
const errors = []; // 오류 데이터를 저장할 배열
|
const errors = []; // 오류 데이터를 저장할 배열
|
||||||
const duplicates = []; // 오류 데이터를 저장할 배열
|
const newData = []; // 유효한 데이터만 저장할 새로운 배열
|
||||||
const newData = []; // 유효한 데이터만 저장할 새로운 배열
|
|
||||||
|
data.forEach((row, index) => {
|
||||||
data.forEach((row, index) => {
|
|
||||||
// if (index % 10000 === 0) {
|
const number = row.addrPhoneNo;
|
||||||
// console.log('i : ', index);
|
|
||||||
// }
|
// number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리
|
||||||
|
if (!number || (typeof number === 'string' && !number.trim())){
|
||||||
const number = row.addrPhoneNo;
|
console.log("number : ", number);
|
||||||
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
|
return;
|
||||||
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
|
}
|
||||||
|
|
||||||
if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
|
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
|
||||||
if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
|
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
|
||||||
row.addrPhoneNo = formattedNumber;
|
|
||||||
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
|
if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
|
||||||
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
|
if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
|
||||||
} else {
|
row.addrPhoneNo = formattedNumber;
|
||||||
// 오류: 유효성 통과 못함
|
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
|
||||||
errorCount++;
|
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
|
||||||
|
} else {
|
||||||
errors.push({
|
// 오류: 유효성 통과 못함
|
||||||
name: row.addrNm, // 이름
|
errorCount++;
|
||||||
phone: row.addrPhoneNo, // 폰번호
|
|
||||||
result: "오류" // 결과 메시지 추가
|
errors.push({
|
||||||
});
|
name: row.addrNm, // 이름
|
||||||
}
|
phone: row.addrPhoneNo, // 폰번호
|
||||||
} else {
|
result: "오류" // 결과 메시지 추가
|
||||||
// 중복
|
});
|
||||||
duplicateCount++;
|
}
|
||||||
|
} else {
|
||||||
errors.push({
|
// 중복
|
||||||
name: row.addrNm, // 이름
|
duplicateCount++;
|
||||||
phone: row.addrPhoneNo, // 폰번호
|
|
||||||
result: "중복" // 결과 메시지 추가
|
errors.push({
|
||||||
});
|
name: row.addrNm, // 이름
|
||||||
}
|
phone: row.addrPhoneNo, // 폰번호
|
||||||
});
|
result: "중복" // 결과 메시지 추가
|
||||||
|
});
|
||||||
// data 배열을 newData 배열로 대체
|
}
|
||||||
data = newData;
|
});
|
||||||
|
|
||||||
// 중복 카운트
|
// data 배열을 newData 배열로 대체
|
||||||
$(tabluC+" #rowDupCnt").text(duplicateCount);
|
data = newData;
|
||||||
// 에러 카운트
|
|
||||||
$(tabluC+" #rowErrorCnt").text(errorCount);
|
// 수정된 데이터로 테이블 업데이트
|
||||||
|
$objTabul.setData(data);
|
||||||
// popup 영역
|
|
||||||
// 중복 카운트
|
$(tabluC+" #rowTotCnt").text($objTabul.getDataCount());
|
||||||
$("#errorPopDupCnt").text(duplicateCount);
|
// 중복 카운트
|
||||||
// 에러 카운트
|
$(tabluC+" #rowDupCnt").text(duplicateCount);
|
||||||
$("#errorPopErrorCnt").text(errorCount);
|
// 에러 카운트
|
||||||
//
|
$(tabluC+" #rowErrorCnt").text(errorCount);
|
||||||
// $("#errorPopTotCnt").text(duplicateCount+errorCount);
|
|
||||||
|
// popup 영역
|
||||||
// 수정된 데이터로 테이블 업데이트
|
$("#errorPopTotCnt").text($objTabul.getDataCount());
|
||||||
$objTabul.setData(data);
|
// 중복 카운트
|
||||||
|
$("#errorPopDupCnt").text(duplicateCount);
|
||||||
// 중복 번호 개수를 #rowDupCnt 요소에 표시
|
// 에러 카운트
|
||||||
$("#rowDupCnt").text(duplicateCount);
|
$("#errorPopErrorCnt").text(errorCount);
|
||||||
|
//
|
||||||
$(tabluC+" #rowTotCnt").text($objTabul.getDataCount());
|
// $("#errorPopTotCnt").text(duplicateCount+errorCount);
|
||||||
$("#errorPopTotCnt").text($objTabul.getDataCount());
|
|
||||||
|
|
||||||
var errorData = errors.concat(duplicates);
|
// 오류 및 중복 데이터를 한 번에 추가
|
||||||
// 오류 및 중복 데이터를 한 번에 추가
|
$tableError.setData(errors);
|
||||||
$tableError.setData(errorData);
|
|
||||||
|
if(errorCount > 0){
|
||||||
if(errorCount > 0){
|
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
|
||||||
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
/*
|
||||||
/*
|
function fn_phoneDupl_old($objTabul) {
|
||||||
function fn_phoneDupl_old($objTabul) {
|
var data = $objTabul.getData();
|
||||||
var data = $objTabul.getData();
|
var uniquePhones = new Set();
|
||||||
var uniquePhones = new Set();
|
var rowsToKeep = [];
|
||||||
var rowsToKeep = [];
|
var rowsToDelete = [];
|
||||||
var rowsToDelete = [];
|
var phoneNumberChk = false;
|
||||||
var phoneNumberChk = false;
|
|
||||||
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
data.forEach((row, index) => {
|
||||||
data.forEach((row, index) => {
|
|
||||||
|
if (!isValidKoreanPhoneNumber(row.addrPhoneNo)) {
|
||||||
if (!isValidKoreanPhoneNumber(row.addrPhoneNo)) {
|
phoneNumberChk = true
|
||||||
phoneNumberChk = true
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
if (uniquePhones.has(row.addrPhoneNo)) {
|
||||||
if (uniquePhones.has(row.addrPhoneNo)) {
|
rowsToDelete.push(index); // 중복된 행의 인덱스를 기록
|
||||||
rowsToDelete.push(index); // 중복된 행의 인덱스를 기록
|
} else {
|
||||||
} else {
|
uniquePhones.add(row.addrPhoneNo);
|
||||||
uniquePhones.add(row.addrPhoneNo);
|
rowsToKeep.push(row); // 고유한 데이터만 추가
|
||||||
rowsToKeep.push(row); // 고유한 데이터만 추가
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
if(phoneNumberChk){
|
||||||
if(phoneNumberChk){
|
alert('휴대폰 형식에 맞지 않는 데이터가 있습니다.\n 확인해 주세요');
|
||||||
alert('휴대폰 형식에 맞지 않는 데이터가 있습니다.\n 확인해 주세요');
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
// 중복된 행 삭제
|
||||||
// 중복된 행 삭제
|
rowsToDelete.reverse().forEach(index => {
|
||||||
rowsToDelete.reverse().forEach(index => {
|
$objTabul.deleteRow(index);
|
||||||
$objTabul.deleteRow(index);
|
});
|
||||||
});
|
|
||||||
|
// 고유한 데이터만 남기고 테이블 업데이트
|
||||||
// 고유한 데이터만 남기고 테이블 업데이트
|
$objTabul.setData(rowsToKeep);
|
||||||
$objTabul.setData(rowsToKeep);
|
$(tabluC+" #rowTotCnt").text(rowsToKeep.length);
|
||||||
$(tabluC+" #rowTotCnt").text(rowsToKeep.length);
|
}*/
|
||||||
}*/
|
|
||||||
|
//받는사람 전체삭제 버튼 처리
|
||||||
//받는사람 전체삭제 버튼 처리
|
$('.all_del').click(function(){
|
||||||
$('.all_del').click(function(){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
var $objTabul = fn_utils_getTabulator();
|
||||||
var $objTabul = fn_utils_getTabulator();
|
|
||||||
|
$objTabul.clearData();
|
||||||
$objTabul.clearData();
|
fn_rowCntInit();
|
||||||
fn_rowCntInit();
|
|
||||||
|
// select box 초기화
|
||||||
// select box 초기화
|
$('.field-selector').each(function() { $(this).val(''); });
|
||||||
$('.field-selector').each(function() { $(this).val(''); });
|
});
|
||||||
});
|
|
||||||
|
// 받는사람 선택삭제 버튼 처리해주기
|
||||||
// 받는사람 선택삭제 버튼 처리해주기
|
$('.select_del').click(function(){
|
||||||
$('.select_del').click(function(){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
var $objTabul = fn_utils_getTabulator();
|
||||||
var $objTabul = fn_utils_getTabulator();
|
|
||||||
|
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
||||||
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
var selectedData = $objTabul.getSelectedRows();
|
||||||
var selectedData = $objTabul.getSelectedRows();
|
|
||||||
|
if(selectedData == "" || selectedData == null){
|
||||||
if(selectedData == "" || selectedData == null){
|
alert("삭제할 데이터를 선택해 주세요.");
|
||||||
alert("삭제할 데이터를 선택해 주세요.");
|
return false;
|
||||||
return false;
|
}else{ // 선택한 Row 데이터 삭제하기
|
||||||
}else{ // 선택한 Row 데이터 삭제하기
|
for(var i=0; i < selectedData.length; i++){
|
||||||
for(var i=0; i < selectedData.length; i++){
|
selectedData[i].delete();
|
||||||
selectedData[i].delete();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
totRows = $objTabul.getRows().length;
|
||||||
totRows = $objTabul.getRows().length;
|
|
||||||
|
updateTotCnt(totRows);
|
||||||
updateTotCnt(totRows);
|
});
|
||||||
});
|
|
||||||
|
|
||||||
|
//받는사람 전체삭제 버튼 처리
|
||||||
//받는사람 전체삭제 버튼 처리
|
$('.self_all_del').click(function(){
|
||||||
$('.self_all_del').click(function(){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
var $objTabul = fn_utils_getTabulator();
|
||||||
var $objTabul = fn_utils_getTabulator();
|
|
||||||
|
// 초기화 및 데이터 추가를 한번에 처리
|
||||||
// 초기화 및 데이터 추가를 한번에 처리
|
var newTableData = [];
|
||||||
var newTableData = [];
|
|
||||||
|
// 1000개의 빈 행을 미리 준비
|
||||||
// 1000개의 빈 행을 미리 준비
|
for (var i = 0; i < 1000; i++) {
|
||||||
for (var i = 0; i < 1000; i++) {
|
newTableData.push({
|
||||||
newTableData.push({
|
addrNm: "",
|
||||||
addrNm: "",
|
addrPhoneNo: "",
|
||||||
addrPhoneNo: "",
|
addrInfo1: "",
|
||||||
addrInfo1: "",
|
addrInfo2: "",
|
||||||
addrInfo2: "",
|
addrInfo3: "",
|
||||||
addrInfo3: "",
|
addrInfo4: "",
|
||||||
addrInfo4: "",
|
addrComment: ""
|
||||||
addrComment: ""
|
});
|
||||||
});
|
}
|
||||||
}
|
|
||||||
|
// 기존 데이터 초기화 후, 새로운 데이터를 한 번에 추가
|
||||||
// 기존 데이터 초기화 후, 새로운 데이터를 한 번에 추가
|
$objTabul.setData(newTableData);
|
||||||
$objTabul.setData(newTableData);
|
|
||||||
|
// 행 수 초기화 함수 호출
|
||||||
// 행 수 초기화 함수 호출
|
fn_rowCntInit();
|
||||||
fn_rowCntInit();
|
});
|
||||||
});
|
|
||||||
|
// 직접입력 받는사람 선택삭제 버튼 처리해주기
|
||||||
// 직접입력 받는사람 선택삭제 버튼 처리해주기
|
$('.self_select_del').click(function(){
|
||||||
$('.self_select_del').click(function(){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
var $objTabul = fn_utils_getTabulator();
|
||||||
var $objTabul = fn_utils_getTabulator();
|
|
||||||
|
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
||||||
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
var selectedData = $objTabul.getSelectedRows();
|
||||||
var selectedData = $objTabul.getSelectedRows();
|
|
||||||
|
if(selectedData == "" || selectedData == null){
|
||||||
if(selectedData == "" || selectedData == null){
|
alert("삭제할 데이터를 선택해 주세요.");
|
||||||
alert("삭제할 데이터를 선택해 주세요.");
|
return false;
|
||||||
return false;
|
}else{ // 선택한 Row 데이터 삭제하기
|
||||||
}else{ // 선택한 Row 데이터 삭제하기
|
for(var i=0; i < selectedData.length; i++){
|
||||||
for(var i=0; i < selectedData.length; i++){
|
selectedData[i].delete();
|
||||||
selectedData[i].delete();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// 남은 행 수 계산
|
||||||
// 남은 행 수 계산
|
var totRows = $objTabul.getRows().length;
|
||||||
var totRows = $objTabul.getRows().length;
|
|
||||||
|
// 1000개 행이 되도록 나머지 행 생성
|
||||||
// 1000개 행이 되도록 나머지 행 생성
|
for (var i = totRows; i < 1000; i++) {
|
||||||
for (var i = totRows; i < 1000; i++) {
|
$objTabul.addRow({addrNm: "", addrPhoneNo: "", addrInfo1: "", addrInfo2: "", addrInfo3: "", addrInfo4: "", addrComment: ""});
|
||||||
$objTabul.addRow({addrNm: "", addrPhoneNo: "", addrInfo1: "", addrInfo2: "", addrInfo3: "", addrInfo4: "", addrComment: ""});
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
var existingNumbers = []; // 중복 번호를 저장할 배열
|
||||||
var existingNumbers = []; // 중복 번호를 저장할 배열
|
// 모든 행의 'addrPhoneNo' 값을 배열에 추가
|
||||||
// 모든 행의 'addrPhoneNo' 값을 배열에 추가
|
var allRows = $tableSelf.getData(); // 테이블의 모든 데이터를 가져옴
|
||||||
var allRows = $tableSelf.getData(); // 테이블의 모든 데이터를 가져옴
|
allRows.forEach(function(row) {
|
||||||
allRows.forEach(function(row) {
|
if (row.addrPhoneNo) {
|
||||||
if (row.addrPhoneNo) {
|
const cleanedExistingNumber = row.addrPhoneNo.replace(/[^0-9]/g, ''); // 숫자만 남김
|
||||||
const cleanedExistingNumber = row.addrPhoneNo.replace(/[^0-9]/g, ''); // 숫자만 남김
|
existingNumbers.push(cleanedExistingNumber); // 기존 번호를 배열에 추가
|
||||||
existingNumbers.push(cleanedExistingNumber); // 기존 번호를 배열에 추가
|
}
|
||||||
}
|
});
|
||||||
});
|
updateTotCnt(existingNumbers.length);
|
||||||
updateTotCnt(existingNumbers.length);
|
});
|
||||||
});
|
|
||||||
|
//전체 데이터 갯수 구하는 함수
|
||||||
//전체 데이터 갯수 구하는 함수
|
function updateTotCnt(data){
|
||||||
function updateTotCnt(data){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
$(tabluC+" #rowTotCnt").text(data);
|
||||||
$(tabluC+" #rowTotCnt").text(data);
|
|
||||||
|
}
|
||||||
}
|
|
||||||
|
/*
|
||||||
/*
|
* 타이틀 select 선택할때마다 실행해서
|
||||||
* 타이틀 select 선택할때마다 실행해서
|
* 데이터테이블 필드값 수정
|
||||||
* 데이터테이블 필드값 수정
|
*/
|
||||||
*/
|
function updateTableFields($objTabul, group) {
|
||||||
function updateTableFields($objTabul, group) {
|
// 데이터가져오기
|
||||||
// 데이터가져오기
|
var currentData = $objTabul.getData();
|
||||||
var currentData = $objTabul.getData();
|
|
||||||
|
// 필드 초기 값 셋팅
|
||||||
// 필드 초기 값 셋팅
|
var columns = [
|
||||||
var columns = [
|
{formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
||||||
{formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
cell.getRow().toggleSelect();
|
||||||
cell.getRow().toggleSelect();
|
}}
|
||||||
}}
|
,{formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", width:40}
|
||||||
,{formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", width:40}
|
];
|
||||||
];
|
|
||||||
|
var fieldMapping = [];
|
||||||
var fieldMapping = [];
|
// 초기 후 필드 값 셋팅하기
|
||||||
// 초기 후 필드 값 셋팅하기
|
$('[data-group="' + group + '"] .field-selector').each(function(index) {
|
||||||
$('[data-group="' + group + '"] .field-selector').each(function(index) {
|
var selectedField = $(this).val();
|
||||||
var selectedField = $(this).val();
|
// ASCII 문자 코드 사용 - 65=A, 66=B ...
|
||||||
// ASCII 문자 코드 사용 - 65=A, 66=B ...
|
var field = String.fromCharCode(65 + index);
|
||||||
var field = String.fromCharCode(65 + index);
|
if (selectedField) {
|
||||||
if (selectedField) {
|
columns.push({
|
||||||
columns.push({
|
title: field
|
||||||
title: field
|
, field: selectedField
|
||||||
, field: selectedField
|
, hozAlign: "center"
|
||||||
, hozAlign: "center"
|
, headerHozAlign: "center"
|
||||||
, headerHozAlign: "center"
|
// , editor: "input"
|
||||||
// , editor: "input"
|
, editor: false
|
||||||
, editor: false
|
, width: 125
|
||||||
, width: 125
|
, validator: ["maxLength:100", "string"]
|
||||||
, validator: ["maxLength:100", "string"]
|
});
|
||||||
});
|
fieldMapping.push(selectedField);
|
||||||
fieldMapping.push(selectedField);
|
} else {
|
||||||
} else {
|
columns.push({
|
||||||
columns.push({
|
title: field
|
||||||
title: field
|
, field: field
|
||||||
, field: field
|
, hozAlign: "center"
|
||||||
, hozAlign: "center"
|
, headerHozAlign: "center"
|
||||||
, headerHozAlign: "center"
|
// , editor: "input"
|
||||||
// , editor: "input"
|
, editor: false
|
||||||
, editor: false
|
, width: 125
|
||||||
, width: 125
|
, validator: ["maxLength:100", "string"]
|
||||||
, validator: ["maxLength:100", "string"]
|
});
|
||||||
});
|
fieldMapping.push(field);
|
||||||
fieldMapping.push(field);
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
// 데이터 셋팅
|
||||||
// 데이터 셋팅
|
var updatedData = currentData.map(row => {
|
||||||
var updatedData = currentData.map(row => {
|
var newRow = {};
|
||||||
var newRow = {};
|
fieldMapping.forEach((field, index) => {
|
||||||
fieldMapping.forEach((field, index) => {
|
newRow[field] = row[Object.keys(row)[index]] || "";
|
||||||
newRow[field] = row[Object.keys(row)[index]] || "";
|
});
|
||||||
});
|
return newRow;
|
||||||
return newRow;
|
});
|
||||||
});
|
|
||||||
|
$objTabul.setColumns(columns);
|
||||||
$objTabul.setColumns(columns);
|
$objTabul.setData(updatedData);
|
||||||
$objTabul.setData(updatedData);
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 주소록 에러결과 초기화
|
||||||
// 주소록 에러결과 초기화
|
function fn_errorPopClean(){
|
||||||
function fn_errorPopClean(){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
// popup 영역
|
||||||
// popup 영역
|
$tableError.clearData();
|
||||||
$tableError.clearData();
|
|
||||||
|
|
||||||
|
// 중복 카운트
|
||||||
// 중복 카운트
|
$("#errorPopDupCnt").text(0);
|
||||||
$("#errorPopDupCnt").text(0);
|
// 에러 카운트
|
||||||
// 에러 카운트
|
$("#errorPopErrorCnt").text(0);
|
||||||
$("#errorPopErrorCnt").text(0);
|
//
|
||||||
//
|
$("#errorPopTotCnt").text(0);
|
||||||
$("#errorPopTotCnt").text(0);
|
|
||||||
|
// select box 초기화
|
||||||
// select box 초기화
|
$(tabluC+' .field-selector').each(function() { $(this).val(''); });
|
||||||
$(tabluC+' .field-selector').each(function() { $(this).val(''); });
|
|
||||||
|
}
|
||||||
}
|
|
||||||
|
function fn_rowCntInit(){
|
||||||
function fn_rowCntInit(){
|
|
||||||
|
var tabulNm = fn_utils_getTabulatorNm();
|
||||||
var tabulNm = fn_utils_getTabulatorNm();
|
var tabluC = '.'+tabulNm
|
||||||
var tabluC = '.'+tabulNm
|
|
||||||
|
$(tabluC+" #rowTotCnt").text(0); //총건수 수정
|
||||||
$(tabluC+" #rowTotCnt").text(0); //총건수 수정
|
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
||||||
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
$(tabluC+" #rowErrorCnt").text(0); //중복건수 수정
|
||||||
$(tabluC+" #rowErrorCnt").text(0); //중복건수 수정
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
//1. 필드 초기화 함수
|
||||||
//1. 필드 초기화 함수
|
function resetTableFieldsToDefault() {
|
||||||
function resetTableFieldsToDefault() {
|
|
||||||
|
// 타불 객체 가져오기
|
||||||
// 타불 객체 가져오기
|
var $objTabul = fn_utils_getTabulator();
|
||||||
var $objTabul = fn_utils_getTabulator();
|
|
||||||
|
// 필드를 A, B, C, D로 초기화
|
||||||
// 필드를 A, B, C, D로 초기화
|
var defaultFields = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
|
||||||
var defaultFields = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
|
|
||||||
|
// 테이블의 기존 데이터를 가져옵니다.
|
||||||
// 테이블의 기존 데이터를 가져옵니다.
|
var currentData = $objTabul.getData();
|
||||||
var currentData = $objTabul.getData();
|
|
||||||
|
// 초기 필드(A, B, C, D 등)를 위한 열 설정
|
||||||
// 초기 필드(A, B, C, D 등)를 위한 열 설정
|
var columns = [
|
||||||
var columns = [
|
{formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
||||||
{formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
cell.getRow().toggleSelect();
|
||||||
cell.getRow().toggleSelect();
|
}},
|
||||||
}},
|
{formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", width:40}
|
||||||
{formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", width:40}
|
];
|
||||||
];
|
|
||||||
|
// 기본 필드로 열 구성
|
||||||
// 기본 필드로 열 구성
|
defaultFields.forEach(field => {
|
||||||
defaultFields.forEach(field => {
|
columns.push({
|
||||||
columns.push({
|
title: field,
|
||||||
title: field,
|
field: field,
|
||||||
field: field,
|
hozAlign: "center",
|
||||||
hozAlign: "center",
|
headerHozAlign: "center",
|
||||||
headerHozAlign: "center",
|
editor: false, // 편집 비활성화
|
||||||
editor: false, // 편집 비활성화
|
width: 125,
|
||||||
width: 125,
|
validator: ["maxLength:100", "string"]
|
||||||
validator: ["maxLength:100", "string"]
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
// 테이블을 기본 필드로 업데이트
|
||||||
// 테이블을 기본 필드로 업데이트
|
$objTabul.setColumns(columns);
|
||||||
$objTabul.setColumns(columns);
|
// $objTabul.setData(updatedData);
|
||||||
// $objTabul.setData(updatedData);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -158,7 +158,6 @@ $(document).ready(function(){
|
|||||||
$tableExcel.on("columnWidth",function(column){
|
$tableExcel.on("columnWidth",function(column){
|
||||||
var titleIndex = titleArray.indexOf(column._column.definition.title);
|
var titleIndex = titleArray.indexOf(column._column.definition.title);
|
||||||
titleIndex += 1;
|
titleIndex += 1;
|
||||||
console.log(titleIndex)
|
|
||||||
if(titleIndex != 0){
|
if(titleIndex != 0){
|
||||||
$('.tableExcel .select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
|
$('.tableExcel .select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
|
||||||
}else{
|
}else{
|
||||||
@ -181,7 +180,6 @@ $(document).ready(function(){
|
|||||||
$tableClip.on("columnWidth",function(column){
|
$tableClip.on("columnWidth",function(column){
|
||||||
var titleIndex = titleArray.indexOf(column._column.definition.title);
|
var titleIndex = titleArray.indexOf(column._column.definition.title);
|
||||||
titleIndex += 1;
|
titleIndex += 1;
|
||||||
console.log(titleIndex)
|
|
||||||
if(titleIndex != 0){
|
if(titleIndex != 0){
|
||||||
$('.tableClip .select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
|
$('.tableClip .select_adr_hd>div').eq(titleIndex).css('width', column._column.width);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user