주소록 유효성/중복 검사 성능 개선
This commit is contained in:
parent
4538a78089
commit
a6cc44ed8a
@ -159,65 +159,7 @@ function linkPage(pageNo){
|
||||
$(document).ready(function(){
|
||||
//Tabulator AJAX Data Loading
|
||||
|
||||
//받는사람 전체삭제 버튼 처리
|
||||
$('.all_del').click(function(){
|
||||
var data = $tableClip.getRows();
|
||||
if(data == null || data == ""){
|
||||
alert("받는사람을 추가해 주세요.");
|
||||
return false;
|
||||
}else{
|
||||
$tableClip.clearData();
|
||||
$("#rowTotCnt").text(0); //총건수 수정
|
||||
$("#rowDupCnt").text(0); //중복건수 수정
|
||||
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
// 받는사람 오류번호 삭제 처리해주기
|
||||
$('.chkVali_del').click(function(){
|
||||
//기존 연락처 모두 불러오기
|
||||
var data = $tableClip.getRows();
|
||||
var tableData = [];
|
||||
var totLen = $tableClip.getRows().length;
|
||||
var errCnt = 0;
|
||||
|
||||
if(totLen > 0){
|
||||
if(confirm("올바르지 않은 연락처 정보를 삭제 하시겠습니까?")){
|
||||
for(var i=0; i < totLen; i++){
|
||||
|
||||
|
||||
var phone = data[i].getData().phone;
|
||||
var valiCheck = checkHpNum(phone);
|
||||
if(valiCheck){
|
||||
tableData.push({name: data[i].getData().name.trim(), phone: data[i].getData().phone.trim(), info1:data[i].getData().info1, info2:data[i].getData().info2, info3:data[i].getData().info3, info4:data[i].getData().info4, memo:data[i].getData().memo});
|
||||
}else{
|
||||
errCnt++;
|
||||
}
|
||||
}
|
||||
|
||||
var removeDuplData = dupliPhoneData(tableData);
|
||||
|
||||
$tableClip.setData(removeDuplData);
|
||||
|
||||
//총 받는사람 수 계산
|
||||
totRows = $tableClip.getRows().length;
|
||||
console.log('totRows : ', totRows);
|
||||
updateTotCnt(totRows);
|
||||
|
||||
if(errCnt > 0){
|
||||
alert(errCnt + " 건의 연락처를 삭제하였습니다.");
|
||||
return false;
|
||||
}else{
|
||||
alert("오류가 있는 연락처가 없습니다.");
|
||||
}
|
||||
}
|
||||
}else{
|
||||
alert("연락처 정보를 입력해 주세요.");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
//전체 데이터 갯수 구하는 함수
|
||||
function updateTotCnt(data){
|
||||
@ -338,27 +280,6 @@ $(document).ready(function(){
|
||||
});
|
||||
|
||||
|
||||
|
||||
//받는사람 중복 삭제
|
||||
$('.duple_del').click(function(){
|
||||
//기존 연락처 모두 불러오기
|
||||
var data = $tableClip.getRows();
|
||||
var tableData = [];
|
||||
var dpCnt = 0;
|
||||
var totLen = $tableClip.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);
|
||||
$tableClip.setData(removeDuplData);
|
||||
|
||||
//총 받는사람 수 계산
|
||||
totRows = $tableClip.getRows().length;
|
||||
updateTotCnt(totRows);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
@ -367,67 +288,43 @@ $(document).ready(function(){
|
||||
|
||||
//받는 사람 리스트 영역에 클립보드 데이터 가져와보기
|
||||
// 붙여넣기 기능
|
||||
$('#tabulator_clip').on('paste', function (e) {
|
||||
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
|
||||
$('#tabulator_clip').off('paste').on('paste', function (e) {
|
||||
var element = e.originalEvent.clipboardData.getData('text');
|
||||
var elmSplit = element.split("\n");
|
||||
var elmLen = elmSplit.length;
|
||||
console.log('elmSplit : ', elmSplit);
|
||||
|
||||
if(elmLen < 0){
|
||||
alert("붙여넣을 연락처를 복사해주세요.");
|
||||
return false;
|
||||
}
|
||||
if (elmLen > 20001) {
|
||||
alert("2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
tableErrorData.length = 0; // 오류 번호 배열 초기화
|
||||
|
||||
var realPhone = [];
|
||||
|
||||
for(var i = 0; i < elmLen; i++){
|
||||
var splitStr = elmSplit[i];
|
||||
var tabData = splitStr.split("\t"); // 탭 구분으로 데이터 분할
|
||||
var comData = splitStr.split(","); // 콤마 구분으로 데이터 분할
|
||||
var splitData = (tabData.length >= 2) ? tabData : comData;
|
||||
for (var i = 0; i < elmSplit.length; i++) {
|
||||
var splitStr = elmSplit[i].trim();
|
||||
if (splitStr === "") continue; // 공백 행 무시
|
||||
|
||||
if(splitData.length == 0){ // 데이터가 없는 경우
|
||||
alert("탭으로 구분하여 데이터를 복사해 주세요.");
|
||||
var tabData = splitStr.split("\t");
|
||||
var comData = splitStr.split(",");
|
||||
|
||||
var splitData = (tabData.length > 1) ? tabData : comData;
|
||||
|
||||
if (splitData.length === 0) {
|
||||
alert("탭 또는 콤마로 구분하여 데이터를 복사해 주세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(splitData.length == 1){
|
||||
realPhone.push({ A: splitData[0].trim() });
|
||||
} else {
|
||||
let keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
|
||||
let data = {};
|
||||
splitData.forEach((item, index) => {
|
||||
data[keys[index]] = item.trim();
|
||||
});
|
||||
realPhone.push(data);
|
||||
}
|
||||
let keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
|
||||
let data = {};
|
||||
splitData.forEach((item, index) => {
|
||||
data[keys[index]] = item.trim() || ""; // 빈 문자열로 기본값 설정
|
||||
});
|
||||
realPhone.push(data);
|
||||
}
|
||||
console.log('realPhone : ', realPhone);
|
||||
|
||||
var recTableData = $tableClip.getRows().map(row => createDataObject(row.getData()));
|
||||
console.log('recTableData : ', recTableData);
|
||||
var tableData = recTableData.concat(realPhone);
|
||||
|
||||
// 중복 연락처 제거 작업 (필요에 따라 적용)
|
||||
// var removeDuplPhone = dupliPhoneData(tableData);
|
||||
var removeDuplPhone = tableData; // 현재 중복 제거하지 않음
|
||||
|
||||
// 기존 데이터를 유지하고 새 데이터를 추가한 결과를 테이블에 반영
|
||||
$tableClip.setData(removeDuplPhone);
|
||||
|
||||
var totRows = $tableClip.getRows().length;
|
||||
updateTotCnt(totRows); // 전체 데이터 갯수 구하기
|
||||
|
||||
if (tableErrorData.length > 0) {
|
||||
alert("데이터를 확인해 주세요.");
|
||||
}
|
||||
console.log('Parsed data:', realPhone);
|
||||
console.log('Tabulator data before getData:', $tableClip.getData());
|
||||
// $tableClip.clearData();
|
||||
$tableClip.setData(realPhone);
|
||||
var totRows = $tableClip.getDataCount();
|
||||
updateTotCnt(totRows);
|
||||
console.log('Tabulator data after getData:', $tableClip.getData());
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -539,14 +436,11 @@ function GetAddrMassDupli() {
|
||||
</div>
|
||||
<div class="excel_middle2">
|
||||
<p>
|
||||
총 <span class="c_e40000 fwBold" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a fwBold" id="rowDupCnt">0</span>건
|
||||
<!-- -->
|
||||
<button type="button" class="btnType btnType6" data-tooltip="addrMassDupli_layer" id="tableClipDupliBtn">중복번호</button>
|
||||
<!-- <button type="button" class="btnType btnType6" data-tooltip="addrMassDupli_layer" onclick="GetAddrMassDupli()" id="btnAddrMassDupli">중복번호</button> -->
|
||||
<!-- -->
|
||||
<!-- <button type="button" class="btnType btnType6" data-tooltip="addrMassSaveDupli_layer" onclick="GetAddrMassSaveDupli()" id="btnAddrMassSaveDupli">중복번호</button> -->
|
||||
총 <span class="c_e40000 fwBold" id="rowTotCnt">0</span>건
|
||||
/ 중복 <span class="c_002c9a fwBold" id="rowDupCnt">0</span>건
|
||||
/ 오류 <span class="c_002c9a fwBold" id="rowErrorCnt">0</span>건
|
||||
<button type="button" class="btn_list_detail" data-tooltip="adr_popup14"><img src="/publish/images/search.png"></button>
|
||||
</p>
|
||||
<!-- <button type="button" class="btnType btnType6 addCallToF">번호추가</button> -->
|
||||
</div>
|
||||
|
||||
|
||||
@ -555,9 +449,9 @@ function GetAddrMassDupli() {
|
||||
<div class="adr_excel" style="margin-top: 13px;">
|
||||
<!-- thead -->
|
||||
<div class="adr_hd select_adr_hd" data-group="tableClip">
|
||||
<div></div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<div style="width: 80px;"></div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -568,9 +462,9 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -581,9 +475,9 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -594,9 +488,9 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -607,9 +501,9 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -620,9 +514,9 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -633,9 +527,9 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -646,7 +540,7 @@ function GetAddrMassDupli() {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -355,7 +355,7 @@ function processExcelData(data) {
|
||||
data.forEach((row, index) => {
|
||||
var rowData = {};
|
||||
keys.forEach((key, idx) => { // index 변수명 변경 (내부와 외부에서 사용되므로 충돌 방지)
|
||||
console.log('row[idx] : ', row[idx]);
|
||||
// console.log('row[idx] : ', row[idx]);
|
||||
rowData[key] = typeof row[idx] === 'string' ? row[idx].trim() : row[idx]; // 문자열인지 확인하고 trim() 적용
|
||||
});
|
||||
tableData.push(rowData);
|
||||
@ -568,13 +568,12 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="adr_excel" style="margin-top: 13px;">
|
||||
<!-- thead -->
|
||||
<div class="adr_hd select_adr_hd" data-group="tableExcel">
|
||||
<div style="width: 80px;"></div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<div class="adr_excel" style="margin-top: 13px;">
|
||||
<!-- thead -->
|
||||
<div class="adr_hd select_adr_hd" data-group="tableExcel">
|
||||
<div style="width: 80px;"></div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -585,9 +584,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -598,9 +597,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -611,9 +610,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -624,9 +623,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -637,9 +636,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -650,9 +649,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
</div>
|
||||
<div style="width: 125px;">
|
||||
<label for="" class="label"></label>
|
||||
<select class="field-selector">
|
||||
<option value="">선택하기</option>
|
||||
<option value="addrNm">이름</option>
|
||||
@ -663,9 +662,9 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
||||
<option value="addrInfo4">[*4*]</option>
|
||||
<option value="addrComment">메모</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="drag_drop_wrap callList_box" id="tabulator_excel">
|
||||
<img src="/publish/images/content/excel.jpg" style="width: 100%;">
|
||||
|
||||
@ -13,26 +13,6 @@ $(document).ready(function(){
|
||||
// $("#btnAddrMassDupli").hide();
|
||||
// $("#btnAddrMassSaveDupli").hide();
|
||||
|
||||
//붙여넣기 이벤트 핸들러
|
||||
document.querySelector('#tabulator_clip').addEventListener('paste', function(e) {
|
||||
e.preventDefault();
|
||||
var text = e.clipboardData.getData('text/plain');
|
||||
var rows = text.split('\n').map(row => row.split(',').map(cell => cell.trim()));
|
||||
|
||||
var tableData = rows.map(row => {
|
||||
return {
|
||||
A: row[0] || "",
|
||||
B: row[1] || "",
|
||||
C: row[2] || "",
|
||||
D: row[3] || "",
|
||||
E: row[4] || "",
|
||||
F: row[5] || "",
|
||||
G: row[6] || ""
|
||||
};
|
||||
});
|
||||
|
||||
$tableClip.setData(tableData);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@ -211,7 +191,7 @@ $(document).ready(function(){
|
||||
|
||||
var removeDuplData = dupliPhoneData(tableData);
|
||||
|
||||
$tableClip.setData(removeDuplData);
|
||||
// $tableClip.setData(removeDuplData);
|
||||
|
||||
//총 받는사람 수 계산
|
||||
totRows = $tableClip.getRows().length;
|
||||
@ -355,7 +335,7 @@ $(document).ready(function(){
|
||||
}
|
||||
|
||||
var removeDuplData = dupliPhoneData(tableData);
|
||||
$tableClip.setData(removeDuplData);
|
||||
// $tableClip.setData(removeDuplData);
|
||||
|
||||
//총 받는사람 수 계산
|
||||
totRows = $tableClip.getRows().length;
|
||||
|
||||
@ -172,6 +172,7 @@ $(document).ready(function(){
|
||||
|
||||
//받는 사람 리스트 영역에 클립보드 데이터 가져와보기
|
||||
$('.callList_box').on('paste', function (e) {
|
||||
console.log(' :: callList_box :: ');
|
||||
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
|
||||
var elmSplit= [];
|
||||
elmSplit = element.split("\n");
|
||||
|
||||
@ -905,6 +905,7 @@ $(document).ready(function (){
|
||||
|
||||
//ë°ëì¬ë 목ë¡ì ë³µì¬/ë¶ì¬ë£ê¸° ê¸°ë¥ ì²ë¦¬
|
||||
$('.callList_box').on('paste', function (e) {
|
||||
console.log(' :: callList_box :: ');
|
||||
|
||||
var element = e.originalEvent.clipboardData.getData('text'); // í´ë¦½ë³´ëì ë³µì¬í ë°ì´í° ê°ì ¸ì¤ê¸°
|
||||
|
||||
|
||||
@ -616,6 +616,7 @@ $(document).ready(function (){
|
||||
|
||||
//받는 사람 리스트 영역에 클립보드 데이터 가져와보기
|
||||
$('.callList_box').on('paste', function (e) {
|
||||
console.log(' :: callList_box :: ');
|
||||
|
||||
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
|
||||
|
||||
|
||||
@ -826,6 +826,7 @@ $(document).ready(function (){
|
||||
|
||||
//받는사람 목록에 복사/붙여넣기 기능 처리
|
||||
$('.callList_box').on('paste', function (e) {
|
||||
console.log(' :: callList_box :: ');
|
||||
|
||||
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
|
||||
|
||||
|
||||
@ -845,6 +845,7 @@ $(document).ready(function (){
|
||||
//받는 사람 리스트 영역에 클립보드 데이터 가져와보기
|
||||
//받는사람 목록에 복사/붙여넣기 기능 처리
|
||||
$('.callList_box').on('paste', function (e) {
|
||||
console.log(' :: callList_box :: ');
|
||||
|
||||
var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기
|
||||
|
||||
|
||||
@ -67,54 +67,59 @@ $(document).ready(function(){
|
||||
var phoneNumberChk = false;
|
||||
var existingNumbers = new Set(); // 배열에서 Set으로 변경
|
||||
|
||||
console.log('입력된 번호들 : ', data);
|
||||
|
||||
|
||||
let errorCount = 0; // 중복 번호 개수를 저장할 변수
|
||||
let duplicateCount = 0; // 중복 번호 개수를 저장할 변수
|
||||
|
||||
// 각 번호를 테이블에 추가 (중복 검사 및 포맷팅 포함)
|
||||
for (let i = data.length - 1; i >= 0; i--) {
|
||||
// console.log('index : ', index);
|
||||
// console.log('existingNumbers : ', existingNumbers);
|
||||
const errors = []; // 오류 데이터를 저장할 배열
|
||||
const duplicates = []; // 오류 데이터를 저장할 배열
|
||||
const newData = []; // 유효한 데이터만 저장할 새로운 배열
|
||||
|
||||
let row = data[i];
|
||||
var number = row.addrPhoneNo;
|
||||
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
|
||||
// console.log('number : ', number)
|
||||
// console.log('formattedNumber : ', formattedNumber)
|
||||
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
|
||||
if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
|
||||
if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
|
||||
// $tableError.addRow({ phone: formattedNumber }); // 표준화된 번호로 추가
|
||||
// console.log('formattedNumber : ', formattedNumber);
|
||||
|
||||
// console.log('통과 : ', row.addrPhoneNo, " : ", cleanedNumber);
|
||||
row.addrPhoneNo = formattedNumber ;
|
||||
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
|
||||
} else {
|
||||
// 오류 : 유효성 통과 못함
|
||||
// console.log('오류 : ', formattedNumber, ' : ',cleanedNumber);
|
||||
data.forEach((row, index) => {
|
||||
if (index % 10000 === 0) {
|
||||
console.log('i : ', index);
|
||||
}
|
||||
|
||||
const number = row.addrPhoneNo;
|
||||
const formattedNumber = formatPhoneNumber(number); // 번호 표준화
|
||||
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김
|
||||
|
||||
if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
|
||||
if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
|
||||
row.addrPhoneNo = formattedNumber;
|
||||
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
|
||||
newData.push(row); // 유효한 데이터만 새로운 배열에 추가
|
||||
} else {
|
||||
// 오류: 유효성 통과 못함
|
||||
errorCount++;
|
||||
$tableError.addRow({
|
||||
// $tableError.addRow({
|
||||
// name: row.addrNm, // 이름
|
||||
// phone: row.addrPhoneNo, // 폰번호
|
||||
// result: "오류" // 결과 메시지 추가
|
||||
// });
|
||||
errors.push({
|
||||
name: row.addrNm, // 이름
|
||||
phone: row.addrPhoneNo, // 폰번호
|
||||
result: "오류" // 결과 메시지 추가
|
||||
});
|
||||
data.splice(i, 1); // 유효하지 않은 행 삭제
|
||||
}
|
||||
} else {
|
||||
// 중복
|
||||
// console.log('중복 : ', row.addrPhoneNo);
|
||||
duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가
|
||||
$tableError.addRow({
|
||||
}
|
||||
} else {
|
||||
// 중복
|
||||
duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가
|
||||
// $tableError.addRow({
|
||||
// name: row.addrNm, // 이름
|
||||
// phone: row.addrPhoneNo, // 폰번호
|
||||
// result: "중복" // 결과 메시지 추가
|
||||
// });
|
||||
duplicates.push({
|
||||
name: row.addrNm, // 이름
|
||||
phone: row.addrPhoneNo, // 폰번호
|
||||
result: "중복" // 결과 메시지 추가
|
||||
});
|
||||
data.splice(i, 1); // 유효하지 않은 행 삭제
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// data 배열을 newData 배열로 대체
|
||||
data = newData;
|
||||
|
||||
// 중복 카운트
|
||||
$(tabluC+" #rowDupCnt").text(duplicateCount);
|
||||
@ -136,7 +141,12 @@ $(document).ready(function(){
|
||||
$("#rowDupCnt").text(duplicateCount);
|
||||
|
||||
$(tabluC+" #rowTotCnt").text($objTabul.getDataCount());
|
||||
|
||||
|
||||
var errorData = errors.concat(duplicates);
|
||||
// 오류 및 중복 데이터를 한 번에 추가
|
||||
$tableError.setData(errorData);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function fn_phoneDupl_old($objTabul) {
|
||||
|
||||
@ -39,7 +39,7 @@ $(document).ready(function(){
|
||||
cell.getRow().toggleSelect();
|
||||
}
|
||||
},
|
||||
{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
||||
{formatter:"rownum", hozAlign:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
||||
{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
{title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
{title:"C", field:"C", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
@ -72,45 +72,13 @@ $(document).ready(function(){
|
||||
headerHozAlign:"center",
|
||||
validationMode:"highlight",
|
||||
placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional)
|
||||
clipboard:true, // 클립보드 기능 활성화
|
||||
// clipboard:true, // 클립보드 기능 활성화
|
||||
clipboardPasteAction:"update", // insert, update, replace
|
||||
clipboardPasteParser: function(clipboard) {
|
||||
/*console.log('clipboard: ', clipboard); // 클립보드의 원본 내용 확인
|
||||
|
||||
var rows = clipboard.split('\n').map(row => {
|
||||
var cells = row.split(/[\t,]+/).map(cell => cell.trim());
|
||||
return cells;
|
||||
}).filter(row => Array.isArray(row) && row.some(cell => cell !== ""));
|
||||
|
||||
console.log('파싱된 rows: ', rows); // 파싱된 행 데이터 확인
|
||||
|
||||
var tableData = rows.map(row => {
|
||||
return {
|
||||
A: row[0] || "",
|
||||
B: row[1] || "",
|
||||
C: row[2] || "",
|
||||
D: row[3] || "",
|
||||
E: row[4] || "",
|
||||
F: row[5] || "",
|
||||
G: row[6] || ""
|
||||
};
|
||||
});
|
||||
|
||||
console.log('새로 추가될 데이터: ', tableData); // 추가될 데이터 확인
|
||||
|
||||
// 기존 테이블 데이터를 가져와서 병합
|
||||
var existingData = $tableClip.getData(); // 기존 데이터를 가져옴
|
||||
console.log('기존 : ', existingData);
|
||||
var combinedData = existingData.concat(tableData); // 기존 데이터에 새로운 데이터 추가
|
||||
console.log('병합 : ', combinedData);
|
||||
|
||||
return combinedData; // 병합된 데이터를 반환하여 기존 데이터 아래에 추가되도록 함
|
||||
*/ },
|
||||
columns: [
|
||||
{formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
||||
cell.getRow().toggleSelect();
|
||||
}},
|
||||
{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
||||
{formatter:"rownum", hozAlign:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
||||
{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
{title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
{title:"C", field:"C", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
@ -119,16 +87,14 @@ $(document).ready(function(){
|
||||
{title:"F", field:"F", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
{title:"G", field:"G", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}
|
||||
],
|
||||
validationFailed:function(cell, value, parameters){ // 유효성 체크 함수
|
||||
var valid = cell.isValid();
|
||||
if(!valid){
|
||||
alert("양식에 맞지 않는 정보가 입력되었습니다.");
|
||||
|
||||
//해당 셀 데이터 삭제
|
||||
cell.setValue("");
|
||||
}
|
||||
return value % parameters.phone;
|
||||
},
|
||||
validationFailed: function(cell, value, parameters) {
|
||||
var valid = cell.isValid();
|
||||
if (!valid) {
|
||||
alert("양식에 맞지 않는 정보가 입력되었습니다.");
|
||||
cell.setValue(""); // 해당 셀 데이터 삭제
|
||||
}
|
||||
return false; // 유효하지 않은 경우 false 반환
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@ -143,19 +109,11 @@ $(document).ready(function(){
|
||||
clipboard:false,
|
||||
clipboardCopySelector:"table",
|
||||
clipboardPasteAction:"insert", // insert, update, replace
|
||||
placeholder:"Excel 파일을 업로드 해주세요.", //fit columns to width of table (optional)
|
||||
placeholder:"등록 팝업에서 휴대폰을 선택 후 확인해주세요.", //fit columns to width of table (optional)
|
||||
columns:[ //Define Table Columns
|
||||
// {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){
|
||||
// cell.getRow().toggleSelect();
|
||||
// }
|
||||
// },
|
||||
// {formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
||||
{title:"이름", field:"name", hozAlign:"center", headerHozAlign: "center", width:125},
|
||||
{title:"휴대폰", field:"phone", hozAlign:"center", headerHozAlign: "center", width:158},
|
||||
{title:"미등록 결과", field:"result", hozAlign:"center", headerHozAlign: "center", width:125}
|
||||
// {title:"이름", field:"name", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
// {title:"휴대폰", field:"phone", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
// {title:"미등록 결과", field:"result", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]},
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user