--- src/main/java/itn/let/mjo/addr/service/AddrVO.java
+++ src/main/java/itn/let/mjo/addr/service/AddrVO.java
... | ... | @@ -416,35 +416,95 @@ |
| 416 | 416 |
private int page = 1; // 기본 값 설정 |
| 417 | 417 |
private int size = 10; // 기본 값 설정 |
| 418 | 418 |
private int offset; // 기본 값 설정 |
| 419 |
+ private String name; |
|
| 420 |
+ private String phone; |
|
| 421 |
+ private String rep1; |
|
| 422 |
+ private String rep2; |
|
| 423 |
+ private String rep3; |
|
| 424 |
+ private String rep4; |
|
| 425 |
+ |
|
| 426 |
+ |
|
| 419 | 427 |
|
| 420 | 428 |
|
| 421 | 429 |
public int getPage() {
|
| 422 | 430 |
return page; |
| 423 | 431 |
} |
| 424 | 432 |
|
| 425 |
- public void setPage(int page) {
|
|
| 426 |
- if(page > 0) {
|
|
| 427 |
- this.page = page; |
|
| 428 |
- } |
|
| 429 |
- } |
|
| 430 |
- |
|
| 431 | 433 |
public int getSize() {
|
| 432 | 434 |
return size; |
| 433 | 435 |
} |
| 434 |
- |
|
| 435 |
- public void setSize(int size) {
|
|
| 436 |
- if(size > 0) {
|
|
| 437 |
- this.size = size; |
|
| 438 |
- } |
|
| 439 |
- } |
|
| 440 |
- |
|
| 441 |
- // OFFSET 계산 메서드 추가 |
|
| 442 |
- public int getOffset() {
|
|
| 443 |
- return (page - 1) * size; |
|
| 444 |
- } |
|
| 436 |
+ public int getOffset() {
|
|
| 437 |
+ return offset; |
|
| 438 |
+ } |
|
| 445 | 439 |
public void setOffset(int offset) {
|
| 446 | 440 |
this.offset = offset; |
| 447 | 441 |
} |
| 442 |
+ public void setSize(int size) {
|
|
| 443 |
+ this.size = size; |
|
| 444 |
+ } |
|
| 445 |
+ public void setPage(int page) {
|
|
| 446 |
+ this.page = page; |
|
| 447 |
+ } |
|
| 448 |
+ public String getName() {
|
|
| 449 |
+ return name; |
|
| 450 |
+ } |
|
| 451 |
+ public void setName(String name) {
|
|
| 452 |
+ this.name = name; |
|
| 453 |
+ } |
|
| 454 |
+ public String getPhone() {
|
|
| 455 |
+ return phone; |
|
| 456 |
+ } |
|
| 457 |
+ public void setPhone(String phone) {
|
|
| 458 |
+ this.phone = phone; |
|
| 459 |
+ } |
|
| 460 |
+ public String getRep1() {
|
|
| 461 |
+ return rep1; |
|
| 462 |
+ } |
|
| 463 |
+ public void setRep1(String rep1) {
|
|
| 464 |
+ this.rep1 = rep1; |
|
| 465 |
+ } |
|
| 466 |
+ public String getRep2() {
|
|
| 467 |
+ return rep2; |
|
| 468 |
+ } |
|
| 469 |
+ public void setRep2(String rep2) {
|
|
| 470 |
+ this.rep2 = rep2; |
|
| 471 |
+ } |
|
| 472 |
+ public String getRep3() {
|
|
| 473 |
+ return rep3; |
|
| 474 |
+ } |
|
| 475 |
+ public void setRep3(String rep3) {
|
|
| 476 |
+ this.rep3 = rep3; |
|
| 477 |
+ } |
|
| 478 |
+ public String getRep4() {
|
|
| 479 |
+ return rep4; |
|
| 480 |
+ } |
|
| 481 |
+ public void setRep4(String rep4) {
|
|
| 482 |
+ this.rep4 = rep4; |
|
| 483 |
+ } |
|
| 484 |
+ |
|
| 485 |
+ |
|
| 486 |
+ |
|
| 487 |
+ |
|
| 488 |
+// public void setPage(int page) {
|
|
| 489 |
+// if(page > 0) {
|
|
| 490 |
+// this.page = page; |
|
| 491 |
+// } |
|
| 492 |
+// } |
|
| 493 |
+ |
|
| 494 |
+// |
|
| 495 |
+// public void setSize(int size) {
|
|
| 496 |
+// if(size > 0) {
|
|
| 497 |
+// this.size = size; |
|
| 498 |
+// } |
|
| 499 |
+// } |
|
| 500 |
+// |
|
| 501 |
+// // OFFSET 계산 메서드 추가 |
|
| 502 |
+// public int getOffset() {
|
|
| 503 |
+// return (page - 1) * size; |
|
| 504 |
+// } |
|
| 505 |
+// public void setOffset(int offset) {
|
|
| 506 |
+// this.offset = offset; |
|
| 507 |
+// } |
|
| 448 | 508 |
|
| 449 | 509 |
|
| 450 | 510 |
} |
--- src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
... | ... | @@ -64,7 +64,7 @@ |
| 64 | 64 |
private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
| 65 | 65 |
// private static final int MAX_ADDR_CNT = 500000; |
| 66 | 66 |
//임시 500만개 |
| 67 |
- private static final int MAX_SINGLE_ENTRY_CNT = 1000000; |
|
| 67 |
+ private static final int MAX_SINGLE_ENTRY_CNT = 350000; |
|
| 68 | 68 |
private static final int MAX_ADDR_CNT = 10000000; |
| 69 | 69 |
private static final int BATCH_SIZE = 5000; |
| 70 | 70 |
private static final int THREAD_COUNT = 3; |
... | ... | @@ -493,7 +493,7 @@ |
| 493 | 493 |
// 등록 |
| 494 | 494 |
// Batch insert |
| 495 | 495 |
batchInsertAddrListAsync(addrListVO); |
| 496 |
- // addrDAO.insertAddrList(addrListVO); |
|
| 496 |
+// addrDAO.insertAddrList(addrListVO); |
|
| 497 | 497 |
|
| 498 | 498 |
} |
| 499 | 499 |
|
... | ... | @@ -524,8 +524,8 @@ |
| 524 | 524 |
return new StatusResponse( |
| 525 | 525 |
HttpStatus.OK |
| 526 | 526 |
, message |
| 527 |
-// , "" |
|
| 528 |
- , LocalDateTime.now()); |
|
| 527 |
+ , addrListVO.get(0).getAddrGrpId() |
|
| 528 |
+ ); |
|
| 529 | 529 |
} |
| 530 | 530 |
|
| 531 | 531 |
|
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
... | ... | @@ -7,6 +7,7 @@ |
| 7 | 7 |
import java.math.RoundingMode; |
| 8 | 8 |
import java.net.URLDecoder; |
| 9 | 9 |
import java.text.SimpleDateFormat; |
| 10 |
+import java.time.LocalDateTime; |
|
| 10 | 11 |
import java.util.ArrayList; |
| 11 | 12 |
import java.util.Arrays; |
| 12 | 13 |
import java.util.Calendar; |
... | ... | @@ -74,6 +75,7 @@ |
| 74 | 75 |
import itn.let.lett.service.HashConfVO; |
| 75 | 76 |
import itn.let.lett.service.LetterService; |
| 76 | 77 |
import itn.let.lett.service.LetterVO; |
| 78 |
+import itn.let.mail.service.StatusResponse; |
|
| 77 | 79 |
import itn.let.mjo.addr.service.AddrGroupService; |
| 78 | 80 |
import itn.let.mjo.addr.service.AddrGroupVO; |
| 79 | 81 |
import itn.let.mjo.addr.service.AddrService; |
... | ... | @@ -1787,7 +1789,7 @@ |
| 1787 | 1789 |
* @throws Exception |
| 1788 | 1790 |
*/ |
| 1789 | 1791 |
@RequestMapping(value= {"/web/mjon/msgdata/selectMsgAddrListAjax_advc.do"})
|
| 1790 |
- public ResponseEntity<?> selectMsgAddrListAjax_advc(@ModelAttribute("searchVO") AddrVO addrVO) {
|
|
| 1792 |
+ public ResponseEntity<StatusResponse> selectMsgAddrListAjax_advc(@ModelAttribute("searchVO") AddrVO addrVO) {
|
|
| 1791 | 1793 |
|
| 1792 | 1794 |
Map<String, Object> response = new HashMap<>(); |
| 1793 | 1795 |
|
... | ... | @@ -1796,11 +1798,7 @@ |
| 1796 | 1798 |
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; |
| 1797 | 1799 |
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
| 1798 | 1800 |
|
| 1799 |
- if (userId.isEmpty()) {
|
|
| 1800 |
- response.put("result", "loginFail");
|
|
| 1801 |
- response.put("message", "로그인 후 이용이 가능합니다.");
|
|
| 1802 |
- return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(response); |
|
| 1803 |
- } |
|
| 1801 |
+ if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
|
| 1804 | 1802 |
|
| 1805 | 1803 |
addrVO.setMberId(userId); |
| 1806 | 1804 |
|
... | ... | @@ -1809,21 +1807,21 @@ |
| 1809 | 1807 |
addrVO.setOffset(offset); |
| 1810 | 1808 |
// 데이터 조회 |
| 1811 | 1809 |
List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO); |
| 1812 |
- int totalCount = mjonMsgDataService.countByMsgAddrListAjax_advc(addrVO); // 필터에 맞는 총 레코드 수 가져오기 |
|
| 1810 |
+// int totalCount = mjonMsgDataService.countByMsgAddrListAjax_advc(addrVO); // 필터에 맞는 총 레코드 수 가져오기 |
|
| 1813 | 1811 |
|
| 1814 | 1812 |
// 페이지네이션 계산 |
| 1815 |
- int lastPage = (int) Math.ceil((double) totalCount / addrVO.getSize()); |
|
| 1813 |
+// int lastPage = (int) Math.ceil((double) totalCount / addrVO.getSize()); |
|
| 1816 | 1814 |
|
| 1817 | 1815 |
// 응답 데이터 구성 |
| 1818 |
- response.put("data", resultAddrList);
|
|
| 1819 |
- response.put("last_page", lastPage); // 클라이언트가 사용할 수 있도록 last_page 포함
|
|
| 1820 |
- response.put("total_count", totalCount); // 필요 시, 총 레코드 수 포함
|
|
| 1816 |
+// response.put("data", resultAddrList);
|
|
| 1817 |
+// response.put("last_page", lastPage); // 클라이언트가 사용할 수 있도록 last_page 포함
|
|
| 1818 |
+// response.put("total_count", totalCount); // 필요 시, 총 레코드 수 포함
|
|
| 1821 | 1819 |
|
| 1820 |
+ return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "",resultAddrList)); |
|
| 1822 | 1821 |
} catch (Exception e) {
|
| 1823 | 1822 |
e.printStackTrace(); |
| 1824 |
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); |
|
| 1823 |
+ return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "조회 요청 중 오류가 발생하였습니다.", LocalDateTime.now())); |
|
| 1825 | 1824 |
} |
| 1826 |
- return ResponseEntity.ok(response); // resultAddrList만 반환 |
|
| 1827 | 1825 |
} |
| 1828 | 1826 |
|
| 1829 | 1827 |
/** |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
... | ... | @@ -3715,12 +3715,12 @@ |
| 3715 | 3715 |
SELECT A.ADDR_ID AS addrId, |
| 3716 | 3716 |
A.ADDR_GRP_ID AS addrGrpId, |
| 3717 | 3717 |
A.MBER_ID AS mberId, |
| 3718 |
- A.ADDR_NM AS addrName, |
|
| 3719 |
- A.ADDR_PHONE_NO AS addrPhone, |
|
| 3720 |
- A.ADDR_INFO1 AS addrRep1, |
|
| 3721 |
- A.ADDR_INFO2 AS addrRep2, |
|
| 3722 |
- A.ADDR_INFO3 AS addrRep3, |
|
| 3723 |
- A.ADDR_INFO4 AS addrRep4, |
|
| 3718 |
+ A.ADDR_NM AS name, |
|
| 3719 |
+ A.ADDR_PHONE_NO AS phone, |
|
| 3720 |
+ A.ADDR_INFO1 AS rep1, |
|
| 3721 |
+ A.ADDR_INFO2 AS rep2, |
|
| 3722 |
+ A.ADDR_INFO3 AS rep3, |
|
| 3723 |
+ A.ADDR_INFO4 AS rep4, |
|
| 3724 | 3724 |
A.DELETE_YN AS deleteYn, |
| 3725 | 3725 |
A.BOOKMARK AS bookmark, |
| 3726 | 3726 |
IFNULL(B.ADDR_GRP_NM,'그룹미지정') AS addrGroupNm |
... | ... | @@ -3764,7 +3764,6 @@ |
| 3764 | 3764 |
</isEqual> |
| 3765 | 3765 |
</isNotEmpty> |
| 3766 | 3766 |
ORDER BY A.ADDR_NM ASC, A.LAST_UPDT_PNTTM DESC |
| 3767 |
- LIMIT #size# OFFSET #offset# |
|
| 3768 | 3767 |
|
| 3769 | 3768 |
</select> |
| 3770 | 3769 |
|
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
... | ... | @@ -328,22 +328,28 @@ |
| 328 | 328 |
//로딩창 show |
| 329 | 329 |
fn_loadAddActive(); |
| 330 | 330 |
|
| 331 |
+ console.time('updateData');
|
|
| 331 | 332 |
setTimeout(setSenderList_advc, 1000); |
| 333 |
+// setTimeout(setSenderList_old, 1000); |
|
| 332 | 334 |
|
| 335 |
+ console.timeEnd('updateData');
|
|
| 333 | 336 |
// fn_loadAddActive(); |
| 334 | 337 |
// setSenderList_advc(); |
| 335 | 338 |
} |
| 336 | 339 |
} |
| 337 | 340 |
|
| 338 | 341 |
// 주소록 등록 advc |
| 339 |
-/* function setSenderList_advc(){
|
|
| 342 |
+function setSenderList_old(){
|
|
| 340 | 343 |
|
| 341 | 344 |
// tab에 해당하는 타블레이터 가져오기 |
| 342 |
- var $objTabul = fn_utils_getTabulator(); |
|
| 343 |
- var dataToSend = $objTabul.getData(); |
|
| 344 |
- |
|
| 345 |
- var addrGrpIdInfo = $("#addrGrpIdInfo").val();
|
|
| 346 |
- var addrGrpNmInfo = $("#addrGrpNm").val();
|
|
| 345 |
+ |
|
| 346 |
+ var tabulNm = fn_utils_getTabulatorNm(); |
|
| 347 |
+ var tabluC = '.'+tabulNm |
|
| 348 |
+ |
|
| 349 |
+ var $objTabul = fn_utils_getTabulator(); |
|
| 350 |
+ var dataToSend = $objTabul.getData(); |
|
| 351 |
+ var addrGrpIdInfo = $(tabluC+" #addrGrpIdInfo option:selected").val(); |
|
| 352 |
+ var addrGrpNmInfo = $(tabluC+" #addrGrpNm").val(); |
|
| 347 | 353 |
|
| 348 | 354 |
var updateData = dataToSend.map(row => {
|
| 349 | 355 |
row.addrGrpId = addrGrpIdInfo; |
... | ... | @@ -367,7 +373,7 @@ |
| 367 | 373 |
alert(data.message); |
| 368 | 374 |
// 데이터 비우기 |
| 369 | 375 |
SetClear($objTabul); |
| 370 |
- |
|
| 376 |
+ setAddrMassClose(); |
|
| 371 | 377 |
var selectMassVal = $("#addrGrpIdInfo option:selected").val();
|
| 372 | 378 |
} |
| 373 | 379 |
else {
|
... | ... | @@ -388,16 +394,19 @@ |
| 388 | 394 |
} |
| 389 | 395 |
}); |
| 390 | 396 |
} |
| 391 |
- |
|
| 392 |
- */ |
|
| 397 |
+ |
|
| 393 | 398 |
|
| 394 | 399 |
function setSenderList_advc(){
|
| 400 |
+ |
|
| 401 |
+ var tabulNm = fn_utils_getTabulatorNm(); |
|
| 402 |
+ var tabluC = '.'+tabulNm |
|
| 403 |
+ |
|
| 395 | 404 |
var $objTabul = fn_utils_getTabulator(); |
| 396 | 405 |
var dataToSend = $objTabul.getData(); |
| 397 |
- var addrGrpIdInfo = $("#addrGrpIdInfo").val();
|
|
| 398 |
- var addrGrpNmInfo = $("#addrGrpNm").val();
|
|
| 406 |
+ var addrGrpIdInfo = $(tabluC+" #addrGrpIdInfo option:selected").val(); |
|
| 407 |
+ var addrGrpNmInfo = $(tabluC+" #addrGrpNm").val(); |
|
| 399 | 408 |
|
| 400 |
- var batchSize = 50000; // 배치 크기 |
|
| 409 |
+ var batchSize = 15000; // 배치 크기 |
|
| 401 | 410 |
var totalBatches = Math.ceil(dataToSend.length / batchSize); // 총 배치 수 |
| 402 | 411 |
var currentBatch = 0; // 현재 배치 인덱스 |
| 403 | 412 |
|
... | ... | @@ -411,13 +420,11 @@ |
| 411 | 420 |
var end = Math.min(start + batchSize, dataToSend.length); |
| 412 | 421 |
var batchData = dataToSend.slice(start, end); |
| 413 | 422 |
|
| 414 |
- console.time('updateData');
|
|
| 415 | 423 |
var updateData = batchData.map(row => {
|
| 416 | 424 |
row.addrGrpId = addrGrpIdInfo; |
| 417 | 425 |
row.addrGrpNm = addrGrpNmInfo; |
| 418 | 426 |
return row; |
| 419 | 427 |
}); |
| 420 |
- console.timeEnd('updateData');
|
|
| 421 | 428 |
|
| 422 | 429 |
$.ajax({
|
| 423 | 430 |
type: "POST", |
... | ... | @@ -437,8 +444,12 @@ |
| 437 | 444 |
alert("모든 데이터가 성공적으로 저장되었습니다.");
|
| 438 | 445 |
// 데이터 비우기 |
| 439 | 446 |
SetClear($objTabul); |
| 447 |
+ setAddrMassClose(); |
|
| 440 | 448 |
} else {
|
| 441 | 449 |
currentBatch++; |
| 450 |
+ // 새로만든 그룹ID나 기존 ID를 넣어줌 |
|
| 451 |
+ // 그룹추가 시 배치별로 똑같은 그룹을 생성해서 방지차원으로 넣어줌 |
|
| 452 |
+ addrGrpIdInfo = data.object; |
|
| 442 | 453 |
sendBatch(); // 다음 배치 전송 |
| 443 | 454 |
} |
| 444 | 455 |
} else {
|
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
... | ... | @@ -40,20 +40,20 @@ |
| 40 | 40 |
}}, |
| 41 | 41 |
// {formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", field:"No", width:30},
|
| 42 | 42 |
{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40},
|
| 43 |
- {title:"이름", field:"name", validator:["maxLength:12"], cellEdited:function(cell){
|
|
| 43 |
+ {title:"이름", field:"name", editor:false, validator:["maxLength:12"], cellEdited:function(cell){
|
|
| 44 | 44 |
fnReplCell(); |
| 45 | 45 |
}}, |
| 46 |
- {title:"휴대폰", field:"phone", width:100, validator:["required","minLength:10", "maxLength:12"]},
|
|
| 47 |
- {title:"[*1*]", field:"rep1", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 46 |
+ {title:"휴대폰", field:"phone", width:100, editor:false, validator:["required","minLength:10", "maxLength:12"]},
|
|
| 47 |
+ {title:"[*1*]", field:"rep1", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 48 | 48 |
fnReplCell(); |
| 49 | 49 |
}}, |
| 50 |
- {title:"[*2*]", field:"rep2", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 50 |
+ {title:"[*2*]", field:"rep2", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 51 | 51 |
fnReplCell(); |
| 52 | 52 |
}}, |
| 53 |
- {title:"[*3*]", field:"rep3", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 53 |
+ {title:"[*3*]", field:"rep3", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 54 | 54 |
fnReplCell(); |
| 55 | 55 |
}}, |
| 56 |
- {title:"[*4*]", field:"rep4", minWidth:60, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 56 |
+ {title:"[*4*]", field:"rep4", minWidth:60, editor:false, validator:["maxLength:40"], cellEdited:function(cell){
|
|
| 57 | 57 |
fnReplCell(); |
| 58 | 58 |
}}, |
| 59 | 59 |
|
... | ... | @@ -96,31 +96,20 @@ |
| 96 | 96 |
placeholder: "주소록 그룹을 선택해 주세요.", |
| 97 | 97 |
resizableColumns: false, |
| 98 | 98 |
progressiveLoad:"scroll", |
| 99 |
-// progressiveLoadScrollMargin:300, //trigger next ajax load when scroll bar is 300px or less from the bottom of the table. |
|
| 100 |
- ajaxURL: "/web/mjon/msgdata/selectMsgAddrListAjax_advc.do", // 데이터 URL 설정 |
|
| 101 |
- ajaxConfig: {
|
|
| 102 |
- method: "GET", |
|
| 103 |
- }, |
|
| 104 |
- ajaxParams: { // Initial AJAX parameters
|
|
| 105 |
- size: 350000, // Set initial page size |
|
| 106 |
- type: "", // Default value, can be updated later |
|
| 107 |
- searchAddrGrpId: "", // Default value, can be updated later |
|
| 108 |
- searchKeyword: "", // Default value, can be updated later |
|
| 109 |
- searchCondition: "" // Default value, can be updated later |
|
| 110 |
- }, |
|
| 111 | 99 |
columns: [ |
| 112 |
- {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
|
| 113 |
- cell.getRow().toggleSelect(); |
|
| 114 |
- } |
|
| 115 |
- }, |
|
| 100 |
+ {formatter: "rowSelection", clipboard: false, hozAlign: "center", headerSort: false},
|
|
| 101 |
+// {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerSort: false, cellClick: function(e, cell) {
|
|
| 102 |
+// cell.getRow().toggleSelect(); |
|
| 103 |
+// } |
|
| 104 |
+// }, |
|
| 116 | 105 |
{formatter: "rownum", align: "center", title: "No", hozAlign: "center", headerHozAlign: "center", width: 60},
|
| 117 |
- {title: "그룹명", hozAlign: "center", field: "addrGroupNm", editor: "input", width: 100, validator: ["required", "minLength:2", "maxLength:40"]},
|
|
| 118 |
- {title: "이름", hozAlign: "center", field: "addrName", editor: "input", width: 100, validator: ["maxLength:12"]},
|
|
| 119 |
- {title: "휴대폰번호", hozAlign: "center", field: "addrPhone", editor: "input", width: 100, validator: ["required", "minLength:10", "maxLength:11"]},
|
|
| 120 |
- {title: "[*1*]", hozAlign: "center", field: "addrRep1", editor: "input", width: 84, validator: ["maxLength:40"]},
|
|
| 121 |
- {title: "[*2*]", hozAlign: "center", field: "addrRep2", editor: "input", width: 84, validator: ["maxLength:40"]},
|
|
| 122 |
- {title: "[*3*]", hozAlign: "center", field: "addrRep3", editor: "input", width: 84, validator: ["maxLength:40"]},
|
|
| 123 |
- {title: "[*4*]", hozAlign: "center", field: "addrRep4", editor: "input", width: 84, validator: ["maxLength:40"]},
|
|
| 106 |
+ {title: "그룹명", hozAlign: "center", field: "addrGroupNm", editor: false, width: 100, validator: ["required", "minLength:2", "maxLength:40"]},
|
|
| 107 |
+ {title: "이름", hozAlign: "center", field: "name", editor: false, width: 100, validator: ["maxLength:12"]},
|
|
| 108 |
+ {title: "휴대폰번호", hozAlign: "center", field: "phone", editor: false, width: 100, validator: ["required", "minLength:10", "maxLength:11"]},
|
|
| 109 |
+ {title: "[*1*]", hozAlign: "center", field: "rep1", editor: false, width: 84, validator: ["maxLength:40"]},
|
|
| 110 |
+ {title: "[*2*]", hozAlign: "center", field: "rep2", editor: false, width: 84, validator: ["maxLength:40"]},
|
|
| 111 |
+ {title: "[*3*]", hozAlign: "center", field: "rep3", editor: false, width: 84, validator: ["maxLength:40"]},
|
|
| 112 |
+ {title: "[*4*]", hozAlign: "center", field: "rep4", editor: false, width: 84, validator: ["maxLength:40"]},
|
|
| 124 | 113 |
], |
| 125 | 114 |
validationFailed: function(cell, value, parameters) {
|
| 126 | 115 |
var valid = cell.isValid(); |
... | ... | @@ -137,6 +126,7 @@ |
| 137 | 126 |
} |
| 138 | 127 |
cell.setValue("");
|
| 139 | 128 |
} |
| 129 |
+ console.log('parameters : ', parameters);
|
|
| 140 | 130 |
return value % parameters.addrPhone; |
| 141 | 131 |
}, |
| 142 | 132 |
}); |
... | ... | @@ -198,8 +188,8 @@ |
| 198 | 188 |
|
| 199 | 189 |
|
| 200 | 190 |
var dataLength = tableL.getData().length; |
| 201 |
- console.log('dataLength ', dataLength);
|
|
| 202 |
- console.log('currentIndex ', currentIndex);
|
|
| 191 |
+// console.log('dataLength ', dataLength);
|
|
| 192 |
+// console.log('currentIndex ', currentIndex);
|
|
| 203 | 193 |
|
| 204 | 194 |
|
| 205 | 195 |
if (currentIndex <= 0) {
|
... | ... | @@ -263,86 +253,7 @@ |
| 263 | 253 |
|
| 264 | 254 |
} |
| 265 | 255 |
|
| 266 |
-//주소록 불러오기에서 수신자 리스트 tabulator에 데이터 추가해주기 |
|
| 267 |
-function addPhoneInfo_advc(tableAddr){
|
|
| 268 |
- |
|
| 269 |
- // 기존 tableL의 데이터를 가져옵니다. |
|
| 270 |
- var existingData = tableL.getData(); |
|
| 271 |
- |
|
| 272 |
- // 새로운 addrData를 만듭니다. |
|
| 273 |
- var addrData = tableAddr.getSelectedData().map((row, index) => ({
|
|
| 274 |
- name: row.addrName, |
|
| 275 |
- phone: removeDash(row.addrPhone), |
|
| 276 |
- rep1: row.addrRep1, |
|
| 277 |
- rep2: row.addrRep2, |
|
| 278 |
- rep3: row.addrRep3, |
|
| 279 |
- rep4: row.addrRep4, |
|
| 280 |
- })); |
|
| 281 |
- |
|
| 282 |
- // 기존 데이터와 새로운 데이터를 합칩니다. |
|
| 283 |
- var combinedData = existingData.concat(addrData); |
|
| 284 |
- |
|
| 285 |
- // 합쳐진 데이터를 tableL에 설정합니다. |
|
| 286 |
- tableL.setData(combinedData); |
|
| 287 |
- |
|
| 288 |
- /* |
|
| 289 |
- var idx = 0; |
|
| 290 |
- var newData = data;//중복 연락처는 하나만 남기고 모두 제거 |
|
| 291 |
- |
|
| 292 |
- var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 |
|
| 293 |
- var tableData = []; |
|
| 294 |
- |
|
| 295 |
- //기존 받는사람 리스트를 배열에 미리 담아둔다. |
|
| 296 |
- if(recTableData.length > 0){
|
|
| 297 |
- |
|
| 298 |
- for(var j=0; j < recTableData.length; j++){
|
|
| 299 |
- |
|
| 300 |
- tableData.push({phone: removeDash(recTableData[j].getData().phone) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4});
|
|
| 301 |
- |
|
| 302 |
- } |
|
| 303 |
- |
|
| 304 |
- } |
|
| 305 |
- |
|
| 306 |
- //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. |
|
| 307 |
- for(var i=0; i < newData.length; i++){
|
|
| 308 |
- |
|
| 309 |
- tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4});
|
|
| 310 |
- |
|
| 311 |
- } |
|
| 312 |
- |
|
| 313 |
-// var temp = tableData.length; |
|
| 314 |
- |
|
| 315 |
- //기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다. |
|
| 316 |
- tableL.clearData(); //기존 받는사람 목록을 삭제. |
|
| 317 |
- //tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 |
|
| 318 |
- tableL.addData(getSpupDupliPhoneDataChk(tableData)); // 받는사람 목록에 주소 정보 입력하기 |
|
| 319 |
- |
|
| 320 |
- _fileForm2 = []; //form file data 초기화 |
|
| 321 |
- _fileIdx = 0; //form file idx 초기화 |
|
| 322 |
- |
|
| 323 |
- |
|
| 324 |
- //일괄변환 문구 결제금액 처리 |
|
| 325 |
- */ |
|
| 326 |
- totRows = tableL.getRows().length; |
|
| 327 |
- updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 328 |
- var smsTxtArea = $('#smsTxtArea').val();
|
|
| 329 |
- if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
| 330 |
- || smsTxtArea.indexOf("[*1*]") > -1
|
|
| 331 |
- || smsTxtArea.indexOf("[*2*]") > -1
|
|
| 332 |
- || smsTxtArea.indexOf("[*3*]") > -1
|
|
| 333 |
- || smsTxtArea.indexOf("[*4*]") > -1){
|
|
| 334 |
- |
|
| 335 |
- fnReplCell(); |
|
| 336 |
- |
|
| 337 |
- }else{
|
|
| 338 |
- |
|
| 339 |
- //결제 금액 구하기 |
|
| 340 |
- totalPriceSum(totRows); |
|
| 341 |
- |
|
| 342 |
- } |
|
| 343 |
- |
|
| 344 |
- |
|
| 345 |
-} |
|
| 256 |
+ |
|
| 346 | 257 |
function addPhoneInfo(data){
|
| 347 | 258 |
|
| 348 | 259 |
if(data == null){
|
... | ... | @@ -2860,35 +2771,41 @@ |
| 2860 | 2771 |
|
| 2861 | 2772 |
|
| 2862 | 2773 |
//주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기 |
| 2863 |
-function fnSelectAddrList(type, addrGrpId, item) {
|
|
| 2864 |
- // 폴더 이미지 초기화 및 설정 |
|
| 2774 |
+function fnSelectAddrList(type,addrGrpId,item){
|
|
| 2775 |
+ |
|
| 2776 |
+ // 주소록 그룹 열림, 닫힘 폴더이미지 초기화 |
|
| 2865 | 2777 |
$(".adr_pop_list div p").each(function (index, item) {
|
| 2866 | 2778 |
$(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
|
| 2867 | 2779 |
$(item).find("img").attr("alt", "폴더 닫힘");
|
| 2868 | 2780 |
}); |
| 2869 |
- |
|
| 2870 |
-// var form = document.searchAddrGrpForm; |
|
| 2871 |
-// form.type.value = type; |
|
| 2872 |
-// form.searchAddrGrpId.value = addrGrpId; |
|
| 2873 |
-// form.searchKeyword.value = ""; |
|
| 2874 |
-// form.searchCondition.value = form.searchAddrCondition.value; |
|
| 2875 |
- |
|
| 2876 |
- // 왼쪽 그룹리스트의 그룹명을 선택 시 검색어를 초기화해준다. |
|
| 2877 |
-// form.searchAddrKeyword.value = ""; |
|
| 2878 |
- |
|
| 2781 |
+ |
|
| 2782 |
+ var form = document.searchAddrGrpForm; |
|
| 2783 |
+ form.type.value = type; |
|
| 2784 |
+ form.searchAddrGrpId.value = addrGrpId; |
|
| 2785 |
+ form.searchKeyword.value = ""; |
|
| 2786 |
+ form.searchCondition.value = form.searchAddrCondition.value; |
|
| 2787 |
+ |
|
| 2788 |
+ //왼쪽 그룹리스트의 그룸명을 선택시 검색어를 초기화해준다. |
|
| 2789 |
+ form.searchAddrKeyword.value=""; |
|
| 2790 |
+ |
|
| 2791 |
+ /* |
|
| 2792 |
+ $(item).toggleClass("open");
|
|
| 2793 |
+ if ($(item).hasClass("open") === true) {
|
|
| 2794 |
+ $(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
|
|
| 2795 |
+ $(item).find("img").attr("alt", "폴더 열림");
|
|
| 2796 |
+ } |
|
| 2797 |
+ else {
|
|
| 2798 |
+ $(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
|
|
| 2799 |
+ $(item).find("img").attr("alt", "폴더 닫힘");
|
|
| 2800 |
+ } |
|
| 2801 |
+ */ |
|
| 2802 |
+ |
|
| 2879 | 2803 |
$(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
|
| 2880 | 2804 |
$(item).find("img").attr("alt", "폴더 열림");
|
| 2881 |
- |
|
| 2882 |
- // Tabulator의 ajaxParams 설정 |
|
| 2883 |
- tableAddr.setData("/web/mjon/msgdata/selectMsgAddrListAjax_advc.do", {
|
|
| 2884 |
- searchAddrGrpId: addrGrpId, |
|
| 2885 |
- type: type, |
|
| 2886 |
-// searchKeyword: form.searchAddrKeyword.value, |
|
| 2887 |
-// searchCondition: form.searchCondition.value, |
|
| 2888 |
- size: 350000, // 페이지당 로드할 데이터 수 |
|
| 2889 |
- }); |
|
| 2805 |
+ |
|
| 2806 |
+ loadAddrList(); |
|
| 2807 |
+ |
|
| 2890 | 2808 |
} |
| 2891 |
- |
|
| 2892 | 2809 |
|
| 2893 | 2810 |
|
| 2894 | 2811 |
function fnAddrSearch(){
|
... | ... | @@ -2917,13 +2834,11 @@ |
| 2917 | 2834 |
dataType:'json', |
| 2918 | 2835 |
async: true, |
| 2919 | 2836 |
cache: false, |
| 2920 |
- success: function (returnData, status) {
|
|
| 2921 |
- console.log('returnData : ', returnData);
|
|
| 2922 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 2837 |
+ success: function (data) {
|
|
| 2838 |
+ console.log('data : ', data);
|
|
| 2839 |
+ if(data.status == "OK"){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 2923 | 2840 |
|
| 2924 |
- if(returnData.result == "success"){
|
|
| 2925 |
- |
|
| 2926 |
- var addrList = returnData.resultAddrList; |
|
| 2841 |
+ var addrList = data.object; |
|
| 2927 | 2842 |
|
| 2928 | 2843 |
if(addrList.length == 0){
|
| 2929 | 2844 |
|
... | ... | @@ -2959,17 +2874,11 @@ |
| 2959 | 2874 |
|
| 2960 | 2875 |
//우측 주소록 리스트 Tabulator에 입력해주기 |
| 2961 | 2876 |
// tableAddr.setData(tableData); |
| 2962 |
-// tableAddr.setData(addrList); |
|
| 2963 |
- tableAddr.updateOrAddData(addrList); // 무한 스크롤을 위해 데이터를 업데이트 |
|
| 2964 |
- |
|
| 2965 |
- }else{
|
|
| 2966 |
- |
|
| 2967 |
- alert(returnData.message); |
|
| 2968 |
- return false; |
|
| 2969 |
- |
|
| 2970 |
- } |
|
| 2971 |
- |
|
| 2972 |
- } else if(status== 'fail'){
|
|
| 2877 |
+ tableAddr.setData(addrList); |
|
| 2878 |
+// tableAddr.updateOrAddData(addrList); // 무한 스크롤을 위해 데이터를 업데이트 |
|
| 2879 |
+ } |
|
| 2880 |
+ else |
|
| 2881 |
+ {
|
|
| 2973 | 2882 |
alert("주소록 불러오기에 실패하였습니다. !!");
|
| 2974 | 2883 |
} |
| 2975 | 2884 |
}, |
... | ... | @@ -3028,8 +2937,7 @@ |
| 3028 | 2937 |
} |
| 3029 | 2938 |
|
| 3030 | 2939 |
//주소록 불러오기에서 수신자 리스트 추가해 주기 |
| 3031 |
-function addrToList_advc(){
|
|
| 3032 |
- console.log('tableAddr :: ', tableAddr);
|
|
| 2940 |
+function addrToList_advc(type){
|
|
| 3033 | 2941 |
// var selectedData = tableAddr.getSelectedRows(); |
| 3034 | 2942 |
var tableSize = tableAddr.getDataCount(); |
| 3035 | 2943 |
var tableData = []; |
... | ... | @@ -3041,16 +2949,46 @@ |
| 3041 | 2949 |
|
| 3042 | 2950 |
}else{ // 선택한 Row 데이터 저장해주기
|
| 3043 | 2951 |
|
| 3044 |
- //선택한 데이터 받는사람 리스트에 추가해 주기 |
|
| 3045 |
- addPhoneInfo_advc(tableAddr); |
|
| 3046 |
- $(".closeAddr").trigger("click");
|
|
| 2952 |
+ // 기존 tableL의 데이터를 가져옵니다. |
|
| 2953 |
+ var existingData = tableL.getData(); |
|
| 2954 |
+ var addrData; |
|
| 2955 |
+ |
|
| 2956 |
+ if(type == 'all'){
|
|
| 2957 |
+ addrData = tableAddr.getData(); |
|
| 2958 |
+ }else{
|
|
| 2959 |
+ addrData = tableAddr.getSelectedData(); |
|
| 2960 |
+ } |
|
| 3047 | 2961 |
|
| 2962 |
+ // 기존 데이터와 새로운 데이터를 합칩니다. |
|
| 2963 |
+ var combinedData = existingData.concat(addrData); |
|
| 2964 |
+ |
|
| 2965 |
+ // 합쳐진 데이터를 tableL에 설정합니다. |
|
| 2966 |
+ tableL.setData(combinedData); |
|
| 2967 |
+ |
|
| 2968 |
+ //일괄변환 문구 결제금액 처리 |
|
| 2969 |
+ totRows = tableL.getRows().length; |
|
| 2970 |
+ updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 2971 |
+ var smsTxtArea = $('#smsTxtArea').val();
|
|
| 2972 |
+ if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
| 2973 |
+ || smsTxtArea.indexOf("[*1*]") > -1
|
|
| 2974 |
+ || smsTxtArea.indexOf("[*2*]") > -1
|
|
| 2975 |
+ || smsTxtArea.indexOf("[*3*]") > -1
|
|
| 2976 |
+ || smsTxtArea.indexOf("[*4*]") > -1){
|
|
| 2977 |
+ |
|
| 2978 |
+ fnReplCell(); |
|
| 2979 |
+ }else{
|
|
| 2980 |
+ //결제 금액 구하기 |
|
| 2981 |
+ totalPriceSum(totRows); |
|
| 2982 |
+ } |
|
| 2983 |
+ |
|
| 2984 |
+ $(".closeAddr").trigger("click");
|
|
| 3048 | 2985 |
//주소록 레이어 팝업의 Tabulator 데이터 지워주기 |
| 3049 | 2986 |
tableAddr.clearData(); |
| 3050 | 2987 |
|
| 3051 | 2988 |
} |
| 3052 | 2989 |
|
| 3053 | 2990 |
} |
| 2991 |
+ |
|
| 3054 | 2992 |
|
| 3055 | 2993 |
//주소록 팝업 닫기 기능 |
| 3056 | 2994 |
function addrClose(){
|
... | ... | @@ -3747,7 +3685,8 @@ |
| 3747 | 3685 |
</div> |
| 3748 | 3686 |
<div class="popup_btn_wrap2"> |
| 3749 | 3687 |
<!-- <button type="button" onClick="javascript:addrToList(); return false;">추가</button> --> |
| 3750 |
- <button type="button" onClick="javascript:addrToList_advc(); return false;">추가</button> |
|
| 3688 |
+ <button type="button" onClick="javascript:addrToList_advc('all'); return false;">전체추가</button>
|
|
| 3689 |
+ <button type="button" onClick="javascript:addrToList_advc('select'); return false;">선택추가</button>
|
|
| 3751 | 3690 |
<button type="button" onClick="javascript:addrClose(); return false;">닫기</button> |
| 3752 | 3691 |
</div> |
| 3753 | 3692 |
<%-- 주소록 레이어 팝업 닫기 실행 코드 --%> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?