어댑터 JSON 으로 가져오기 할 때 중복체크하는 기능 추가

This commit is contained in:
daekuk
2025-12-12 16:02:12 +09:00
parent 39714ff34b
commit efcd516afb
3 changed files with 142 additions and 33 deletions
+115 -26
View File
@@ -184,39 +184,125 @@ $(document).ready(function() {
$("#btn_clone").hide();
}
FilePond.registerPlugin(FilePondPluginFileValidateType);
// FilePond 인스턴스 생성
const pond = FilePond.create(document.querySelector('.filepond'), {
instantUpload: false, // 파일을 즉시 업로드하지 않음
allowRevert: false,
acceptedFileTypes: ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/json'],
// 서버 설정
// 25.12.11 파일 가져오기 할 때 중복 검사 기능추가.
FilePond.registerPlugin(FilePondPluginFileValidateType);
let uploadErrors = [];
let processedCount = 0;
let totalFiles = 0;
// FilePond 인스턴스 생성
const pond = FilePond.create(document.querySelector('.filepond'), {
instantUpload: false,
allowRevert: false,
acceptedFileTypes: ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/json'],
// 서버 설정
server: {
process: {
url: url_file + '?cmd=LIST_IMPORT_FILE&serviceType=' + sessionStorage["serviceType"],
method: 'POST',
// 필요한 경우 headers나 다른 설정 추가
},
// revert, load, restore, fetch 설정 (필요한 경우)
},
// 다른 필요한 옵션 추가
});
ondata: (formData) => {
const chkBox = document.querySelector('#uploadModal input[name="importDupliCheck"]');
const isChecked = chkBox ? chkBox.checked : false;
formData.append('importDupliCheck', isChecked);
return formData;
},
onerror: (response) => {
return response;
}
}
}
});
pond.on('processfiles', () => {
// 여기에 모든 파일 업로드 완료 후 실행할 코드를 작성
console.debug('모든 파일의 처리가 완료되었습니다.');
$('#btn_search').click();
});
// 파일 처리 결과 수신
pond.on('processfile', (error, file) => {
processedCount++;
// "업로드 시작" 버튼 클릭 이벤트 핸들러
document.getElementById('uploadButton').addEventListener('click', function() {
pond.processFiles(); // 선택된 모든 파일을 업로드
});
if (error) {
let errorMsg = '';
if (error.body) {
errorMsg = error.body;
} else if (typeof error === 'string') {
errorMsg = error;
} else {
errorMsg = '가져오기 중 오류가 발생 했습니다.';
}
let fileName = 'UnKnown';
if (file) {
if(file.filename) fileName = file.filename;
else if (file.file && file.file.name) fileName = file.file.name;
}
uploadErrors.push('파일명 [ ' + fileName + '] \n MESSAGE : ' + errorMsg);
}
// 모든 파일 처리 완료 시
if (processedCount >= totalFiles) {
setTimeout(() => {
if (uploadErrors.length > 0) {
const msg = "파일 처리 중 오류가 발생했습니다. \n" + uploadErrors.join('\n');
// 실패 시 변수 초기화
uploadErrors = [];
processedCount = 0;
$('#btn_search').click();
alert(msg);
} else {
alert('모든 파일이 성공적으로 업로드 되었습니다.');
$('#uploadModal').modal('hide');
$('#btn_search').click();
}
}, 100);
}
});
// 업로드 버튼 클릭 이벤트
document.getElementById('uploadButton').addEventListener('click', function(e) {
e.stopPropagation();
uploadErrors = [];
processedCount = 0;
const currentFiles = pond.getFiles();
totalFiles = currentFiles.length;
if (totalFiles === 0) {
alert("업로드 할 파일을 선택하세요.");
return;
}
const chkBox = document.getElementById('importDupliCheck');
if (chkBox && !chkBox.checked) {
if (!confirm("중복검사를 체크하지 않는 경우 기존 값은 덮어 씌워집니다. \n진행하시겠습니까?")) {
return;
}
}
pond.processFiles();
});
// 모달이 닫힐 때만 초기화
$('#uploadModal').on('hidden.bs.modal', function(e) {
resetPond();
});
function resetPond() {
pond.removeFiles();
const chkBox = document.getElementById('importDupliCheck');
if (chkBox) chkBox.checked = false;
processedCount = 0;
totalFiles = 0;
uploadErrors = [];
}
// 모달 닫기 이벤트 핸들러
$('#uploadModal').on('hidden.bs.modal', function (e) {
pond.removeFiles(); // 모달이 닫힐 때 파일 목록에서 모든 파일 제거
});
});
function jqGridInit() {
@@ -412,6 +498,9 @@ function jqGridInit() {
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<!-- 파일 업로드 시 중복체크 -->
<input type="checkbox" id="importDupliCheck" name="importDupliCheck">
<label class="form-check-label" for="importDupliCheck">중복검사</label>
<input type="file" class="filepond" name="file" multiple data-allow-reorder="true" data-max-file-size="3MB" data-max-files="10">
</div>
<div class="modal-footer">