From 92745aa218d039c39d8cacbe12e51d0f50e267c7 Mon Sep 17 00:00:00 2001 From: wyh Date: Fri, 1 Nov 2024 14:35:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A3=BC=EC=86=8C=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webapp/WEB-INF/jsp/main/EgovMainView.jsp | 4 +- .../WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp | 449 ++++---------- .../addr/include/FaxAddrListforClipboard.jsp | 580 ++++++++++++++++++ .../fax/addr/include/FaxAddrListforExcel.jsp | 434 +++++++++++++ .../fax/addr/include/FaxAddrListforSelf.jsp | 188 ++++++ .../jsp/web/msgcampain/MsgDataSMLView.jsp | 4 +- src/main/webapp/js/web/addr/fax/faxEvent.js | 446 ++++++++++++++ .../webapp/js/web/addr/fax/faxTabulator.js | 93 +++ 8 files changed, 1863 insertions(+), 335 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforClipboard.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforSelf.jsp create mode 100644 src/main/webapp/js/web/addr/fax/faxEvent.js create mode 100644 src/main/webapp/js/web/addr/fax/faxTabulator.js diff --git a/src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp b/src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp index 11c9c995..2944d868 100644 --- a/src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp +++ b/src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp @@ -652,14 +652,14 @@ - + <%-- - + --%> diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp index c937ba88..1bcac26f 100644 --- a/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp @@ -4,41 +4,48 @@ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + +
@@ -1307,145 +1171,78 @@ function GetAddrMassSaveDupli() {
Loading
- -
- - - - -
-
@@ -1458,35 +1255,25 @@ function GetAddrMassSaveDupli() {
  • - + +

    팩스 주소록 관리

    - <%--
    -

    - 연락처를 그룹별로 분류하여 간편하고 편리하게 관리할 수 있습니다(최대 100,000개까지 등록 가능)

    -

    - 그룹은 그룹 간 이동, 병합 및 복사가 가능합니다.

    -

    - 주소록은 중복검사가 가능하며 중복된 연락처를 삭제할 수 있습니다. 단, 데이터 양에 따라 시간이 소요될 수 있습니다.

    -

    - 주소록 관리에서 그룹 또는 연락처를 선택하여 문자를 바로 발송할 수 있습니다.

    -

    - 주소록 내보내기를 통해 다른 ID로 주소록을 복사할 수 있습니다(그룹 전송만 가능, 보낸 주소록 결과는 최대 90일까지 보관)

    -

    - 주소록 내보내기 시에는 개인정보보호를 위해 추가 팩스 인증을 실시하며, 팩스 인증은 등록된 발신번호로만 인증 가능합니다.

    -

    - 고객님께서 보유하신 엑셀파일이나 텍스트파일 등으로 작성된 주소록을 대량 등록할 수 있습니다.

    -

    - 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하시면 됩니다.

    -

    - 주소록 무료대행은 신규 그룹으로 생성됩니다(기존 그룹 수정 불가)

    -
    --%> -
    -
    -
    +
    -
    -
    + + + +
    diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforClipboard.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforClipboard.jsp new file mode 100644 index 00000000..20fa9cd5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforClipboard.jsp @@ -0,0 +1,580 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + + + +
    +
    +

    - 엑셀(EXCEL), 텍스트(TXT) 파일로 작성된 주소록 내용을 복사하여 등록 가능합니다.

    +

    - 많은 양의 데이터를 입력하시려면 ‘주소록 복사(Ctrl+C) + 붙여넣기(Ctrl+V)’를 이용해주세요.

    +

    - 입력 내용은 (Tab) 또는 (,) 기호로 구분하여 입력하여야 합니다.

    +

    - 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

    +

    - 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

    + +
    +
    + +
    +
    + + +
    + + + + + + + + + + + + +
    엑셀입력 표
    그룹 선택 + + + + + +
    +
    +
    +

    + 총 0건 + / 중복 0건 + / 오류 0건 + +

    +
    + + + + +
    + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + +
    +

    휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능

    + (예시) 010-1234-0001(O) / 010-123-0001(X) +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp new file mode 100644 index 00000000..7ab44fe1 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp @@ -0,0 +1,434 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + +<%-- --%> + + + + +
    +
    +

    - 엑셀(EXCEL) 파일로 주소록을 한 번에 최대 2만건까지 등록하여 간편하게 발송 및 관리하실 수 있습니다.

    +

    - 반드시 샘플파일을 다운로드하여 작성방법을 확인하신 후 정해진 양식에 맞추어 주소록을 작성하셔야 합니다.

    +

      ※ 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다.

    +

      ※ 주소록 관리 메뉴에서 다운로드 받으신 엑셀 파일 또한 업로드 양식에 맞추어 작성하셔야 하며,

    +

          주소록에 이미 등록된 팩스 번호는 업데이트 되지 않으므로 기존 주소록에서 해당 팩스 번호를 삭제한 후 재등록해 주시기 바랍니다.

    +

    - 쉼표(,), 구분선(|), 역슬래시(\, ₩), 작은따옴표('), 큰따옴표(") 등 발송불가 특수문자는 저장되지 않습니다.

    +

    - 팩스 번호는 필수입력 항목입니다.

    +

    - 팩스번호 형태는 02-1234-5678 또는 0212345678 모두 가능합니다. 단, 공백은 허용되지 않습니다.

    +

    - 엑셀 파일에 비밀번호 설정, 제한된 보기, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.

    +

    - 이름 20byte, 메모 250byte까지 입력 가능합니다.

    +

    - 첨부가능 파일 : xlsx, xls(최대용량 3MB)

    +

    - ‘오류 검사’를 통해 등록된 데이터에 팩스 번호 입력 오류를 확인하실 수 있습니다.

    +

    - 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하시면 됩니다.

    +
    +
    + +
    +
    + + + +
    + + + + + + + + + + + + +
    엑셀입력 표
    그룹 선택 + + + + + + +
    +
    +
    +

    파일 붙여넣기마우스로 엑셀, TXT파일을 여기에 끌어다 놓으세요

    +
    +
    +

    + 총 0건 + / 중복 0건 + / 오류 0건 + +

    +
    +
    + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforSelf.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforSelf.jsp new file mode 100644 index 00000000..caec8724 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforSelf.jsp @@ -0,0 +1,188 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + + + +
    +
    + + +

    - 셀간 이동은 Tab으로 가능합니다.

    +

    - 핸드폰 번호를 입력하지 않은 행은 저장되지 않습니다.

    +

    - 이름 200byte, [*1*]~[*4*] 200byte, 메모 250byte까지 입력 가능합니다.

    +

    - 주소록 등록이 어려우신 경우에는 주소록 입력대행 메뉴를 이용하실 수 있습니다.

    + +
    +
    + +
    +
    + + +
    + + + + + + + + + + + + +
    엑셀입력 표
    그룹 선택 + + + + + + + + + +
    +
    + +
    +

    + 총 0건 + + + + + + + + +

    + +
    + + + + + +
    + +
    +
    +
    +
    + + + + +
    +

    휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능

    + (예시) 010-1234-0001(O) / 010-123-0001(X) +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp index f9ae294a..a30bd447 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp @@ -3381,10 +3381,10 @@ $(document).on('click', '#hdnLink', function() {
    - +
    - +
    diff --git a/src/main/webapp/js/web/addr/fax/faxEvent.js b/src/main/webapp/js/web/addr/fax/faxEvent.js new file mode 100644 index 00000000..c498b9b0 --- /dev/null +++ b/src/main/webapp/js/web/addr/fax/faxEvent.js @@ -0,0 +1,446 @@ +$(document).ready(function(){ + //타이틀 select 선택 이벤트 + $('[data-group]').on('change', '.field-selector', function() { + + fn_loadAddActive(); + + var group = $(this).closest('[data-group]').data('group'); + var selectedFields = []; + var isDuplicate = false; + + // 타불 객체 가져오기 + var $objTabul = fn_utils_getTabulator(); + + console.log('$objTabul : ', $objTabul); + + if($objTabul.getData().length < 1){ + alert('데이터 입력 후 선택해 주세요.'); + $(this).val(""); + fn_loadRemoveActive(); + return false; + } + + // 중복체크 + $('[data-group="' + group + '"] .field-selector').each(function() { + var selectedField = $(this).val(); + if (selectedField) { + if (selectedFields.includes(selectedField)) { + alert("중복된 필드를 선택할 수 없습니다."); + $(this).val(""); // 중복 필드를 선택한 경우 빈 값으로 초기화 + isDuplicate = true; + return false; // 반복문 종료 + } + selectedFields.push(selectedField); + } + }); + + // 데이터 넣기 + updateTableFields($objTabul, group); + + // 필드가 휴대폰이면 열 중복체크 + if($(this).val() == 'addrPhoneNo'){ + fn_phoneDupl($objTabul); + } + + fn_loadRemoveActive(); + }); + + + /** + * @ 핸드폰 중복 데이터 + * */ + function fn_phoneDupl($objTabul) { + + $tableError.clearData(); + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + var data = $objTabul.getData(); + var phoneNumberChk = false; + var existingNumbers = new Set(); // 배열에서 Set으로 변경 + + let errorCount = 0; // 중복 번호 개수를 저장할 변수 + let duplicateCount = 0; // 중복 번호 개수를 저장할 변수 + + const errors = []; // 오류 데이터를 저장할 배열 + const newData = []; // 유효한 데이터만 저장할 새로운 배열 + + data.forEach((row, index) => { + + const number = row.addrPhoneNo; + + // number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리 + if (!number || (typeof number === 'string' && !number.trim())){ + console.log("number : ", number); + return; + } + + 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++; + + errors.push({ + name: row.addrNm, // 이름 + phone: row.addrPhoneNo, // 폰번호 + result: "오류" // 결과 메시지 추가 + }); + } + } else { + // 중복 + duplicateCount++; + + errors.push({ + name: row.addrNm, // 이름 + phone: row.addrPhoneNo, // 폰번호 + result: "중복" // 결과 메시지 추가 + }); + } + }); + + // data 배열을 newData 배열로 대체 + data = newData; + + // 수정된 데이터로 테이블 업데이트 + $objTabul.setData(data); + + $(tabluC+" #rowTotCnt").text($objTabul.getDataCount()); + // 중복 카운트 + $(tabluC+" #rowDupCnt").text(duplicateCount); + // 에러 카운트 + $(tabluC+" #rowErrorCnt").text(errorCount); + + // popup 영역 + $("#errorPopTotCnt").text($objTabul.getDataCount()); + // 중복 카운트 + $("#errorPopDupCnt").text(duplicateCount); + // 에러 카운트 + $("#errorPopErrorCnt").text(errorCount); + // +// $("#errorPopTotCnt").text(duplicateCount+errorCount); + + + // 오류 및 중복 데이터를 한 번에 추가 + $tableError.setData(errors); + + if(errorCount > 0){ + alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등'); + } + + + + } + /* + function fn_phoneDupl_old($objTabul) { + var data = $objTabul.getData(); + var uniquePhones = new Set(); + var rowsToKeep = []; + var rowsToDelete = []; + var phoneNumberChk = false; + + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + data.forEach((row, index) => { + + if (!isValidKoreanPhoneNumber(row.addrPhoneNo)) { + phoneNumberChk = true + return false; + } + + if (uniquePhones.has(row.addrPhoneNo)) { + rowsToDelete.push(index); // 중복된 행의 인덱스를 기록 + } else { + uniquePhones.add(row.addrPhoneNo); + rowsToKeep.push(row); // 고유한 데이터만 추가 + } + }); + + if(phoneNumberChk){ + alert('휴대폰 형식에 맞지 않는 데이터가 있습니다.\n 확인해 주세요'); + } + + + + // 중복된 행 삭제 + rowsToDelete.reverse().forEach(index => { + $objTabul.deleteRow(index); + }); + + // 고유한 데이터만 남기고 테이블 업데이트 + $objTabul.setData(rowsToKeep); + $(tabluC+" #rowTotCnt").text(rowsToKeep.length); + }*/ + + //받는사람 전체삭제 버튼 처리 + $('.all_del').click(function(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + var $objTabul = fn_utils_getTabulator(); + + $objTabul.clearData(); + fn_rowCntInit(); + + // select box 초기화 + $('.field-selector').each(function() { $(this).val(''); }); + }); + + // 받는사람 선택삭제 버튼 처리해주기 + $('.select_del').click(function(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + var $objTabul = fn_utils_getTabulator(); + + $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 + var selectedData = $objTabul.getSelectedRows(); + + if(selectedData == "" || selectedData == null){ + alert("삭제할 데이터를 선택해 주세요."); + return false; + }else{ // 선택한 Row 데이터 삭제하기 + for(var i=0; i < selectedData.length; i++){ + selectedData[i].delete(); + } + } + + totRows = $objTabul.getRows().length; + + updateTotCnt(totRows); + }); + + + //받는사람 전체삭제 버튼 처리 + $('.self_all_del').click(function(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + var $objTabul = fn_utils_getTabulator(); + + // 초기화 및 데이터 추가를 한번에 처리 + var newTableData = []; + + // 1000개의 빈 행을 미리 준비 + for (var i = 0; i < 1000; i++) { + newTableData.push({ + addrNm: "", + addrPhoneNo: "", + addrInfo1: "", + addrInfo2: "", + addrInfo3: "", + addrInfo4: "", + addrComment: "" + }); + } + + // 기존 데이터 초기화 후, 새로운 데이터를 한 번에 추가 + $objTabul.setData(newTableData); + + // 행 수 초기화 함수 호출 + fn_rowCntInit(); + }); + + // 직접입력 받는사람 선택삭제 버튼 처리해주기 + $('.self_select_del').click(function(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + var $objTabul = fn_utils_getTabulator(); + + $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 + var selectedData = $objTabul.getSelectedRows(); + + if(selectedData == "" || selectedData == null){ + alert("삭제할 데이터를 선택해 주세요."); + return false; + }else{ // 선택한 Row 데이터 삭제하기 + for(var i=0; i < selectedData.length; i++){ + selectedData[i].delete(); + } + } + + // 남은 행 수 계산 + var totRows = $objTabul.getRows().length; + + // 1000개 행이 되도록 나머지 행 생성 + for (var i = totRows; i < 1000; i++) { + $objTabul.addRow({addrNm: "", addrPhoneNo: "", addrInfo1: "", addrInfo2: "", addrInfo3: "", addrInfo4: "", addrComment: ""}); + } + + + var existingNumbers = []; // 중복 번호를 저장할 배열 + // 모든 행의 'addrPhoneNo' 값을 배열에 추가 + var allRows = $tableSelf.getData(); // 테이블의 모든 데이터를 가져옴 + allRows.forEach(function(row) { + if (row.addrPhoneNo) { + const cleanedExistingNumber = row.addrPhoneNo.replace(/[^0-9]/g, ''); // 숫자만 남김 + existingNumbers.push(cleanedExistingNumber); // 기존 번호를 배열에 추가 + } + }); + updateTotCnt(existingNumbers.length); + }); + + //전체 데이터 갯수 구하는 함수 + function updateTotCnt(data){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + $(tabluC+" #rowTotCnt").text(data); + + } + + /* + * 타이틀 select 선택할때마다 실행해서 + * 데이터테이블 필드값 수정 + */ + function updateTableFields($objTabul, group) { + // 데이터가져오기 + var currentData = $objTabul.getData(); + + // 필드 초기 값 셋팅 + var 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} + ]; + + var fieldMapping = []; + // 초기 후 필드 값 셋팅하기 + $('[data-group="' + group + '"] .field-selector').each(function(index) { + var selectedField = $(this).val(); + // ASCII 문자 코드 사용 - 65=A, 66=B ... + var field = String.fromCharCode(65 + index); + if (selectedField) { + columns.push({ + title: field + , field: selectedField + , hozAlign: "center" + , headerHozAlign: "center" +// , editor: "input" + , editor: false + , width: 125 + , validator: ["maxLength:100", "string"] + }); + fieldMapping.push(selectedField); + } else { + columns.push({ + title: field + , field: field + , hozAlign: "center" + , headerHozAlign: "center" +// , editor: "input" + , editor: false + , width: 125 + , validator: ["maxLength:100", "string"] + }); + fieldMapping.push(field); + } + }); + + // 데이터 셋팅 + var updatedData = currentData.map(row => { + var newRow = {}; + fieldMapping.forEach((field, index) => { + newRow[field] = row[Object.keys(row)[index]] || ""; + }); + return newRow; + }); + + $objTabul.setColumns(columns); + $objTabul.setData(updatedData); + } +}); + + + + +// 주소록 에러결과 초기화 +function fn_errorPopClean(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + // popup 영역 + $tableError.clearData(); + + + // 중복 카운트 + $("#errorPopDupCnt").text(0); + // 에러 카운트 + $("#errorPopErrorCnt").text(0); + // + $("#errorPopTotCnt").text(0); + + // select box 초기화 + $(tabluC+' .field-selector').each(function() { $(this).val(''); }); + +} + +function fn_rowCntInit(){ + + var tabulNm = fn_utils_getTabulatorNm(); + var tabluC = '.'+tabulNm + + $(tabluC+" #rowTotCnt").text(0); //총건수 수정 + $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 + $(tabluC+" #rowErrorCnt").text(0); //중복건수 수정 +} + + + +//1. 필드 초기화 함수 +function resetTableFieldsToDefault() { + + // 타불 객체 가져오기 + var $objTabul = fn_utils_getTabulator(); + + // 필드를 A, B, C, D로 초기화 + var defaultFields = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; + + // 테이블의 기존 데이터를 가져옵니다. + var currentData = $objTabul.getData(); + + // 초기 필드(A, B, C, D 등)를 위한 열 설정 + var 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} + ]; + + // 기본 필드로 열 구성 + defaultFields.forEach(field => { + columns.push({ + title: field, + field: field, + hozAlign: "center", + headerHozAlign: "center", + editor: false, // 편집 비활성화 + width: 125, + validator: ["maxLength:100", "string"] + }); + }); + + // 테이블을 기본 필드로 업데이트 + $objTabul.setColumns(columns); +// $objTabul.setData(updatedData); +} + + + diff --git a/src/main/webapp/js/web/addr/fax/faxTabulator.js b/src/main/webapp/js/web/addr/fax/faxTabulator.js new file mode 100644 index 00000000..5a34cdf2 --- /dev/null +++ b/src/main/webapp/js/web/addr/fax/faxTabulator.js @@ -0,0 +1,93 @@ + + +var tableErrorData = []; +var tableErrorCheckData = []; +var addrMassDupliSaveList = null; + +var gArrRestartIndex = 0; //배열 재시작카운드 +var gNameList = []; //치환문자 이름 +var gPhoneList = []; //받는사람 +var gMemoList = []; //메모 + +var $tableExcel = null; //엑셀입력 탭 +var $tableClip = null; //붙여넣기 탭 +var $tableSelf = null; //직접입력 탭 +var $tableError = null; //에러 팝업 영역 + + +$(document).ready(function(){ + + //excel 파일 불러오기 tabulator + $tableExcel = new Tabulator("#tabulator_excel", { + height:"255px", + width:"100%", + layout:"fitColumns", + autoColumns:false, + headerHozAlign:"center", + validationMode:"highlight", + clipboard:false, + clipboardCopySelector:"table", + clipboardPasteAction:"insert", // insert, update, replace + placeholder:"Excel 파일을 업로드 해주세요.", //fit columns to width of table (optional) + columns:[ //Define Table Columns + {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:50, headerSort:false, cellClick:function(e, cell){ + cell.getRow().toggleSelect(); + }} + ,{formatter:"rownum", hozAlign:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:100} + ,{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:260, validator:["maxLength:100", "string"]} + ,{title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:260, validator:["maxLength:100", "string"]} + ,{title:"C", field:"C", hozAlign:"center", headerHozAlign: "center", width:260, validator:["maxLength:100", "string"]} + ], + validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 + var valid = cell.isValid(); + if(!valid){ + alert("양식에 맞지 않는 정보가 입력되었습니다."); + + //해당 셀 데이터 삭제 + cell.setValue(""); + } + return value % parameters.phone; + }, + }); + + //Tabulator AJAX Data Loading + $tableError = new Tabulator("#tabulator_error", { + height:"255px", + width:"100%", + layout:"fitColumns", + autoColumns:false, + headerHozAlign:"center", + validationMode:"highlight", + clipboard:false, + clipboardCopySelector:"table", + clipboardPasteAction:"insert", // insert, update, replace + placeholder:"등록 팝업에서 팩스번호를 선택 후 확인해주세요.", //fit columns to width of table (optional) + columns:[ //Define Table Columns + {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} + ] + }); + + // 타뷸레이터 width값 변경 시 위에 select width 값 변경 + var titleArray = ["A","B","C","D","E","F","G"]; + + $tableExcel.on("columnWidth",function(column){ + var titleIndex = titleArray.indexOf(column._column.definition.title); + titleIndex += 1; + if(titleIndex != 0){ + $('.tableExcel .select_adr_hd>div').eq(titleIndex).css('width', column._column.width); + }else{ + $('.tableExcel .select_adr_hd>div').eq(0).css('width', column._column.width + 40); + } + }); + + $tableExcel.on("scrollHorizontal",function(left){ + $(".tableExcel .adr_excel").scrollLeft(left); + }) + + $(".tableExcel .adr_excel").on("scroll",function(){ + $(".tableExcel .tabulator-tableholder").scrollLeft($(this).scrollLeft()); + }); +}); +