주소록 > 엑셀입력 완료

This commit is contained in:
hylee 2024-07-29 15:25:11 +09:00
parent ea9dba2146
commit fc33fff87e
12 changed files with 382 additions and 249 deletions

View File

@ -5,6 +5,10 @@ import java.time.LocalDateTime;
import org.springframework.http.HttpStatus;
import itn.let.mjo.pay.service.RefundVO;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
*
@ -22,6 +26,9 @@ import itn.let.mjo.pay.service.RefundVO;
*
*
*/
@Getter
@Setter
@NoArgsConstructor
public class StatusResponse {
private HttpStatus status;
@ -61,51 +68,13 @@ public class StatusResponse {
this.messageTemp = messageTemp;
}
public HttpStatus getStatus() {
return status;
}
public void setStatus(HttpStatus status) {
@Builder
public StatusResponse(HttpStatus status, String msg, Object data) {
this.status = status;
this.message = msg;
this.object = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessageTemp() {
return messageTemp;
}
public void setMessageTemp(String messageTemp) {
this.messageTemp = messageTemp;
}
public RefundVO getRefundVO() {
return refundVO;
}
public void setRefundVO(RefundVO refundVO) {
this.refundVO = refundVO;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public LocalDateTime getTimestamp() {
return timestamp;
}
public void setTimestamp(LocalDateTime timestamp) {
this.timestamp = timestamp;
}
}

View File

@ -2,6 +2,8 @@ package itn.let.mjo.addr.service;
import java.util.List;
import itn.let.mail.service.StatusResponse;
/**
* 주소록 관리를 위한 서비스 인터페이스 클래스
* @author ITN

View File

@ -2,6 +2,8 @@ package itn.let.mjo.addr.service;
import java.util.List;
import itn.let.mail.service.StatusResponse;
/**
* 주소록 관리를 위한 서비스 인터페이스 클래스
* @author ITN
@ -99,5 +101,6 @@ public interface AddrService {
// 주소록 대량등록 By Temp 주소록 All
public int insertAddrByTempAddrAll(List<AddrVO> addrList, AddrVO addrVO) throws Exception;
public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception;
}

View File

@ -1,12 +1,19 @@
package itn.let.mjo.addr.service.impl;
import java.nio.charset.Charset;
import java.time.LocalDateTime;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.let.mail.service.StatusResponse;
import itn.let.mjo.addr.service.AddrGroupService;
import itn.let.mjo.addr.service.AddrGroupVO;
import itn.let.mjo.addr.service.AddrService;
@ -37,6 +44,11 @@ public class AddrGroupServiceImpl extends EgovAbstractServiceImpl implements Ad
@Resource(name = "AddrDAO")
private AddrDAO addrDAO;
public List<AddrGroupVO> selectAddrGroupList(AddrGroupVO addrGroupVO) throws Exception {
return addrGroupDAO.selectAddrGroupList(addrGroupVO);
@ -159,4 +171,6 @@ public class AddrGroupServiceImpl extends EgovAbstractServiceImpl implements Ad
}
}

View File

@ -1,18 +1,25 @@
package itn.let.mjo.addr.service.impl;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import itn.com.cmm.LoginVO;
import itn.let.mail.service.StatusResponse;
import itn.let.mjo.addr.service.AddrGroupVO;
import itn.let.mjo.addr.service.AddrService;
import itn.let.mjo.addr.service.AddrTransHistVO;
@ -44,10 +51,16 @@ public class AddrServiceImpl extends EgovAbstractServiceImpl implements AddrSer
@Resource(name = "AddrTransHistDAO")
private AddrTransHistDAO addrTransHistDAO;
@Resource(name = "egovAddrTransHistIdGnrService")
private EgovIdGnrService idgenAddrTransHistId;
private static final String PHONE_REGEX = "^(01[016789]-?\\d{3,4}-?\\d{4})$";
private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX);
private static final Charset EUC_KR = Charset.forName("EUC-KR");
private static final int MAX_ADDR_CNT = 500000;
public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
return addrDAO.selectAddrList(addrVO);
@ -366,5 +379,153 @@ public class AddrServiceImpl extends EgovAbstractServiceImpl implements AddrSer
return rtnVal;
}
@Override
public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception {
// data init
// For-each loop
for (AddrVO addr : addrListVO) { addr.setMberId(userId); }
// step1 현재 주소록 갯수 조회
//회원별 주소록 전체 갯수 조회
int addrBefCnt = addrDAO.selectAddrTotalCount(addrListVO.get(0));
int addrNewCnt = addrListVO.size(); //신규 추가할 주소록 갯수
int sumAddrCnt = addrBefCnt + addrNewCnt;
// step1-1 갯수가 (주소록 갯수 + 신규 주소록)50만건 체크
if(sumAddrCnt > MAX_ADDR_CNT) {
return new StatusResponse(
HttpStatus.BAD_REQUEST
, "주소록은 총 50만개까지만 등록이 가능합니다."
, LocalDateTime.now()
);
}
// step2 신규 주소록 생성 북마크 체크
// => AddrGrpId
//
if ("NEW".equals(addrListVO.get(0).getAddrGrpId())) {
AddrGroupVO addrGroupVO = new AddrGroupVO();
addrGroupVO.setMberId(userId);
addrGroupVO.setAddrGrpNm(addrListVO.get(0).getAddrGrpNm());
// 정렬순서
int nextOrderNumber = addrGroupDAO.selectMaxOrderNumber(addrGroupVO);
addrGroupVO.setGrpOrder(nextOrderNumber);
addrGroupDAO.insertAddrGroup(addrGroupVO);
// 신규 추가한 그룹아이디
for (AddrVO addr : addrListVO) { addr.setAddrGrpId(addrGroupVO.getAddrGrpId()); }
}
else if ("bookmark".equals(addrListVO.get(0).getAddrGrpId()))
{
for (AddrVO addr : addrListVO) { addr.setBookmark("Y"); addr.setAddrGrpId("0"); }
}
else
{
for (AddrVO addr : addrListVO) { addr.setBookmark("N"); }
}
// step4-1 true
// => 폰번호 빼고 바이트 체크해서 20byte만 짜르고 넣기
// => 폰번호는 유효성 체크 하기
long startTime = System.currentTimeMillis();
// 유효성 체크 하이픈 제거, 유효하지 않은 번호는 리스트에서 제거
// 나머지 필드들 20byte (euc-kr) 체크 넘으면 자르기
AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 있는 기능을 제공
addrListVO.removeIf(addr -> {
String phoneNo = addr.getAddrPhoneNo();
// phoneNo = phoneNo != null ? phoneNo.replaceAll("-", "") : "";
// System.out.println("phoneNo : "+ phoneNo);
if (isValidPhoneNumber(phoneNo)) {
addr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정
trimFieldsBytes(addr); // 다른 필드들에 대한 20바이트 체크 자르기
return false; // 유효한 번호는 제거하지 않음
} else {
// System.out.println(phoneNo + " is an invalid phone number. Removing from list.");
invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가
return true; // 유효하지 않은 번호는 제거
}
});
long endTime = System.currentTimeMillis();
double executionTime = (endTime - startTime) / 1000.0;
System.out.println(" number chk Execution time: " + executionTime + " seconds");
startTime = System.currentTimeMillis();
System.out.println("addrListVO.size() : "+ addrListVO.size());
if(addrListVO.size() > 0) {
// 등록
addrDAO.insertAddrList(addrListVO);
}
endTime = System.currentTimeMillis();
executionTime = (endTime - startTime) / 1000.0;
System.out.println("INSERT Execution time: " + executionTime + " seconds");
// 중복체크 dupliCnt
//
String message = "저장에 성공했습니다.\n저장 : " + addrListVO.size() + ""
// +", 중복 : " + invalid.dupliCnt + ""
+", INERT 총 시간 : " + executionTime+ ""
+", 휴대폰번호 오류 : " + invalid.get() + "";
return new StatusResponse(
HttpStatus.OK
, message
// , ""
, LocalDateTime.now());
}
public static boolean isValidPhoneNumber(String phoneNo) {
if (phoneNo == null || phoneNo.isEmpty()) {
return false;
}
Matcher matcher = PHONE_PATTERN.matcher(phoneNo);
return matcher.matches();
}
public static void trimFieldsBytes(AddrVO addr) {
addr.setAddrInfo1(trimToBytes(addr.getAddrInfo1(), 20));
addr.setAddrInfo2(trimToBytes(addr.getAddrInfo2(), 20));
addr.setAddrInfo3(trimToBytes(addr.getAddrInfo3(), 20));
addr.setAddrInfo4(trimToBytes(addr.getAddrInfo4(), 20));
addr.setAddrComment(trimToBytes(addr.getAddrComment(), 250));
addr.setAddrNm(trimToBytes(addr.getAddrNm(), 20));
}
// maxBytes만큼 글자수 처리해서 리턴
public static String trimToBytes(String str, int maxBytes) {
if (str == null) {
return null;
}
byte[] bytes = str.getBytes(EUC_KR);
if (bytes.length <= maxBytes) {
return str;
}
int len = maxBytes;
while (len > 0 && bytes[len - 1] < 0) {
len--; // 바이트 배열을 maxBytes로 자를 , 잘못된 분할을 피하기 위해 문자 경계 확인
}
return new String(bytes, 0, len, EUC_KR);
}
}

View File

@ -1,26 +1,25 @@
package itn.let.mjo.addr.web;
import java.nio.charset.Charset;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.LoginVO;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.fax.admin.service.FaxStatVO;
import itn.let.mail.service.StatusResponse;
import itn.let.mjo.addr.service.AddrGroupService;
import itn.let.mjo.addr.service.AddrGroupVO;
@ -63,55 +62,31 @@ public class AddrRestController {
* 주소록 대량등록 저장
* @param searchVO
* @param model
* @return "/web/mjon/addr/addrMassInsertByTempAjax.do"
* @return "/web/mjon/addr/addrMassInsertByTempAjax_advc.do"
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/addr/addrMassInsertByTempAjax_advc.do"})
public ResponseEntity<StatusResponse> addrMassInsertByTempAjax(@RequestBody List<AddrVO> addrListVO,
RedirectAttributes redirectAttributes,
ModelMap model) throws Exception{
public ResponseEntity<StatusResponse> addrMassInsertByTempAjax_advc(@RequestBody List<AddrVO> addrListVO
,ModelMap model) throws Exception{
System.out.println("??");
System.out.println("?? " + addrListVO.get(0).toString());
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()));
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok().body(addrService.addrMassInsertByTempAjax_advc(addrListVO, userId));
}
/* 바이트 자르기
UTF-8일 경우
subStringBytes("블라블라블라라", 10, 3);
EUC-KR일 경우
subStringBytes("블라블라블라라", 10, 2);
*/
public String subStringBytes(String str, int byteLength, int sizePerLetter) {
int retLength = 0;
int tempSize = 0;
int asc;
if (str == null || "".equals(str) || "null".equals(str)) {
str = "";
}
int length = str.length();
for (int i = 1; i <= length; i++) {
asc = (int) str.charAt(i - 1);
if (asc > 127) {
if (byteLength >= tempSize + sizePerLetter) {
tempSize += sizePerLetter;
retLength++;
}
} else {
if (byteLength > tempSize) {
tempSize++;
retLength++;
}
}
}
return str.substring(0, retLength);
}
//
}

View File

@ -775,7 +775,7 @@
</select>
<insert id="AddrDAO.insertAddrList" parameterClass="java.util.List">
/* AddrDAO.insertAddrList */
INSERT INTO MJ_ADDR
(
MBER_ID,
@ -790,9 +790,9 @@
BOOKMARK,
ADDR_COMMENT,
FRST_REGISTER_ID
)VALUES
<iterate conjunction=",">
(
)
<iterate prepend="VALUES" conjunction=",">
(
#[].mberId#,
#[].addrGrpId#,
#[].addrNm#,
@ -805,8 +805,8 @@
#[].bookmark#,
#[].addrComment#,
#[].frstRegisterId#
)
</iterate>
)
</iterate>
</insert>

View File

@ -4,11 +4,15 @@
<%@ 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">
var currentTime = "${Instant.now().toEpochMilli()}";
</script>
<script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script>
<script type="text/javascript" src="https://oss.sheetjs.com/sheetjs/xlsx.full.min.js"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/init.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/event.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>?v=${currentTime}"></script>
<script type="text/javascript">
@ -274,7 +278,8 @@ $(document).on('click', '#btnAddrMassClose', function() {
// 대량등록 닫기
function setAddrMassClose() {
tableR.clearData();
var $objTabul = fn_utils_getTabulator();
$objTabul.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
@ -296,7 +301,7 @@ function getAddrGroupDuplCheckAjax() {
$.ajax({
url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />",
type : 'POST',
data : {"addrGrpNm" : $("#addrGrpNm").val()},
data : {"addrGrpNm" : $(tabluC+" #addrGrpNm").val()},
dataType:'json',
async: false, // 동기
success : function(data, status){
@ -331,7 +336,9 @@ function SetAddrMassSave(){
// gMemoList = []; //메모
var $objTabul = fn_utils_getTabulator();
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
if($objTabul.getData().length < 1){
alert("한 개 이상의 연락처를 입력하세요");
return false;
@ -341,7 +348,7 @@ function SetAddrMassSave(){
// return false;
// }
var selectMassVal = $("#addrGrpIdInfo option:selected").val();
var selectMassVal = $(tabluC+" #addrGrpIdInfo option:selected").val();
var loginVO = '${LoginVO}';
// if(loginVO == "" || loginVO == null){
@ -349,18 +356,46 @@ function SetAddrMassSave(){
alert("로그인 후 이용이 가능합니다.");
return false;
}
else if ($("#addrGrpIdInfo option:selected").val() == "NEW"
&& ($("#addrGrpNm").val() == ""
|| $("#addrGrpNm").val() == null
|| $("#addrGrpNm").val() == undefined)
// tableExcel 그룹의 select 요소들을 확인
var isPhoneSelected = false;
var isNameSelected = false;
$('.adr_hd.select_adr_hd[data-group="'+tabulNm+'"] .field-selector').each(function() {
var value = $(this).val();
if (value === 'addrPhoneNo') {
isPhoneSelected = true;
} else if (value === 'addrNm') {
isNameSelected = true;
}
// 두 조건이 모두 충족되면 반복문 종료
if (isPhoneSelected && isNameSelected) {
return false;
}
});
if (!isPhoneSelected || !isNameSelected) {
alert('휴대폰 또는 이름이 선택되지 않았습니다.');
return false;
}
// 주소록이 새로생성이면 새로운 주소록명이 있는지 확인
if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW"
&& ($(tabluC+" #addrGrpNm").val() == ""
|| $(tabluC+" #addrGrpNm").val() == null
|| $(tabluC+" #addrGrpNm").val() == undefined)
)
{
alert("저장할 그룹을 선택하거나 새 그룹명을 입력해주세요.");
$(tabluC+" #addrGrpNm").focus();
return false;
}
// 새 그룹명 중복체크
if ($("#addrGrpIdInfo option:selected").val() == "NEW" && $("#addrGrpNm").val() != "") {
if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW"
&& $(tabluC+" #addrGrpNm").val() != "")
{
//주소록 중복체크
if (getAddrGroupDuplCheckAjax() == false) {
alert("중복된 그룹명입니다. 새 그룹명을 입력해주세요.");
@ -368,44 +403,98 @@ function SetAddrMassSave(){
}
}
var commaSelectedData = numberWithCommas(selectedData.length);
var confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.";
// if (selectedData.length >= 10000) {
// confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.\n1만건 이상 등록시 약 30초정도 소요됩니다.\n잠시만 기다려주세요.";
// }
if (confirm(confirmMsg)) {
//로딩창 show
$('.loading_layer').addClass('active');
// $('.loading_layer').addClass('active');
setTimeout(setSenderList_advc, 1000);
// setTimeout(setSenderList_advc, 1000);
setSenderList_advc();
}
}
function setSenderList_advc(){
// tab에 해당하는 타블레이터 가져오기
var $objTabul = fn_utils_getTabulator();
var dataToSend = $objTabul.getData();
$.ajax({
type: "POST",
url: "/web/mjon/addr/addrMassInsertByTempAjax_advc.do",
data: JSON.stringify(dataToSend),
dataType: 'json',
contentType: 'application/json',
async: true,
success: function (data) {
console.log('data : ', data);
// alert(data.object.message);
// if (data.object.result == 'success') {
// location.reload();
// }
},
error: function (e) {
alert("ERROR : " + JSON.stringify(e));
}
});
}
var addrGrpIdInfo = $("#addrGrpIdInfo").val();
var addrGrpNmInfo = $("#addrGrpNm").val();
var updateData = dataToSend.map(row => {
row.addrGrpId = addrGrpIdInfo;
row.addrGrpNm = addrGrpNmInfo;
return row;
});
console.log('updateData : ', updateData);
$.ajax({
type: "POST",
url: "/web/mjon/addr/addrMassInsertByTempAjax_advc.do",
data: JSON.stringify(updateData),
dataType: 'json',
contentType: 'application/json',
async: true,
success: function (data) {
console.log('data : ', data);
if (data.status == 'OK') {
alert(data.message);
// alert("저장에 성공했습니다.\n저장 : " + returnData.resultCnt + "건"
// +", 중복 : " + returnData.dupliCnt + "건"
// +", 휴대폰번호 오류 : " + returnData.errPhoneCnt + "건");
// 중복번호 Hide
// $("#btnAddrMassDupli").hide();
// $("#btnAddrMassSaveDupli").hide();
// 중복건이 있을경우
// if (returnData.dupliCnt > 0) {
//alert(returnData.addrMassDupliList.length);
// 중복번호(해당 그룹) Show
// $("#btnAddrMassSaveDupli").show();
// addrMassDupliSaveList = returnData.addrMassDupliList;
//$("#btnAddrMassSaveDupli").trigger("click");
// }
// 데이터 비우기
SetClear($objTabul);
var selectMassVal = $("#addrGrpIdInfo option:selected").val();
// 주소록그룹 콤보박스 유지
setTimeout(setSelectMassSetting, 500, selectMassVal);
}
else {
alert("오류 알림 : " + returnData.msg);
}
},
error: function (e) {
//로딩창 hide
$('.loading_layer').removeClass('active');
alert("저장에 실패하였습니다.");
alert("ERROR : " + JSON.stringify(e));
},
beforeSend : function(xmlHttpRequest) {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete : function(xhr, textStatus) {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
});
}
/*
function setSenderList() {
var selectedData = tableR.getRows();
for (var i=gArrRestartIndex; i < selectedData.length; i++) {
@ -504,9 +593,9 @@ function setSenderList() {
SetAddrMassSave_Step2();
}
}
*/
//저장
function SetAddrMassSave_Step2(){
/* function SetAddrMassSave_Step2(){
var form = document.addrMassForm;
form.phoneList.value = gPhoneList;
form.nameList.value = gNameList;
@ -580,7 +669,7 @@ function SetAddrMassSave_Step2(){
$('.loading_layer').removeClass('active');
}
});
}
} */
//주소록그룹 콤보박스 유지
function setSelectMassSetting(selectMassVal) {
@ -589,28 +678,30 @@ function setSelectMassSetting(selectMassVal) {
//데이터 비우기
function SetClear() {
$("#addrGrpNm").val(""); // 새그룹명 Clear;
function SetClear($objTabul) {
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
$(tabluC+" #addrGrpNm").val(""); // 새그룹명 Clear;
// 주소록 그룹정보 불러오기
getAddrGroupList();
var data = tableR.getRows();
if (data == null || data == "") {
}
else {
tableR.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
}
$objTabul.clearData();
$(tabluC+" #rowTotCnt").text(0); //총건수 수정
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
// dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
}
// 주소 대량등록 버튼 클릭
// AddrListAjax.jsp에서 호출
$(document).on('click', '#btnAddrMassRegCall', function() {
getAddrGroupList();
console.log('??');
});
// 주소록 그룹정보 불러오기
function getAddrGroupList() {
$.ajax({
@ -631,6 +722,9 @@ function getAddrGroupList() {
}
});
}
// 그룹데이터 노출
function getAddrGroupListShow(jsonList) {
@ -641,8 +735,10 @@ function getAddrGroupListShow(jsonList) {
for (var j = 0; j < jsonList.length; j++) {
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
}
$("#addrGrpIdInfo").html(sHtml);
var tabulNm = fn_utils_getTabulatorNm();
var tabluC = '.'+tabulNm
$(tabluC+" #addrGrpIdInfo").html(sHtml);
}
$(document).on('change', '#addrGrpIdInfo', function() {
@ -747,6 +843,7 @@ function fn_tabToggle(tabNum){
var tabId = '#tab'+tabNum;
$('.tab_c').hide();
$(tabId).show();
getAddrGroupList();
}
</script>
@ -782,19 +879,19 @@ function fn_tabToggle(tabNum){
<ul class="list_tab" id="tbTabl">
<li class="tab active" data-tabul="tableExcel"><button type="button" onclick="popupTab(this,'1'); fn_tabToggle('1');">엑셀입력</button></li>
<li class="tab" data-tabul="tableClip"><button type="button" onclick="popupTab(this,'2'); fn_tabToggle('2');">붙여넣기</button></li>
<li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">붙여넣기</button></li>
<li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">직접입력</button></li>
</ul><!--// tab button -->
</div>
<div id="tab1" class="tab_c">
<div id="tab1" class="tab_c tableExcel">
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp" %>
</div>
<div id="tab2" class="tab_c" style="display: none;">
<div id="tab2" class="tab_c tableClip" style="display: none;">
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp" %>
</div>
<!-- <div id="tab3" class="tab_c" style="display: none;"> -->
<div id="tab3" class="tab_c" style="display: none;">
<div id="tab3" class="tab_c tableSelf" style="display: none;">
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp" %>
</div>

View File

@ -392,30 +392,6 @@ $(document).ready(function(){
});
// Show Html
function getAddrGroupListShow(jsonList) {
var sHtml = "";
sHtml += "<option value='NEW'>그룹추가</option>";
sHtml += "<option value='0'>그룹미지정</option>";
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
for (var j = 0; j < jsonList.length; j++) {
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
}
$("#addrGrpIdInfo").html(sHtml);
}
$(document).on('change', '#addrGrpIdInfo', function() {
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
$("#addrGrpNm").val(""); // 새그룹명 Clear;
}
});
//#############################################################################################
//파일 불러오기
//#############################################################################################
//체크박스 전체선택/해제
$(document).on("click", "#chkAll", function(e) {
var isChecked = $(this).is(":checked");

View File

@ -622,67 +622,6 @@ function getAddrGroupDuplCheckAjax() {
return isReturn;
}
//주소록그룹 콤보박스 유지
function setSelectMassSetting(selectMassVal) {
$("#addrGrpIdInfo").val(selectMassVal).prop("selected", true);
}
//데이터 비우기
function SetClear() {
$("#addrGrpNm").val(""); // 새그룹명 Clear;
// 주소록 그룹정보 불러오기
getAddrGroupList();
var data = $tableExcel.getRows();
if (data == null || data == "") {
}
else {
$tableExcel.clearData();
$("#rowTotCnt").text(0); //총건수 수정
$("#rowDupCnt").text(0); //중복건수 수정
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
}
}
// 주소록 그룹정보 불러오기
function getAddrGroupList() {
$.ajax({
type : "POST",
async : false,
url : "/web/mjon/addr/addrGroupListAjax.do",
data : {},
dataType:'json',
success : function(data) {
//alert(JSON.stringify(data.addrGroupList));
// Show Html
getAddrGroupListShow(data.addrGroupList);
},
error : function(xhr, status, error) {
alert(error);
return false;
}
});
}
// Show Html
function getAddrGroupListShow(jsonList) {
var sHtml = "";
sHtml += "<option value='NEW'>그룹추가</option>";
sHtml += "<option value='0'>그룹미지정</option>";
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
for (var j = 0; j < jsonList.length; j++) {
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
}
$("#addrGrpIdInfo").html(sHtml);
}
$(document).on('change', '#addrGrpIdInfo', function() {
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
$("#addrGrpNm").val(""); // 새그룹명 Clear;
}
});
//#############################################################################################
//파일 불러오기

View File

@ -414,19 +414,6 @@ $(document).ready(function(){
});
// Show Html
function getAddrGroupListShow(jsonList) {
var sHtml = "";
sHtml += "<option value='NEW'>그룹추가</option>";
sHtml += "<option value='0'>그룹미지정</option>";
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
for (var j = 0; j < jsonList.length; j++) {
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
}
$("#addrGrpIdInfo").html(sHtml);
}
$(document).on('change', '#addrGrpIdInfo', function() {
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
$("#addrGrpNm").val(""); // 새그룹명 Clear;

View File

@ -14,11 +14,21 @@ function fn_utils_getTabulator(){
var activeTab = $('#tbTabl .tab.active');
// data-tabul 값 가져오기
var tabulValue = activeTab.data('tabul');
console.log('tabulValue : ',tabulValue);
return window['$' + tabulValue];
}
function fn_utils_getTabulatorNm(){
var activeTab = $('#tbTabl .tab.active');
// data-tabul 값 가져오기
var tabulValue = activeTab.data('tabul');
return tabulValue;
}
function fn_utils_isEmpty(obj){
return obj == null || obj == "";
}