엑셀업로드 설명 및 이모지 제거 추가
This commit is contained in:
parent
f832bd20e0
commit
4531dc86c6
@ -160,17 +160,14 @@ function excelFileChange(file) {
|
|||||||
var workbook = XLSX.read(data, { type: 'array' });
|
var workbook = XLSX.read(data, { type: 'array' });
|
||||||
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
||||||
console.log('xlsx jsonData : ', jsonData);
|
|
||||||
// 문제 데이터를 확인하는 함수 호출
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
findInvalidDBCharacters(jsonData);
|
findInvalidDBCharacters(jsonData);
|
||||||
processExcelData(jsonData);
|
processExcelData(jsonData);
|
||||||
} else if (extension === 'xls') {
|
} else if (extension === 'xls') {
|
||||||
console.log('xls extension detected');
|
|
||||||
var data = e.target.result;
|
var data = e.target.result;
|
||||||
var workbook = XLSX.read(data, { type: 'binary' });
|
var workbook = XLSX.read(data, { type: 'binary' });
|
||||||
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
||||||
console.log('xls jsonData : ', jsonData);
|
|
||||||
|
|
||||||
// 문제 데이터를 확인하는 함수 호출
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
findInvalidDBCharacters(jsonData);
|
findInvalidDBCharacters(jsonData);
|
||||||
@ -179,7 +176,6 @@ function excelFileChange(file) {
|
|||||||
processExcelData(jsonData);
|
processExcelData(jsonData);
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
var textData = e.target.result;
|
var textData = e.target.result;
|
||||||
console.log('txt data : ', textData);
|
|
||||||
processTextData(textData);
|
processTextData(textData);
|
||||||
} else {
|
} else {
|
||||||
alert('지원되지 않는 파일 형식입니다.');
|
alert('지원되지 않는 파일 형식입니다.');
|
||||||
@ -322,7 +318,7 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
|||||||
<div class="titBox">
|
<div class="titBox">
|
||||||
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </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>
|
||||||
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
||||||
<!-- <button type="button" class="excel_btn" onclick="location.href='/download/addr/주소록_대량등록.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button> -->
|
<!-- <button type="button" class="excel_btn" onclick="location.href='/download/addr/주소록_대량등록.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button> -->
|
||||||
|
|||||||
@ -139,6 +139,19 @@ function excelFileChange(file) {
|
|||||||
var workbook = XLSX.read(data, {type: 'array'});
|
var workbook = XLSX.read(data, {type: 'array'});
|
||||||
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
||||||
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
|
findInvalidDBCharacters(jsonData);
|
||||||
|
processExcelData(jsonData);
|
||||||
|
} else if (extension === 'xls') {
|
||||||
|
var data = e.target.result;
|
||||||
|
var workbook = XLSX.read(data, { type: 'binary' });
|
||||||
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
||||||
|
|
||||||
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
|
findInvalidDBCharacters(jsonData);
|
||||||
|
|
||||||
|
|
||||||
processExcelData(jsonData);
|
processExcelData(jsonData);
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
var textData = e.target.result;
|
var textData = e.target.result;
|
||||||
@ -151,12 +164,34 @@ function excelFileChange(file) {
|
|||||||
};
|
};
|
||||||
if (extension === 'xlsx') {
|
if (extension === 'xlsx') {
|
||||||
reader.readAsArrayBuffer(file);
|
reader.readAsArrayBuffer(file);
|
||||||
|
} else if (extension === 'xls') {
|
||||||
|
reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
reader.readAsText(file);
|
reader.readAsText(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//문제 데이터를 확인하는 함수
|
||||||
|
function findInvalidDBCharacters(jsonData) {
|
||||||
|
console.log('DB 입력 값 검사 중...');
|
||||||
|
const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등)
|
||||||
|
for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) {
|
||||||
|
const row = jsonData[rowIndex];
|
||||||
|
if (Array.isArray(row)) {
|
||||||
|
for (let colIndex = 0; colIndex < row.length; colIndex++) {
|
||||||
|
const cell = row[colIndex];
|
||||||
|
if (typeof cell === 'string' && invalidCharPattern.test(cell)) {
|
||||||
|
console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell);
|
||||||
|
// 허용되지 않는 문자를 제거 (선택 사항)
|
||||||
|
row[colIndex] = cell.replace(invalidCharPattern, '');
|
||||||
|
console.log('수정된 값:', row[colIndex]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 엑셀 데이터 처리 함수
|
// 엑셀 데이터 처리 함수
|
||||||
function processExcelData(data) {
|
function processExcelData(data) {
|
||||||
var keys = ['A', 'B', 'C'];
|
var keys = ['A', 'B', 'C'];
|
||||||
@ -249,7 +284,7 @@ $(document).on("click", "#duplicationChkAll", function(e) {
|
|||||||
<div class="titBox">
|
<div class="titBox">
|
||||||
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.</p>
|
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.</p>
|
||||||
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
|
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
|
||||||
<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
|
<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.</p>
|
||||||
<p>- 이름 200byte, 메모 250byte까지 입력 가능합니다.</p>
|
<p>- 이름 200byte, 메모 250byte까지 입력 가능합니다.</p>
|
||||||
<p>- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다. </p>
|
<p>- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다. </p>
|
||||||
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
||||||
|
|||||||
@ -667,7 +667,7 @@
|
|||||||
<div class="titBox">
|
<div class="titBox">
|
||||||
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.</p>
|
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다.</p>
|
||||||
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
|
<p>- 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
|
||||||
<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.</p>
|
<p>- 구분선(|), 역슬래시(\, ₩), 큰따옴표("), 이모지(이모티콘) 등 발송불가 특수문자는 저장되지 않습니다.</p>
|
||||||
<p>- 이름 200byte, 메모 250byte까지 입력 가능합니다.</p>
|
<p>- 이름 200byte, 메모 250byte까지 입력 가능합니다.</p>
|
||||||
<p>- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다. </p>
|
<p>- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다. </p>
|
||||||
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
||||||
|
|||||||
@ -337,6 +337,19 @@ function excelFileChange(file) {
|
|||||||
var workbook = XLSX.read(data, {type: 'array'});
|
var workbook = XLSX.read(data, {type: 'array'});
|
||||||
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
||||||
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
|
findInvalidDBCharacters(jsonData);
|
||||||
|
processExcelData(jsonData);
|
||||||
|
} else if (extension === 'xls') {
|
||||||
|
var data = e.target.result;
|
||||||
|
var workbook = XLSX.read(data, { type: 'binary' });
|
||||||
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
||||||
|
|
||||||
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
|
findInvalidDBCharacters(jsonData);
|
||||||
|
|
||||||
|
|
||||||
processExcelData(jsonData);
|
processExcelData(jsonData);
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
var textData = e.target.result;
|
var textData = e.target.result;
|
||||||
@ -349,12 +362,34 @@ function excelFileChange(file) {
|
|||||||
};
|
};
|
||||||
if (extension === 'xlsx') {
|
if (extension === 'xlsx') {
|
||||||
reader.readAsArrayBuffer(file);
|
reader.readAsArrayBuffer(file);
|
||||||
|
} else if (extension === 'xls') {
|
||||||
|
reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
reader.readAsText(file);
|
reader.readAsText(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//문제 데이터를 확인하는 함수
|
||||||
|
function findInvalidDBCharacters(jsonData) {
|
||||||
|
console.log('DB 입력 값 검사 중...');
|
||||||
|
const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등)
|
||||||
|
for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) {
|
||||||
|
const row = jsonData[rowIndex];
|
||||||
|
if (Array.isArray(row)) {
|
||||||
|
for (let colIndex = 0; colIndex < row.length; colIndex++) {
|
||||||
|
const cell = row[colIndex];
|
||||||
|
if (typeof cell === 'string' && invalidCharPattern.test(cell)) {
|
||||||
|
console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell);
|
||||||
|
// 허용되지 않는 문자를 제거 (선택 사항)
|
||||||
|
row[colIndex] = cell.replace(invalidCharPattern, '');
|
||||||
|
console.log('수정된 값:', row[colIndex]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 엑셀 데이터 처리 함수
|
// 엑셀 데이터 처리 함수
|
||||||
function processExcelData(data) {
|
function processExcelData(data) {
|
||||||
@ -686,7 +721,7 @@ function popMore(e){
|
|||||||
<div class="titBox">
|
<div class="titBox">
|
||||||
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </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>
|
||||||
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -387,6 +387,19 @@ function excelFileChange(file) {
|
|||||||
var workbook = XLSX.read(data, {type: 'array'});
|
var workbook = XLSX.read(data, {type: 'array'});
|
||||||
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1});
|
||||||
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
|
findInvalidDBCharacters(jsonData);
|
||||||
|
processExcelData(jsonData);
|
||||||
|
} else if (extension === 'xls') {
|
||||||
|
var data = e.target.result;
|
||||||
|
var workbook = XLSX.read(data, { type: 'binary' });
|
||||||
|
var firstSheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||||
|
var jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });
|
||||||
|
|
||||||
|
// 문제 데이터를 확인하는 함수 호출
|
||||||
|
findInvalidDBCharacters(jsonData);
|
||||||
|
|
||||||
|
|
||||||
processExcelData(jsonData);
|
processExcelData(jsonData);
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
var textData = e.target.result;
|
var textData = e.target.result;
|
||||||
@ -399,12 +412,34 @@ function excelFileChange(file) {
|
|||||||
};
|
};
|
||||||
if (extension === 'xlsx') {
|
if (extension === 'xlsx') {
|
||||||
reader.readAsArrayBuffer(file);
|
reader.readAsArrayBuffer(file);
|
||||||
|
} else if (extension === 'xls') {
|
||||||
|
reader.readAsBinaryString(file); // xls 파일에 적절한 read 메서드 호출
|
||||||
} else if (extension === 'txt') {
|
} else if (extension === 'txt') {
|
||||||
reader.readAsText(file);
|
reader.readAsText(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//문제 데이터를 확인하는 함수
|
||||||
|
function findInvalidDBCharacters(jsonData) {
|
||||||
|
console.log('DB 입력 값 검사 중...');
|
||||||
|
const invalidCharPattern = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; // 4바이트 유니코드 문자 (이모지 등)
|
||||||
|
for (let rowIndex = 0; rowIndex < jsonData.length; rowIndex++) {
|
||||||
|
const row = jsonData[rowIndex];
|
||||||
|
if (Array.isArray(row)) {
|
||||||
|
for (let colIndex = 0; colIndex < row.length; colIndex++) {
|
||||||
|
const cell = row[colIndex];
|
||||||
|
if (typeof cell === 'string' && invalidCharPattern.test(cell)) {
|
||||||
|
console.warn('허용되지 않는 문자: row', rowIndex + 1,', col ', colIndex + 1, ', value:', cell);
|
||||||
|
// 허용되지 않는 문자를 제거 (선택 사항)
|
||||||
|
row[colIndex] = cell.replace(invalidCharPattern, '');
|
||||||
|
console.log('수정된 값:', row[colIndex]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 엑셀 데이터 처리 함수
|
// 엑셀 데이터 처리 함수
|
||||||
function processExcelData(data) {
|
function processExcelData(data) {
|
||||||
@ -761,7 +796,7 @@ $(document).on('click', '#errorExcelBtn', function() {
|
|||||||
<div class="titBox">
|
<div class="titBox">
|
||||||
<p>- 주소록은 한 번에 최대 30만건까지 등록(EXCEL파일, 최대용량 20MB) 가능합니다. </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>
|
||||||
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
<p>- 주소록 등록이 어려우신 경우에는 <a href="<c:url value='/web/mjon/addragency/selectAddrAgencyList.do'/>" style="font-weight: bold; color: blue;">주소록 입력대행</a> 메뉴를 이용하실 수 있습니다. </p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user