wyh 2024-11-05
팩스 주소록 엑셀파일 등록 기능 수정
@526b1d68955d85f76fe882f8fb571ea31bb43e06
src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp
--- src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp
@@ -86,8 +86,6 @@
 
 function insertAddrAjax() {
 	var selectVal = $("#addrRegistSelect option:selected").val();
-	//alert(selectVal);
-	
 	var form = document.addrInsertForm;
 
 	if(form.addrPhoneNo.value == "") {
@@ -210,49 +208,6 @@
 		//전체 데이터 갯수 구하기
 	    totRows = tableR.getRows().length;
 	    updateTotCnt(totRows);
-	});
-
-
-	//받는사람 전체삭제 버튼 처리
-	$('.all_del').click(function(){
-		var data = tableR.getRows();	
-		if(data == null || data == ""){
-			alert("받는사람을 추가해 주세요.");
-			return false;
-		}else{
-			tableR.clearData();
-			$("#rowTotCnt").text(0); //총건수 수정
-			$("#rowDupCnt").text(0); //중복건수 수정
-			dupliPhoneDataRealList.length = 0;	// 중복 팩스번호 초기화
-		}
-		
-	});
-
-
-	// 받는사람 선택삭제 버튼 처리해주기
-	$('.select_del').click(function(){
-		$("#rowDupCnt").text(0); //중복건수 수정
-		dupliPhoneDataRealList.length = 0;	// 중복 팩스번호 초기화
-		
-		if(tableR == null || tableR == ""){
-			alert("받는사람을 추가해 주세요.");
-			return false;
-		}
-		
-		var selectedData = tableR.getSelectedRows();
-		
-		if(selectedData == "" || selectedData == null){
-			alert("받는 사람을 선택해 주세요.");
-			return false;
-		}else{ // 선택한 Row 데이터 삭제하기
-			for(var i=0; i < selectedData.length; i++){
-				selectedData[i].delete();
-			}
-		}
-		
-		totRows = tableR.getRows().length;
-	    
-		updateTotCnt(totRows);
 	});
 
 	//받는사람 오류번호 삭제 처리해주기
@@ -732,7 +687,15 @@
 //저장
 function SetAddrMassSave(){
 
-	var selectedData = tableR.getRows();
+	var selectedData = $tableExcel.getRows();
+	var columns = $tableExcel.getColumns();
+	var isAddrFaxNoSelected = columns.some(column => column.getField() === 'addrFaxNo');
+	
+	if (!isAddrFaxNoSelected) {
+		alert('팩스번호가 선택되지 않았습니다.');
+		return false;
+	} 
+	
 	if (selectedData == "" || selectedData == null) {
 		alert("한 개 이상의 연락처를 입력하세요");
 		return false;
@@ -781,11 +744,10 @@
 	if (confirm(confirmMsg)) {
 		
 		for (var i=0; i < selectedData.length; i++) {
-			var name = tableR.getRows()[i].getData().name;
-			var phone = removeDash(tableR.getRows()[i].getData().phone);
-			var memo = tableR.getRows()[i].getData().memo;
+			var name = $tableExcel.getRows()[i].getData().addrNm;
+			var phone = removeDash($tableExcel.getRows()[i].getData().addrFaxNo);
+			var memo = $tableExcel.getRows()[i].getData().addrMemo;
 			
-			phoneList[i] = phone;
 			// name
 			if (name == "" || name == null || name == undefined) {
 				nameList[i] = "";
@@ -794,9 +756,11 @@
 				if(!addrEmojiCheck(name)){//이모지 체크 해주기
 					return false;
 				}
-				
 				nameList[i] = name.replace(/,/g,"§");
 			}
+			
+			// memo
+			phoneList[i] = phone;
 			
 			// memo
 			if (memo == "" || memo == null || memo == undefined) {
@@ -840,13 +804,9 @@
 					
 					// 중복건이 있을경우
 					if (returnData.dupliCnt > 0) {
-						//alert(returnData.addrMassDupliList.length);
-
 						// 중복번호(해당 그룹) Show
 						$("#btnAddrMassSaveDupli").show();
-						
 						addrMassDupliSaveList = returnData.addrMassDupliList;
-						//$("#btnAddrMassSaveDupli").trigger("click");
 					}
 					
 					// 데이터 비우기
@@ -887,13 +847,14 @@
 	// 주소록 그룹정보 불러오기
 	getAddrGroupList();	
 	
-	var data = tableR.getRows();	
+	var data = $tableExcel.getRows();	
 	if (data == null || data == "") {
-	}
-	else {
-		tableR.clearData();
-		$("#rowTotCnt").text(0); //총건수 수정
-		$("#rowDupCnt").text(0); //중복건수 수정
+		
+	}else{
+		$tableExcel.clearData();
+		$("#rowTotCnt").text(0);	//총건수 초기화
+		$("#rowDupCnt").text(0);	//중복건수 초기화
+		$("#rowErrorCnt").text(0);	//오류건수 초기화
 		dupliPhoneDataRealList.length = 0;	// 중복 팩스번호 초기화
 	}
 }
@@ -913,8 +874,7 @@
         data : {},
         dataType:'json',
         success : function(data) {
-			//alert(JSON.stringify(data.addrGroupList));
-
+        	
 			// Show Html
 			getAddrGroupListShow(data.addrGroupList);
         },
@@ -948,7 +908,6 @@
 //#############################################################################################
 //파일 불러오기
 //#############################################################################################
-
 //seetJs 엑셀 파일 불러오기
 function excelExport(event){
 	var data = new FormData(document.excelForm);
@@ -1044,6 +1003,11 @@
 	}
 	
 }
+//#############################################################################################
+//파일 불러오기
+//#############################################################################################
+
+
 
 //체크박스 전체선택/해제
 $(document).on("click", "#chkAll", function(e) {
src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp
--- src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp
@@ -4,17 +4,11 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 
-<%-- <script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script> --%>
-
 <script type="text/javascript">
 
 $(document).ready(function(){
-	
-	// 중복 휴대폰번호 버튼 노출여부
-// 	$("#btnAddrMassDupli").hide();
-// 	$("#btnAddrMassSaveDupli").hide();
-}); 
 
+}); 
 
 function addrGroupLoadAjax(){
 	$("#addrRegistSelect").load("/web/addr/selectAddrGroupAjax.do", function(response, status, xhr){});
@@ -28,6 +22,7 @@
 		alert("주소록 그룹명을 입력해주세요.");
 		return;
 	}
+	
 	if(!confirm("주소록 그룹을 추가하시겠습니까?")) {
 		return;
 	}
@@ -66,10 +61,6 @@
 	$("#addrRegistSelect").val(selectVal).prop("selected", true);	
 }
 
-//#############################################################################################
-//Tabulator
-//#############################################################################################
-
 $(document).ready(function(){
     // 파일 선택 버튼 클릭 이벤트
     // 파일 입력 이벤트
@@ -83,7 +74,6 @@
         }
     });
 
-
 	//받는사람 오류번호 삭제 처리해주기
 	$('.chkVali_del').click(function(){
 		//기존 연락처 모두 불러오기
@@ -95,8 +85,6 @@
 	    if(totLen > 0){
 	    	if(confirm("올바르지 않은 연락처 정보를 삭제 하시겠습니까?")){
 	    		for(var i=0; i < totLen; i++){
-
-	    			
 	            	var phone = data[i].getData().phone;
 	            	var valiCheck = checkHpNum(phone);
 	            	if(valiCheck){
@@ -126,7 +114,6 @@
 	    	return false;
 	    }
 	});
-	
 
     // 필드 선택 이벤트 핸들러
     $("#column-selector").on("change", function() {
@@ -137,9 +124,6 @@
         }
     });
 });
-
-
-
 
 //#############################################################################################
 //파일업로드 드래그앤 드롭
@@ -171,8 +155,8 @@
 	e.stopPropagation();
 	e.preventDefault();
 });
-//파일 드래그앤드롭 종료
 
+//첨부파일 등록 변경 이벤트
 function excelFileChange(file) {
 	console.log(' :: excelFileChange :: ');
 	fn_errorPopClean(); // 에러 popup 초기화
@@ -219,7 +203,6 @@
     var tableData = [];
     var totalRows = data.length - 2; // 전체 데이터 수 (1, 2행 제외)
 
-
     // 1번째 행부터 입력 
     data.forEach((row, index) => {
         var rowData = {};
@@ -232,12 +215,11 @@
     updateTable(tableData);
 }
 
-
 // 텍스트 데이터 처리 함수
 function processTextData(text) {
 	console.log(' :: processTextData :: ');
     var lines = text.split('\n'); // 각 줄을 배열로 분리
-    var keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
+    var keys = ['A', 'B', 'C'];
     var tableData = [];
 
     lines.forEach(line => {
@@ -398,7 +380,7 @@
 			<select class="field-selector">
 				<option value="">선택하기</option>
 				<option value="addrNm">이름</option>
-				<option value="addrPhoneNo">팩스번호</option>
+				<option value="addrFaxNo">팩스번호</option>
 				<option value="addrComment">메모</option>
 			</select>
 		</div>
@@ -407,7 +389,7 @@
 			<select class="field-selector">
 				<option value="">선택하기</option>
 				<option value="addrNm">이름</option>
-				<option value="addrPhoneNo">팩스번호</option>
+				<option value="addrFaxNo">팩스번호</option>
 				<option value="addrComment">메모</option>
 			</select>
 		</div>
@@ -416,7 +398,7 @@
 			<select class="field-selector">
 				<option value="">선택하기</option>
 				<option value="addrNm">이름</option>
-				<option value="addrPhoneNo">팩스번호</option>
+				<option value="addrFaxNo">팩스번호</option>
 				<option value="addrComment">메모</option>
 			</select>
 		</div>
src/main/webapp/js/web/addr/fax/faxEvent.js
--- src/main/webapp/js/web/addr/fax/faxEvent.js
+++ src/main/webapp/js/web/addr/fax/faxEvent.js
@@ -38,7 +38,7 @@
 		updateTableFields($objTabul, group);
 		
 		// 필드가 휴대폰이면 열 중복체크
-		if($(this).val() == 'addrPhoneNo'){
+		if($(this).val() == 'addrFaxNo'){
 			fn_phoneDupl($objTabul);
 		}
 		
@@ -68,7 +68,7 @@
 
 		data.forEach((row, index) => {
 	
-			const number = row.addrPhoneNo;
+			const number = row.addrFaxNo;
 
 	        // number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리
 	        if (!number || (typeof number === 'string' && !number.trim())){
@@ -81,7 +81,7 @@
 			
 			if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
 				if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
-					row.addrPhoneNo = formattedNumber;
+					row.addrFaxNo = formattedNumber;
 					existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가
 					newData.push(row); // 유효한 데이터만 새로운 배열에 추가
 				} else {
@@ -90,7 +90,7 @@
 					
 					errors.push({ 
 						name: row.addrNm, // 이름
-						phone: row.addrPhoneNo, // 폰번호
+						phone: row.addrFaxNo, // 폰번호
 						result: "오류" // 결과 메시지 추가
 					});
 				}
@@ -100,7 +100,7 @@
 				
 				errors.push({ 
 					name: row.addrNm, // 이름
-					phone: row.addrPhoneNo, // 폰번호
+					phone: row.addrFaxNo, // 폰번호
 					result: "중복" // 결과 메시지 추가
 				});
 			}
@@ -124,24 +124,18 @@
 	    $("#errorPopDupCnt").text(duplicateCount);
 	    // 에러 카운트
 	    $("#errorPopErrorCnt").text(errorCount);
-	    // 
-//	    $("#errorPopTotCnt").text(duplicateCount+errorCount);
-
 	    
-		 // 오류 및 중복 데이터를 한 번에 추가
+	    // 오류 및 중복 데이터를 한 번에 추가
 	    $tableError.setData(errors);
 	    
 	    if(errorCount > 0){
-	    	alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
+	    	alert('팩스번호 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
 	    }
-
-	    
-
 	}
 
 	//받는사람 전체삭제 버튼 처리
 	$('.all_del').click(function(){
-
+		
 		var tabulNm = fn_utils_getTabulatorNm();
 		var tabluC = '.'+tabulNm
 		
@@ -195,12 +189,8 @@
 	    for (var i = 0; i < 1000; i++) {
 	    	newTableData.push({
 				addrNm: "", 
-				addrPhoneNo: "", 
-				addrInfo1: "", 
-				addrInfo2: "", 
-				addrInfo3: "", 
-				addrInfo4: "", 
-				addrComment: ""
+				addrFaxNo: "", 
+				addrNemo: ""
 	        });
 	    }
 	    
@@ -236,16 +226,16 @@
 
 	    // 1000개 행이 되도록 나머지 행 생성
 	    for (var i = totRows; i < 1000; i++) {
-	        $objTabul.addRow({addrNm: "", addrPhoneNo: "", addrInfo1: "", addrInfo2: "", addrInfo3: "", addrInfo4: "", addrComment: ""});
+	        $objTabul.addRow({addrNm: "", addrFaxNo: "", addrMemo: ""});
 	    }
 
 
 	    var existingNumbers = []; // 중복 번호를 저장할 배열
-		// 모든 행의 'addrPhoneNo' 값을 배열에 추가
+		// 모든 행의 'addrFaxNo' 값을 배열에 추가
 		var allRows = $tableSelf.getData(); // 테이블의 모든 데이터를 가져옴
 		allRows.forEach(function(row) {
-			if (row.addrPhoneNo) {
-				const cleanedExistingNumber = row.addrPhoneNo.replace(/[^0-9]/g, ''); // 숫자만 남김
+			if (row.addrFaxNo) {
+				const cleanedExistingNumber = row.addrFaxNo.replace(/[^0-9]/g, ''); // 숫자만 남김
 				existingNumbers.push(cleanedExistingNumber); // 기존 번호를 배열에 추가
 			}
 		});
@@ -269,13 +259,15 @@
 		
 		// 필드 초기 값 셋팅
 		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", width:50, headerSort: false, cellClick: function(e, cell) {
 				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:100}
 		];
 
 		var fieldMapping = [];
+		
+		console.log(":   setTing number  : ");
 		// 초기 후 필드 값 셋팅하기
 		$('[data-group="' + group + '"] .field-selector').each(function(index) {
 			var selectedField = $(this).val();
@@ -287,9 +279,8 @@
 					, field: selectedField
 					, hozAlign: "center"
 					, headerHozAlign: "center"
-//					, editor: "input"
 					, editor: false
-					, width: 125
+					, width: 260
 					, validator: ["maxLength:100", "string"]
 				});
 				fieldMapping.push(selectedField);
@@ -299,9 +290,8 @@
 					, field: field
 					, hozAlign: "center"
 					, headerHozAlign: "center"
-//					, editor: "input"
 					, editor: false
-					, width: 125
+					, width: 260
 					, validator: ["maxLength:100", "string"]
 				});
 				fieldMapping.push(field);
@@ -365,8 +355,8 @@
 	// 타불 객체 가져오기
 	var $objTabul = fn_utils_getTabulator();
 	
-	// 필드를 A, B, C, D로 초기화
-	var defaultFields = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
+	// 필드를 A, B, C로 초기화
+	var defaultFields = ['A', 'B', 'C'];
 
 	// 테이블의 기존 데이터를 가져옵니다.
 	var currentData = $objTabul.getData();
@@ -387,7 +377,7 @@
 			hozAlign: "center",
 			headerHozAlign: "center",
 			editor: false, // 편집 비활성화
-			width: 125,
+			width: 240,
 			validator: ["maxLength:100", "string"]
 		});
 	});
Add a comment
List