팩스발송 주소록 불러오기, 엑셀불러오기 기능 수정
@7559e22a1b64e803eab2cd75789ec3af50c66cc5
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserManage.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserManage.jsp
... | ... | @@ -655,8 +655,8 @@ |
| 655 | 655 |
</td> |
| 656 | 656 |
</c:if> |
| 657 | 657 |
<td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if> title="<c:out value="${result.loginLastDate}"/>">
|
| 658 |
- <fmt:parseDate value="${result.loginLastDate}" var="loginLastDateValue" pattern="yyyy-MM-dd HH:mm"/>
|
|
| 659 |
- <fmt:formatDate value="${loginLastDateValue}" pattern="MM-dd HH:mm"/>
|
|
| 658 |
+ <%-- <fmt:parseDate value="${result.loginLastDate}" var="loginLastDateValue" pattern="yyyy-MM-dd HH:mm"/>
|
|
| 659 |
+ <fmt:formatDate value="${loginLastDateValue}" pattern="MM-dd HH:mm"/> --%>
|
|
| 660 | 660 |
</td> |
| 661 | 661 |
</tr> |
| 662 | 662 |
<c:if test="${userSearchVO.mberSttus == 'B'}">
|
--- src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp
... | ... | @@ -5,21 +5,33 @@ |
| 5 | 5 |
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> |
| 6 | 6 |
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
| 7 | 7 |
<%@ page import="itn.com.cmm.LoginVO" %> |
| 8 |
+ |
|
| 9 |
+<!-- |
|
| 8 | 10 |
<script>document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1"></' + 'script>')</script>
|
| 11 |
+--> |
|
| 12 |
+ |
|
| 9 | 13 |
<script src="/publish/js/content.js"></script> |
| 10 | 14 |
<!-- 스프레드시트(타뷸레이터)관련 js --> |
| 11 | 15 |
<script src="/js/user/fax/tabulator.js"></script> |
| 12 | 16 |
<!-- 주소록관련 js --> |
| 13 | 17 |
<script src="/js/user/fax/addr.js"></script> |
| 14 | 18 |
<!-- 엑셀불러오기관련 js --> |
| 15 |
-<script src="/js/user/fax/exelLoad.js"></script> |
|
| 19 |
+<script src="/js/user/fax/exelUpload.js"></script> |
|
| 20 |
+ |
|
| 21 |
+<!-- 주소록 유효성 체크 공통유틸로 인해 추가 --> |
|
| 22 |
+<script type="text/javascript" src="<c:url value='/js/web/addr/cmn.js?date=202409021440'/>"></script> |
|
| 16 | 23 |
|
| 17 | 24 |
<script type="text/javascript" src="<c:url value='/js/txtSpecialReplace.js?date=202209210001'/>"></script> |
| 18 | 25 |
<!-- 현재 jsp에서 사용하는 file 관련 js --> |
| 19 | 26 |
<script type="text/javascript" src="<c:out value='/js/user/fax/file.js' />"></script> |
| 20 | 27 |
<script type="text/javascript"> |
| 21 | 28 |
var loginVO = '${loginVO}';
|
| 22 |
- |
|
| 29 |
+ |
|
| 30 |
+ var tableL = null; //받는사람 연락처 Tabulator 변수 |
|
| 31 |
+ var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 |
|
| 32 |
+ var tableExcel = null; //엑셀 불러오기 팝업 Tabulator 변수 |
|
| 33 |
+ var tableError = null; //엑셀 오류 주소록 상세 팝업 Tabulator 변수 |
|
| 34 |
+ |
|
| 23 | 35 |
$(document).ready(function(){
|
| 24 | 36 |
|
| 25 | 37 |
//엑섹불러오기 버튼 클릭시 파일 첨부 실행 |
... | ... | @@ -50,11 +62,6 @@ |
| 50 | 62 |
alert("팩스발송 서비스는 로그인 후 이용 가능합니다.");
|
| 51 | 63 |
return false; |
| 52 | 64 |
} |
| 53 |
- |
|
| 54 |
- /* if(!moneyChk()){
|
|
| 55 |
- return false; |
|
| 56 |
- } */ |
|
| 57 |
- |
|
| 58 | 65 |
|
| 59 | 66 |
if(!valueChk()){
|
| 60 | 67 |
return false; |
... | ... | @@ -117,8 +124,6 @@ |
| 117 | 124 |
return false; |
| 118 | 125 |
} |
| 119 | 126 |
}); |
| 120 |
- |
|
| 121 |
- |
|
| 122 | 127 |
}); |
| 123 | 128 |
|
| 124 | 129 |
|
... | ... | @@ -154,7 +159,6 @@ |
| 154 | 159 |
addPhoneInfo(tableData) |
| 155 | 160 |
|
| 156 | 161 |
} |
| 157 |
- |
|
| 158 | 162 |
} |
| 159 | 163 |
|
| 160 | 164 |
function moneyChk(){
|
... | ... | @@ -218,13 +222,6 @@ |
| 218 | 222 |
return true; |
| 219 | 223 |
} |
| 220 | 224 |
|
| 221 |
- //주소록 팝업 닫기 기능 |
|
| 222 |
- function addrClose(){
|
|
| 223 |
- $(".closeAddr").trigger("click");
|
|
| 224 |
- //주소록 레이어 팝업의 Tabulator 데이터 지워주기 |
|
| 225 |
- tableAddr.clearData(); |
|
| 226 |
- } |
|
| 227 |
- |
|
| 228 | 225 |
/** |
| 229 | 226 |
* @description 금액 계산 function |
| 230 | 227 |
*/ |
... | ... | @@ -281,26 +278,38 @@ |
| 281 | 278 |
location.href="<c:url value='/web/mjon/fax/faxSendList.do'/>"; |
| 282 | 279 |
} |
| 283 | 280 |
|
| 284 |
- |
|
| 281 |
+ //전체 데이터 갯수 구하는 함수 |
|
| 282 |
+ function updateTotCnt(data){
|
|
| 283 |
+ var rowTotCnt = data; |
|
| 284 |
+ $("#rowTotCnt").text(numberWithCommas(rowTotCnt));
|
|
| 285 |
+ } |
|
| 285 | 286 |
|
| 286 | 287 |
</script> |
| 287 | 288 |
|
| 288 |
- <form id="convertForm" name="convertForm" action=""> |
|
| 289 |
- <input type="hidden" id="faxConvertSeq" name="faxConvertSeq" value="" /> |
|
| 290 |
- <input type="hidden" id="faxConvertFilePath" name="faxConvertFilePath" value="" /> <!-- 변환파일 경로 --> |
|
| 291 |
- </form> |
|
| 292 |
- <form id="faxSendForm" name="faxSendForm" action=""> |
|
| 293 |
- <input type="hidden" id="subject" name="subject" value="" /> |
|
| 294 |
- <input type="hidden" id="callToList" name="callToList" value="" /> |
|
| 295 |
- <!-- 문자온 법인폰 번호 --> |
|
| 296 |
- <!-- <input type="hidden" id="callFrom" name="callFrom" value="15518011" /> --> |
|
| 297 |
- <input type="hidden" id="nameList" name="nameList" value="" /> |
|
| 298 |
- <input type="hidden" id="faxConvertSeq" name="faxConvertSeq" value="" /> |
|
| 299 |
- <input type="hidden" id="reserveYn" name="reserveYn" value="N" /> |
|
| 300 |
- <input type="hidden" id="sendDate" name="sendDate" value="" /> |
|
| 301 |
- <input type="hidden" id="totalEa" name="totalEa" value="" /> |
|
| 302 |
- </form> |
|
| 289 |
+<form id="convertForm" name="convertForm" action=""> |
|
| 290 |
+ <input type="hidden" id="faxConvertSeq" name="faxConvertSeq" value="" /> |
|
| 291 |
+ <input type="hidden" id="faxConvertFilePath" name="faxConvertFilePath" value="" /> <!-- 변환파일 경로 --> |
|
| 292 |
+</form> |
|
| 303 | 293 |
|
| 294 |
+<form id="faxSendForm" name="faxSendForm" action=""> |
|
| 295 |
+ <input type="hidden" id="subject" name="subject" value="" /> |
|
| 296 |
+ <input type="hidden" id="callToList" name="callToList" value="" /> |
|
| 297 |
+ <!-- 문자온 법인폰 번호 --> |
|
| 298 |
+ <input type="hidden" id="nameList" name="nameList" value="" /> |
|
| 299 |
+ <input type="hidden" id="faxConvertSeq" name="faxConvertSeq" value="" /> |
|
| 300 |
+ <input type="hidden" id="reserveYn" name="reserveYn" value="N" /> |
|
| 301 |
+ <input type="hidden" id="sendDate" name="sendDate" value="" /> |
|
| 302 |
+ <input type="hidden" id="totalEa" name="totalEa" value="" /> |
|
| 303 |
+</form> |
|
| 304 |
+ |
|
| 305 |
+<div class="loading_execl_layer"> |
|
| 306 |
+ <div class="loading_container"> |
|
| 307 |
+ <div class="bar"></div> |
|
| 308 |
+ <div class="text">Loading</div> |
|
| 309 |
+ </div> |
|
| 310 |
+</div> |
|
| 311 |
+ |
|
| 312 |
+<div> |
|
| 304 | 313 |
<div class="inner"> |
| 305 | 314 |
<!-- send top --> |
| 306 | 315 |
<div class="send_top"> |
... | ... | @@ -319,8 +328,7 @@ |
| 319 | 328 |
</ul> |
| 320 | 329 |
</div> |
| 321 | 330 |
<!--// tab button 끝--> |
| 322 |
- |
|
| 323 |
- |
|
| 331 |
+ |
|
| 324 | 332 |
<!-- tab content1 --> |
| 325 | 333 |
<div class="tap_content current" id="tab_content_1"> |
| 326 | 334 |
<div class="send_general"> |
... | ... | @@ -452,13 +460,8 @@ |
| 452 | 460 |
</div> |
| 453 | 461 |
<div class="list_bottom_right"> |
| 454 | 462 |
<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p> |
| 455 |
- |
|
| 456 |
- <!-- <button type="button" class="address_reg2 addressregi_btn">주소록에 등록</button> --> |
|
| 457 | 463 |
</div> |
| 458 | 464 |
</div> |
| 459 |
- <!-- <div class="btn_popup_wrap"> --> |
|
| 460 |
- <!-- <button type="button" id="sendBtn" class="btnType btnType7 tab2">발송</button> --> |
|
| 461 |
- <!-- </div> --> |
|
| 462 | 465 |
</div> |
| 463 | 466 |
</td> |
| 464 | 467 |
</tr> |
... | ... | @@ -469,8 +472,6 @@ |
| 469 | 472 |
<div class="final_pay"> |
| 470 | 473 |
<div class="pay_info_list"> |
| 471 | 474 |
<p>발송금액 :</p> |
| 472 |
- <!-- <div class="info" id="repPriceTxt" style="display: none;"> --> |
|
| 473 |
- <!-- </div> --> |
|
| 474 | 475 |
</div> |
| 475 | 476 |
<p class="price"><span id="repPriceTxt"></span><span id="totalPriceTxt">0</span> 원<span></span></p> |
| 476 | 477 |
</div> |
... | ... | @@ -550,8 +551,6 @@ |
| 550 | 551 |
<input name="moveAddrFlag" type="hidden" value="N"/> |
| 551 | 552 |
<input name="addrIdList" type="hidden" value=""/> |
| 552 | 553 |
</form> |
| 553 |
- |
|
| 554 |
- |
|
| 555 | 554 |
</div> |
| 556 | 555 |
|
| 557 | 556 |
|
... | ... | @@ -566,7 +565,7 @@ |
| 566 | 565 |
<div class="popup-com import_layer popup06" tabindex="0" data-tooltip-con="popup06" data-focus="popup06" data-focus-prev="popup06-close" style="width: 1000px;z-index:98"> |
| 567 | 566 |
<div class="popup_heading"> |
| 568 | 567 |
<p><span>주소록 불러오기</p> |
| 569 |
- <button type="button" onClick="javascript:addrClose(); return false;"> |
|
| 568 |
+ <button type="button" onClick="javascript:addrToList_close(); return false;"> |
|
| 570 | 569 |
<img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
| 571 | 570 |
</div> |
| 572 | 571 |
<div class="layer_in"> |
... | ... | @@ -590,9 +589,6 @@ |
| 590 | 589 |
<div id="addrGroupLoad"> |
| 591 | 590 |
</div> |
| 592 | 591 |
</div> |
| 593 |
- <!-- <div class="popup_btn"> |
|
| 594 |
- <button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button> |
|
| 595 |
- </div> --> |
|
| 596 | 592 |
</div> |
| 597 | 593 |
<div class="adr_pop_right"> |
| 598 | 594 |
<div class="clearfix"> |
... | ... | @@ -614,8 +610,9 @@ |
| 614 | 610 |
<!--// table --> |
| 615 | 611 |
</div> |
| 616 | 612 |
<div class="popup_btn_wrap2"> |
| 617 |
- <button type="button" onClick="javascript:addrToList(); return false;">추가</button> |
|
| 618 |
- <button type="button" onClick="javascript:addrClose(); return false;">닫기</button> |
|
| 613 |
+ <button type="button" onClick="javascript:addrToList_advc('all'); return false;">전체추가</button>
|
|
| 614 |
+ <button type="button" onClick="javascript:addrToList_advc('select'); return false;">선택추가</button>
|
|
| 615 |
+ <button type="button" onClick="javascript:addrToList_close(); return false;">닫기</button> |
|
| 619 | 616 |
</div> |
| 620 | 617 |
<%-- 주소록 레이어 팝업 닫기 실행 코드 --%> |
| 621 | 618 |
<input type="hidden" name="btnAddrClose" id="btnAddrClose" class="tooltip-close closeAddr" data-focus="popup06-close" /> |
... | ... | @@ -628,145 +625,226 @@ |
| 628 | 625 |
<!--// 주소록 불러오기 --> |
| 629 | 626 |
|
| 630 | 627 |
<!-- 엑셀 불러오기 --> |
| 631 |
-<form id="excelForm" name="excelForm" method="post"> |
|
| 632 |
- <div class="tooltip-wrap"> |
|
| 633 |
- <div class="popup-com import_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close"> |
|
| 634 |
- <div class="popup_heading"> |
|
| 635 |
- <p><span>엑셀</span> 불러오기</p> |
|
| 636 |
- <button type="button" class="tooltip-close" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 637 |
- </div> |
|
| 638 |
- <div class="layer_in"> |
|
| 639 |
- <!-- 엑셀파일 불러오기 --> |
|
| 640 |
- <div class="hascont"> |
|
| 641 |
- <div class="titBox"> |
|
| 642 |
- <p>- 최대 2만 건까지 등록할 수 있습니다.</p> |
|
| 643 |
- <p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> |
|
| 644 |
-<!-- <p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p> --> |
|
| 645 |
- <p>- 이름 : 20byte까지 입력 가능합니다.</p> |
|
| 646 |
- <p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. |
|
| 647 |
- </p> |
|
| 648 |
- <!-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --> |
|
| 649 |
- <button type="button" class="excel_btn" onclick="location.href='/download/msg/팩스_엑셀주소록_등록양식.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button> |
|
| 628 |
+<div class="tooltip-wrap"> |
|
| 629 |
+ <div class="popup-com adr_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close" style="width: 1000px;"> |
|
| 630 |
+ <div class="tooltip-wrap"> |
|
| 631 |
+ <div class="popup-com adr_layer adr_popup14" tabindex="0" data-tooltip-con="adr_popup14" data-focus="adr_popup14" data-focus-prev="adr_popu14-close" style="width: 450px;"> |
|
| 632 |
+ <div class="popup_heading"> |
|
| 633 |
+ <p>주소록 상세 결과</p> |
|
| 634 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup14-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 635 |
+ </div> |
|
| 636 |
+ <div class="layer_in" style="padding:30px 20px;"> |
|
| 637 |
+ <div class="table_top"> |
|
| 638 |
+ <p> |
|
| 639 |
+ 총 <span class="c_e40000" id="errorPopTotCnt">0</span>건 |
|
| 640 |
+ / 중복 <span class="c_002c9a" id="errorPopDupCnt">0</span>건 |
|
| 641 |
+ / 오류 <span class="c_002c9a" id="errorPopErrorCnt">0</span>건</p> |
|
| 642 |
+ <button type="button" class="excel_btn btnType" id="errorExcelBtn"><i class="downroad"></i>엑셀 다운로드</button> |
|
| 650 | 643 |
</div> |
| 651 |
- <div class="attachedFile"> |
|
| 652 |
- <label for="" class="attachedFile_label">첨부파일</label> |
|
| 653 |
- <input type="text" id="excelNm" readonly> |
|
| 654 |
- <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport(event); return false;" style="display:none"/> |
|
| 655 |
- <button type="button" class="btnType btnType6 c3">찾아보기</button> |
|
| 656 |
- <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> |
|
| 644 |
+ <div class="tb_wrap adr_list" id="tabulator_error"> |
|
| 645 |
+ <!-- $tableError 참고 --> |
|
| 657 | 646 |
</div> |
| 658 |
- </div><!--// 엑셀파일 불러오기 --> |
|
| 659 |
- <div class="popup_btn_wrap2"> |
|
| 660 |
- <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" id="excelAdd">추가</button> |
|
| 661 |
- <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02">닫기</button> |
|
| 647 |
+ <ul class="cf_text_ul"> |
|
| 648 |
+ <li>*중복번호는 하나의 번호만 등록됩니다.</li> |
|
| 649 |
+ <li>*팩스번호 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.</li> |
|
| 650 |
+ <li>ex) 발송불가 특수문자, 자릿수 오류 등</li> |
|
| 651 |
+ </ul> |
|
| 652 |
+ <div class="popup_btn_wrap2"> |
|
| 653 |
+ <button type="button" class="tooltip-close" data-focus="adr_popup14-close" data-focus-next="adr_popup14">닫기</button> |
|
| 654 |
+ </div> |
|
| 662 | 655 |
</div> |
| 663 | 656 |
</div> |
| 664 | 657 |
</div> |
| 658 |
+ |
|
| 659 |
+ <div class="popup_heading"> |
|
| 660 |
+ <p>엑셀 불러오기</p> |
|
| 661 |
+ <button type="button" class="tooltip-close" id="closeBtn" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 662 |
+ </div> |
|
| 663 |
+ <div class="layer_in" style="padding: 25px 30px;"> |
|
| 664 |
+ |
|
| 665 |
+ <!-- 엑셀입력 --> |
|
| 666 |
+ <div class="popCont current pop_more_cont" id="popCont_1"> |
|
| 667 |
+ <div class="titBox"> |
|
| 668 |
+ <p>- 최대 2만 건까지 등록할 수 있습니다.</p> |
|
| 669 |
+ <p>- [엑셀 불러오기]시 문서의 A, B열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> |
|
| 670 |
+ <p>- 이름 : 20byte까지 입력 가능합니다.</p> |
|
| 671 |
+ <p>- 팩스 번호는 지역번호(02, 031, 033 등), 타사부가번호(030*, 050*, 060, 070, 080, 1**)로 시작하는 번호만 발송 가능합니다. </p> |
|
| 672 |
+ </div> |
|
| 673 |
+ <div class="pop_more_wrap"> |
|
| 674 |
+ <button type="button" class="pop_more" onclick="popMore(this);">더보기<i></i></button> |
|
| 675 |
+ </div> |
|
| 676 |
+ </div> |
|
| 677 |
+ <!--// 엑셀입력 --> |
|
| 678 |
+ |
|
| 679 |
+ <!-- 공통 --> |
|
| 680 |
+ <div> |
|
| 681 |
+ <table class="layer_tType1"> |
|
| 682 |
+ <caption>엑셀입력 표</caption> |
|
| 683 |
+ <colgroup> |
|
| 684 |
+ <col style="width: 95px"> |
|
| 685 |
+ <col style="width: auto"> |
|
| 686 |
+ </colgroup> |
|
| 687 |
+ <tbody> |
|
| 688 |
+ <tr> |
|
| 689 |
+ <td colspan="2" style="padding:20px 0;"> |
|
| 690 |
+ <div class="file_upload_wrap" style="width:100%;display:flex;"> |
|
| 691 |
+ <div class="file_add exel_upload_area"> |
|
| 692 |
+ <p><img src="/publish/images/content/file_add.png" alt="파일 붙여넣기">마우스로 엑셀파일을 여기에 끌어다 놓으세요</p> |
|
| 693 |
+ </div> |
|
| 694 |
+ <input type="file" id="excelFile" accept=".xls, .xlsx" style="display:none"/> |
|
| 695 |
+ <button type="button" class="excel_btn2 btnType c3"><i class="uproad"></i>엑셀파일 업로드</button> |
|
| 696 |
+ </div> |
|
| 697 |
+ </td> |
|
| 698 |
+ </tr> |
|
| 699 |
+ </tbody> |
|
| 700 |
+ </table> |
|
| 701 |
+ </div> |
|
| 702 |
+ |
|
| 703 |
+ <div class="excel_middle2"> |
|
| 704 |
+ <p> |
|
| 705 |
+ 총 <span class="c_e40000 fwBold" id="excelRowTotCnt">0</span>건 |
|
| 706 |
+ / 중복 <span class="c_002c9a fwBold" id="excelRowDupCnt">0</span>건 |
|
| 707 |
+ / 오류 <span class="c_002c9a fwBold" id="excelRowErrorCnt">0</span>건 |
|
| 708 |
+ <button type="button" class="btn_list_detail" data-tooltip="adr_popup14"><img src="/publish/images/search.png"></button> |
|
| 709 |
+ </p> |
|
| 710 |
+ </div> |
|
| 711 |
+ <div class="adr_excel" style="margin-top: 13px; overflow-x:auto;"> |
|
| 712 |
+ <!-- thead --> |
|
| 713 |
+ <div class="adr_hd select_adr_hd msg" data-group="tableExcel"> |
|
| 714 |
+ <div style="width: 40px;"></div> |
|
| 715 |
+ <div style="width: 100px;"></div> |
|
| 716 |
+ <div style="width: 400px;"> |
|
| 717 |
+ <label for="" class="label"></label> |
|
| 718 |
+ <select class="field-selector"> |
|
| 719 |
+ <option value="">선택하기</option> |
|
| 720 |
+ <option value="addrNm">이름</option> |
|
| 721 |
+ <option value="addrFaxNo">팩스번호</option> |
|
| 722 |
+ </select> |
|
| 723 |
+ </div> |
|
| 724 |
+ <div style="width: 400px;"> |
|
| 725 |
+ <label for="" class="label"></label> |
|
| 726 |
+ <select class="field-selector"> |
|
| 727 |
+ <option value="">선택하기</option> |
|
| 728 |
+ <option value="addrNm">이름</option> |
|
| 729 |
+ <option value="addrFaxNo">팩스번호</option> |
|
| 730 |
+ </select> |
|
| 731 |
+ </div> |
|
| 732 |
+ </div> |
|
| 733 |
+ </div> |
|
| 734 |
+ <div class="drag_drop_wrap callList_includ_box" id="tabulator_excel"></div> |
|
| 735 |
+ <div class="excel_middle"> |
|
| 736 |
+ <div class="select_btnWrap clearfix"> |
|
| 737 |
+ <div> |
|
| 738 |
+ <button type="button" id="allDel"><i class="remove_img"></i>전체삭제</button> |
|
| 739 |
+ <button type="button" id="in_select_del"><i class="remove_img"></i>선택삭제</button> |
|
| 740 |
+ </div> |
|
| 741 |
+ </div> |
|
| 742 |
+ </div> |
|
| 743 |
+ <!--// 공통 --> |
|
| 744 |
+ |
|
| 745 |
+ <div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;"> |
|
| 746 |
+ <button type="button" id="btnAddrMassReg">추가</button> |
|
| 747 |
+ <button type="button" id="btnAddrMassClose" class="tooltip-close" data-focus="adr_popup01-close" data-focus-next="popup02">닫기</button> |
|
| 748 |
+ </div> |
|
| 749 |
+ </div> |
|
| 665 | 750 |
</div> |
| 666 |
-</form> |
|
| 751 |
+</div> |
|
| 667 | 752 |
<!--// 엑셀 불러오기 --> |
| 753 |
+ |
|
| 668 | 754 |
<!--// 전송내역 팝업 시작--> |
| 669 | 755 |
<div class="tooltip-wrap"> |
| 670 |
- <div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close"> |
|
| 671 |
- <div class="popup_heading"> |
|
| 672 |
- <p><span>전송내역</p> |
|
| 673 |
- <button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 674 |
- </div> |
|
| 675 |
- <div class="layer_in"> |
|
| 676 |
- <!-- tab button --> |
|
| 677 |
- <ul class="tabType6"> |
|
| 678 |
- <li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li> |
|
| 679 |
- <li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li> |
|
| 680 |
- </ul><!--// tab button --> |
|
| 681 |
- <!-- 최근 전송내역 --> |
|
| 682 |
- <div class="history_cont hascont current"> |
|
| 683 |
- <div class="histroy_trans latestMsgArea" id="latestMsgArea"> |
|
| 684 |
- <ul id="latestMsgUl"> |
|
| 685 |
- <c:choose> |
|
| 686 |
- <c:when test="${not empty resultLatestMsgList}">
|
|
| 687 |
- <c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status">
|
|
| 688 |
- <li id="latestLi"> |
|
| 689 |
- <input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>">
|
|
| 690 |
- <label for="addrChk_${status.count}" class="label">최근 전송내역</label>
|
|
| 691 |
- <p><c:out value="${latestMsgList.callTo}"/></p>
|
|
| 692 |
- <button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> |
|
| 693 |
- </li> |
|
| 694 |
- </c:forEach> |
|
| 695 |
- </c:when> |
|
| 696 |
- <c:otherwise> |
|
| 697 |
- <li> |
|
| 698 |
- <p>최근 발송 내역이 없습니다.</p> |
|
| 756 |
+ <div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close"> |
|
| 757 |
+ <div class="popup_heading"> |
|
| 758 |
+ <p><span>전송내역</p> |
|
| 759 |
+ <button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 760 |
+ </div> |
|
| 761 |
+ <div class="layer_in"> |
|
| 762 |
+ <!-- tab button --> |
|
| 763 |
+ <ul class="tabType6"> |
|
| 764 |
+ <li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li> |
|
| 765 |
+ <li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li> |
|
| 766 |
+ </ul><!--// tab button --> |
|
| 767 |
+ <!-- 최근 전송내역 --> |
|
| 768 |
+ <div class="history_cont hascont current"> |
|
| 769 |
+ <div class="histroy_trans latestMsgArea" id="latestMsgArea"> |
|
| 770 |
+ <ul id="latestMsgUl"> |
|
| 771 |
+ <c:choose> |
|
| 772 |
+ <c:when test="${not empty resultLatestMsgList}">
|
|
| 773 |
+ <c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status">
|
|
| 774 |
+ <li id="latestLi"> |
|
| 775 |
+ <input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>">
|
|
| 776 |
+ <label for="addrChk_${status.count}" class="label">최근 전송내역</label>
|
|
| 777 |
+ <p><c:out value="${latestMsgList.callTo}"/></p>
|
|
| 778 |
+ <button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> |
|
| 699 | 779 |
</li> |
| 700 |
- </c:otherwise> |
|
| 701 |
- </c:choose> |
|
| 702 |
- </ul> |
|
| 703 |
- </div> |
|
| 704 |
- <div class="popup_btn_wrap2 hisroy_btn"> |
|
| 705 |
- <button type="button" id="latestAddPhone">선택추가</button> |
|
| 706 |
- <button type="button" id="latestCancelPhone">선택취소</button> |
|
| 707 |
- </div> |
|
| 708 |
- </div><!--// 최근 전송내역 --> |
|
| 709 |
- <!-- 자주보내는 번호 --> |
|
| 710 |
- <div class="history_cont hascont"> |
|
| 711 |
- <div class="histroy_trans" id="bookMarkMsgArea"> |
|
| 712 |
- <ul id="bookMsgUl"> |
|
| 713 |
- <c:choose> |
|
| 714 |
- <c:when test="${not empty resultBookMarkMsgList}">
|
|
| 715 |
- <c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status">
|
|
| 716 |
- <li id="bookMarkLi"> |
|
| 717 |
- <input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>">
|
|
| 718 |
- <label for="addrChk_${status.count}" class="label">최근 전송내역</label>
|
|
| 719 |
- <p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p>
|
|
| 720 |
- <button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> |
|
| 721 |
- </li> |
|
| 722 |
- </c:forEach> |
|
| 723 |
- </c:when> |
|
| 724 |
- <c:otherwise> |
|
| 725 |
- <li> |
|
| 726 |
- <p>등록된 자주 보내는 번호 내역이 없습니다.</p> |
|
| 780 |
+ </c:forEach> |
|
| 781 |
+ </c:when> |
|
| 782 |
+ <c:otherwise> |
|
| 783 |
+ <li> |
|
| 784 |
+ <p>최근 발송 내역이 없습니다.</p> |
|
| 785 |
+ </li> |
|
| 786 |
+ </c:otherwise> |
|
| 787 |
+ </c:choose> |
|
| 788 |
+ </ul> |
|
| 789 |
+ </div> |
|
| 790 |
+ <div class="popup_btn_wrap2 hisroy_btn"> |
|
| 791 |
+ <button type="button" id="latestAddPhone">선택추가</button> |
|
| 792 |
+ <button type="button" id="latestCancelPhone">선택취소</button> |
|
| 793 |
+ </div> |
|
| 794 |
+ </div><!--// 최근 전송내역 --> |
|
| 795 |
+ <!-- 자주보내는 번호 --> |
|
| 796 |
+ <div class="history_cont hascont"> |
|
| 797 |
+ <div class="histroy_trans" id="bookMarkMsgArea"> |
|
| 798 |
+ <ul id="bookMsgUl"> |
|
| 799 |
+ <c:choose> |
|
| 800 |
+ <c:when test="${not empty resultBookMarkMsgList}">
|
|
| 801 |
+ <c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status">
|
|
| 802 |
+ <li id="bookMarkLi"> |
|
| 803 |
+ <input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>">
|
|
| 804 |
+ <label for="addrChk_${status.count}" class="label">최근 전송내역</label>
|
|
| 805 |
+ <p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p>
|
|
| 806 |
+ <button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> |
|
| 727 | 807 |
</li> |
| 728 |
- </c:otherwise> |
|
| 729 |
- </c:choose> |
|
| 730 |
- </ul> |
|
| 731 |
- </div> |
|
| 732 |
- <div class="popup_btn_wrap2 hisroy_btn"> |
|
| 733 |
- <button type="button" id="bookMarkAddPhone">선택추가</button> |
|
| 734 |
- <button type="button" id="bookMarkCancelPhone">선택취소</button> |
|
| 735 |
- </div> |
|
| 736 |
- </div><!--// 자주보내는 번호 --> |
|
| 737 |
- </div> |
|
| 808 |
+ </c:forEach> |
|
| 809 |
+ </c:when> |
|
| 810 |
+ <c:otherwise> |
|
| 811 |
+ <li> |
|
| 812 |
+ <p>등록된 자주 보내는 번호 내역이 없습니다.</p> |
|
| 813 |
+ </li> |
|
| 814 |
+ </c:otherwise> |
|
| 815 |
+ </c:choose> |
|
| 816 |
+ </ul> |
|
| 817 |
+ </div> |
|
| 818 |
+ <div class="popup_btn_wrap2 hisroy_btn"> |
|
| 819 |
+ <button type="button" id="bookMarkAddPhone">선택추가</button> |
|
| 820 |
+ <button type="button" id="bookMarkCancelPhone">선택취소</button> |
|
| 821 |
+ </div> |
|
| 822 |
+ </div><!--// 자주보내는 번호 --> |
|
| 738 | 823 |
</div> |
| 739 | 824 |
</div> |
| 825 |
+</div> |
|
| 740 | 826 |
<!--// 전송내역 팝업 --> |
| 741 | 827 |
|
| 742 |
- |
|
| 743 |
- |
|
| 744 | 828 |
<!-- 팩스 전송 결과 --> |
| 745 |
- |
|
| 746 |
- <div class="tooltip-wrap"> |
|
| 747 |
- <!-- 문자발송 성공 레이어팝업 --> |
|
| 748 |
- <div class="popup-com pop_msg_success"> |
|
| 749 |
- <div class="popup_heading"> |
|
| 750 |
- <p>문자 전송 결과</p> |
|
| 751 |
-<!-- <button type="button" class="tooltip-close" onclick="msgSuccessClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> --> |
|
| 752 |
- </div> |
|
| 753 |
- <div class="layer_in"> |
|
| 754 |
- <div class="msg_text" |
|
| 755 |
- </div> |
|
| 756 |
- </div> |
|
| 757 |
- <div class="popup_btn"> |
|
| 758 |
- <button type="button" onclick="goPage(); return false;">팩스 발송결과 바로가기</button> |
|
| 759 |
- <button type="button" class="tooltip-close" onclick="window.location.reload()">확인</button> |
|
| 829 |
+<div class="tooltip-wrap"> |
|
| 830 |
+ <!-- 문자발송 성공 레이어팝업 --> |
|
| 831 |
+ <div class="popup-com pop_msg_success"> |
|
| 832 |
+ <div class="popup_heading"> |
|
| 833 |
+ <p>문자 전송 결과</p> |
|
| 834 |
+ </div> |
|
| 835 |
+ <div class="layer_in"> |
|
| 836 |
+ <div class="msg_text" |
|
| 760 | 837 |
</div> |
| 761 | 838 |
</div> |
| 839 |
+ <div class="popup_btn"> |
|
| 840 |
+ <button type="button" onclick="goPage(); return false;">팩스 발송결과 바로가기</button> |
|
| 841 |
+ <button type="button" class="tooltip-close" onclick="window.location.reload()">확인</button> |
|
| 842 |
+ </div> |
|
| 762 | 843 |
</div> |
| 763 |
- |
|
| 764 |
- |
|
| 844 |
+</div> |
|
| 765 | 845 |
<!-- //팩스 전송 결과 --> |
| 766 | 846 |
<%-- |
| 767 | 847 |
==================================================================== |
| 768 | 848 |
= 레이어 팝엽 끝 = |
| 769 | 849 |
==================================================================== |
| 770 |
- --%> |
|
| 771 |
- |
|
| 772 |
- |
|
| 850 |
+ --%>(No newline at end of file) |
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/include/msgDataIncludeExcel.jsp
... | ... | @@ -559,9 +559,6 @@ |
| 559 | 559 |
if(errorCount > 0){
|
| 560 | 560 |
alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등');
|
| 561 | 561 |
} |
| 562 |
- |
|
| 563 |
- |
|
| 564 |
- |
|
| 565 | 562 |
} |
| 566 | 563 |
|
| 567 | 564 |
function fn_dupliPopupShow(){
|
--- src/main/webapp/js/user/fax/addr.js
+++ src/main/webapp/js/user/fax/addr.js
... | ... | @@ -27,23 +27,21 @@ |
| 27 | 27 |
|
| 28 | 28 |
//주소록 그룹정보 불러오기 |
| 29 | 29 |
function getAddrGroupList() {
|
| 30 |
- $.ajax({
|
|
| 31 |
- type : "POST", |
|
| 32 |
- async : false, |
|
| 33 |
- url : "/web/mjon/addr/addrGroupListAjax.do", |
|
| 34 |
- data : {},
|
|
| 35 |
- dataType:'json', |
|
| 36 |
- success : function(data) {
|
|
| 37 |
- //alert(JSON.stringify(data.addrGroupList)); |
|
| 38 |
- |
|
| 39 |
- // Show Html |
|
| 40 |
- getAddrGroupListShow(data.addrGroupList); |
|
| 41 |
- }, |
|
| 42 |
- error : function(xhr, status, error) {
|
|
| 43 |
- alert(error); |
|
| 44 |
- return false; |
|
| 45 |
- } |
|
| 46 |
- }); |
|
| 30 |
+ $.ajax({
|
|
| 31 |
+ type : "POST" |
|
| 32 |
+ , async : false |
|
| 33 |
+ , url : "/web/mjon/addr/addrGroupListAjax.do" |
|
| 34 |
+ , data : {}
|
|
| 35 |
+ , dataType:'json' |
|
| 36 |
+ , success : function(data) {
|
|
| 37 |
+ // Show Html |
|
| 38 |
+ getAddrGroupListShow(data.addrGroupList); |
|
| 39 |
+ } |
|
| 40 |
+ , error : function(xhr, status, error) {
|
|
| 41 |
+ alert(error); |
|
| 42 |
+ return false; |
|
| 43 |
+ } |
|
| 44 |
+ }); |
|
| 47 | 45 |
} |
| 48 | 46 |
|
| 49 | 47 |
//Show Html |
... | ... | @@ -55,7 +53,6 @@ |
| 55 | 53 |
for (var j = 0; j < jsonList.length; j++) {
|
| 56 | 54 |
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>"; |
| 57 | 55 |
} |
| 58 |
- |
|
| 59 | 56 |
$("#addrGrpIdInfo").html(sHtml);
|
| 60 | 57 |
} |
| 61 | 58 |
|
... | ... | @@ -88,130 +85,55 @@ |
| 88 | 85 |
return isReturn; |
| 89 | 86 |
} |
| 90 | 87 |
|
| 91 |
-//주소록 팝업 닫기 기능 |
|
| 92 |
-function addrClose(){
|
|
| 93 |
- |
|
| 94 |
- $(".closeAddr").trigger("click");
|
|
| 95 |
- |
|
| 96 |
- //주소록 레이어 팝업의 Tabulator 데이터 지워주기 |
|
| 97 |
- tableAddr.clearData(); |
|
| 98 |
- |
|
| 99 |
-} |
|
| 100 |
- |
|
| 101 | 88 |
//주소록 불러오기에서 수신자 리스트 추가해 주기 |
| 102 |
-function addrToList(){
|
|
| 89 |
+function addrToList_advc(type){
|
|
| 103 | 90 |
|
| 104 |
- var selectedData = tableAddr.getSelectedRows(); |
|
| 91 |
+ var tableSize = tableAddr.getDataCount(); |
|
| 105 | 92 |
var tableData = []; |
| 106 | 93 |
|
| 107 |
- if(selectedData == "" || selectedData == null){
|
|
| 108 |
- |
|
| 94 |
+ if(tableSize < 1){
|
|
| 109 | 95 |
alert("주소록을 선택해 주세요.");
|
| 110 | 96 |
return false; |
| 111 |
- |
|
| 112 |
- }else{ // 선택한 Row 데이터 저장해주기
|
|
| 97 |
+ }else{
|
|
| 113 | 98 |
|
| 114 |
- |
|
| 115 |
- // fax 번호 유효성 검사 |
|
| 116 |
- for(var i=0; i < selectedData.length; i++){
|
|
| 99 |
+ // 선택한 Row 데이터 저장해주기 |
|
| 100 |
+ var existingData = tableL.getData(); |
|
| 101 |
+ var addrData; |
|
| 117 | 102 |
|
| 118 |
- var faxNum = removeDash(selectedData[i].getData().addrPhone); |
|
| 119 |
- if(!checkFaxNum(faxNum)){
|
|
| 120 |
- alert("팩스 번호를 확인해 주세요.");
|
|
| 121 |
- return false; |
|
| 122 |
- |
|
| 123 |
- } |
|
| 103 |
+ if(type == 'all'){
|
|
| 104 |
+ addrData = tableAddr.getData(); |
|
| 105 |
+ }else{
|
|
| 106 |
+ addrData = tableAddr.getSelectedData(); |
|
| 124 | 107 |
} |
| 125 | 108 |
|
| 109 |
+ // 기존 데이터와 새로운 데이터를 합칩니다. |
|
| 110 |
+ var combinedData = existingData.concat(addrData); |
|
| 111 |
+ // 합쳐진 데이터를 tableL에 설정합니다. |
|
| 112 |
+ tableL.setData(combinedData); |
|
| 126 | 113 |
|
| 127 |
- for(var i=0; i < selectedData.length; i++){
|
|
| 128 |
- |
|
| 129 |
- //좌측 받는사람 리스트를 담아둔 배열에 데이터를 추가해 준다. |
|
| 130 |
- tableData.push({
|
|
| 131 |
- phone: removeDash(selectedData[i].getData().addrPhone), |
|
| 132 |
- name: selectedData[i].getData().addrName |
|
| 133 |
- }); |
|
| 134 |
- } |
|
| 135 |
- |
|
| 136 |
- //선택한 데이터 받는사람 리스트에 추가해 주기 |
|
| 137 |
- addPhoneInfo(tableData); |
|
| 114 |
+ var totRows = 0; // 좌측 받는사람 총 갯수 |
|
| 115 |
+ totRows = tableL.getRows().length; |
|
| 116 |
+ updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 138 | 117 |
$(".closeAddr").trigger("click");
|
| 139 | 118 |
|
| 140 | 119 |
//주소록 레이어 팝업의 Tabulator 데이터 지워주기 |
| 141 | 120 |
tableAddr.clearData(); |
| 142 |
- |
|
| 143 | 121 |
} |
| 144 |
- |
|
| 145 | 122 |
} |
| 146 | 123 |
|
| 147 |
-function loadAddrList(){
|
|
| 148 |
- |
|
| 149 |
- /* |
|
| 150 |
- serialize 를 사용할때는 processData, contentType 옵션 제가할것 |
|
| 151 |
- */ |
|
| 152 |
- var data = $("#searchAddrGrpForm").serialize();
|
|
| 153 |
- |
|
| 154 |
- var url = "/web/mjon/fax/addr/selectFaxAddrListAjax.do"; |
|
| 155 |
-// var url = "/web/mjon/msgdata/selectMsgAddrListAjax.do"; |
|
| 156 |
- |
|
| 157 |
- $.ajax({
|
|
| 158 |
- type: "POST", |
|
| 159 |
- url: url, |
|
| 160 |
- data: data, |
|
| 161 |
- dataType:'json', |
|
| 162 |
- async: false, |
|
| 163 |
- cache: false, |
|
| 164 |
- success: function (returnData, status) {
|
|
| 165 |
- console.log('returnData :: ', returnData);
|
|
| 166 |
- console.log('status :: ', status);
|
|
| 167 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 168 |
- |
|
| 169 |
- if(returnData.result == "success"){
|
|
| 170 |
- |
|
| 171 |
- var addrList = returnData.resultAddrList; |
|
| 172 |
- var tableData = []; |
|
| 173 |
- |
|
| 174 |
- if(addrList.length == 0){
|
|
| 175 |
- |
|
| 176 |
- alert("주소록 정보가 없습니다.");
|
|
| 177 |
- tableAddr.setData(tableData); |
|
| 178 |
- return false; |
|
| 179 |
- } |
|
| 180 |
- |
|
| 181 |
- //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. |
|
| 182 |
- for(var i=0; i < addrList.length; i++){
|
|
| 183 |
- |
|
| 184 |
- tableData.push({addrGroupNm: addrList[i].addrGrpNm, addrPhone: removeDash(addrList[i].addrPhoneNo) , addrName: addrList[i].addrNm});
|
|
| 185 |
- |
|
| 186 |
- } |
|
| 187 |
- |
|
| 188 |
- //우측 주소록 리스트 Tabulator에 입력해주기 |
|
| 189 |
- tableAddr.setData(tableData); |
|
| 190 |
- |
|
| 191 |
- }else{
|
|
| 192 |
- |
|
| 193 |
- alert(returnData.message); |
|
| 194 |
- return false; |
|
| 195 |
- |
|
| 196 |
- } |
|
| 197 |
- |
|
| 198 |
- } else if(status== 'fail'){
|
|
| 199 |
- alert("주소록 불러오기에 실패하였습니다. !!");
|
|
| 200 |
- } |
|
| 201 |
- }, |
|
| 202 |
- error: function (e) { alert("주소록 불러오기에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 203 |
- }); |
|
| 204 |
- |
|
| 124 |
+//주소록 팝업 닫기 기능 |
|
| 125 |
+function addrToList_close(){
|
|
| 126 |
+ $(".closeAddr").trigger("click");
|
|
| 127 |
+ //주소록 레이어 팝업의 Tabulator 데이터 지워주기 |
|
| 128 |
+ tableAddr.clearData(); |
|
| 205 | 129 |
} |
| 206 | 130 |
|
| 131 |
+//주소록 검색 기능처리 |
|
| 207 | 132 |
function fnAddrSearch(){
|
| 208 |
- |
|
| 209 | 133 |
var form = document.searchAddrGrpForm; |
| 210 | 134 |
form.searchKeyword.value = form.searchAddrKeyword.value; |
| 211 | 135 |
form.searchCondition.value = form.searchAddrCondition.value; |
| 212 |
- |
|
| 213 | 136 |
loadAddrList(); |
| 214 |
- |
|
| 215 | 137 |
} |
| 216 | 138 |
|
| 217 | 139 |
//주소록 불러오기 팝업의 그룹 선택시 우측에 주소록 불러오기 |
... | ... | @@ -232,23 +154,63 @@ |
| 232 | 154 |
//왼쪽 그룹리스트의 그룸명을 선택시 검색어를 초기화해준다. |
| 233 | 155 |
form.searchAddrKeyword.value=""; |
| 234 | 156 |
|
| 235 |
- /* |
|
| 236 |
- $(item).toggleClass("open");
|
|
| 237 |
- if ($(item).hasClass("open") === true) {
|
|
| 238 |
- $(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
|
|
| 239 |
- $(item).find("img").attr("alt", "폴더 열림");
|
|
| 240 |
- } |
|
| 241 |
- else {
|
|
| 242 |
- $(item).find("img").attr("src", "/publish/images/content/close_folder2.png");
|
|
| 243 |
- $(item).find("img").attr("alt", "폴더 닫힘");
|
|
| 244 |
- } |
|
| 245 |
- */ |
|
| 246 |
- |
|
| 247 | 157 |
$(item).find("img").attr("src", "/publish/images/content/open_folder2.png");
|
| 248 | 158 |
$(item).find("img").attr("alt", "폴더 열림");
|
| 249 | 159 |
|
| 250 | 160 |
loadAddrList(); |
| 161 |
+} |
|
| 162 |
+ |
|
| 163 |
+//주소록 목록 조회 |
|
| 164 |
+function loadAddrList(){
|
|
| 165 |
+ |
|
| 166 |
+ /* |
|
| 167 |
+ serialize 를 사용할때는 processData, contentType 옵션 제가할것 |
|
| 168 |
+ */ |
|
| 169 |
+ var data = $("#searchAddrGrpForm").serialize();
|
|
| 170 |
+ var url = "/web/mjon/fax/addr/selectFaxAddrListAjax.do"; |
|
| 251 | 171 |
|
| 172 |
+ $.ajax({
|
|
| 173 |
+ type: "POST", |
|
| 174 |
+ url: url, |
|
| 175 |
+ data: data, |
|
| 176 |
+ dataType:'json', |
|
| 177 |
+ async: false, |
|
| 178 |
+ cache: false, |
|
| 179 |
+ success: function (returnData, status) {
|
|
| 180 |
+ console.log('returnData :: ', returnData);
|
|
| 181 |
+ console.log('status :: ', status);
|
|
| 182 |
+ if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 183 |
+ |
|
| 184 |
+ if(returnData.result == "success"){
|
|
| 185 |
+ |
|
| 186 |
+ var addrList = returnData.resultAddrList; |
|
| 187 |
+ var tableData = []; |
|
| 188 |
+ |
|
| 189 |
+ if(addrList.length == 0){
|
|
| 190 |
+ alert("주소록 정보가 없습니다.");
|
|
| 191 |
+ tableAddr.setData(tableData); |
|
| 192 |
+ return false; |
|
| 193 |
+ } |
|
| 194 |
+ |
|
| 195 |
+ //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. |
|
| 196 |
+ for(var i=0; i < addrList.length; i++){
|
|
| 197 |
+ tableData.push({groupNm: addrList[i].addrGrpNm, phone: removeDash(addrList[i].addrPhoneNo) , name: addrList[i].addrNm});
|
|
| 198 |
+ } |
|
| 199 |
+ |
|
| 200 |
+ //우측 주소록 리스트 Tabulator에 입력해주기 |
|
| 201 |
+ tableAddr.setData(tableData); |
|
| 202 |
+ |
|
| 203 |
+ }else{
|
|
| 204 |
+ alert(returnData.message); |
|
| 205 |
+ return false; |
|
| 206 |
+ } |
|
| 207 |
+ |
|
| 208 |
+ } else if(status== 'fail'){
|
|
| 209 |
+ alert("주소록 불러오기에 실패하였습니다. !!");
|
|
| 210 |
+ } |
|
| 211 |
+ }, |
|
| 212 |
+ error: function (e) { alert("주소록 불러오기에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 213 |
+ }); |
|
| 252 | 214 |
} |
| 253 | 215 |
|
| 254 | 216 |
//주소록 불러오기 그룹명 검색 기능처리 |
+++ src/main/webapp/js/user/fax/exelUpload.js
... | ... | @@ -0,0 +1,420 @@ |
| 1 | +$(document).ready(function(){ | |
| 2 | + //############################################################################################# | |
| 3 | + //파일업로드 드래그앤 드롭 시작 | |
| 4 | + //############################################################################################# | |
| 5 | + | |
| 6 | + var objDragAndDrop = $(".exel_upload_area"); | |
| 7 | + $(document).on("dragenter",".exel_upload_area",function(e){ | |
| 8 | + e.stopPropagation(); | |
| 9 | + e.preventDefault(); | |
| 10 | + }); | |
| 11 | + $(document).on("dragover",".exel_upload_area",function(e){ | |
| 12 | + e.stopPropagation(); | |
| 13 | + e.preventDefault(); | |
| 14 | + }); | |
| 15 | + $(document).on("drop",".exel_upload_area",function(e){ | |
| 16 | + fn_excelLoadAddActive(); | |
| 17 | + e.preventDefault(); | |
| 18 | + var files = e.originalEvent.dataTransfer.files; | |
| 19 | + excelFileChange(files[0]); | |
| 20 | + }); | |
| 21 | + | |
| 22 | + $(document).on('dragenter', function (e){ | |
| 23 | + e.stopPropagation(); | |
| 24 | + e.preventDefault(); | |
| 25 | + }); | |
| 26 | + $(document).on('dragover', function (e){ | |
| 27 | + e.stopPropagation(); | |
| 28 | + e.preventDefault(); | |
| 29 | + }); | |
| 30 | + $(document).on('drop', function (e){ | |
| 31 | + e.stopPropagation(); | |
| 32 | + e.preventDefault(); | |
| 33 | + }); | |
| 34 | + //############################################################################################# | |
| 35 | + //파일업로드 드래그앤 드롭 종료 | |
| 36 | + //############################################################################################# | |
| 37 | + | |
| 38 | + //받는사람 전체삭제 버튼 처리 | |
| 39 | + $('#allDel').click(function(){ | |
| 40 | + var data = tableExcel.getRows(); | |
| 41 | + tableExcel.clearData(); | |
| 42 | + $("#excelRowTotCnt").text(0); //총건수 수정 | |
| 43 | + $("#excelRowDupCnt").text(0); //중복건수 수정 | |
| 44 | + dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 | |
| 45 | + | |
| 46 | + // select box 초기화 | |
| 47 | + $('.field-selector').each(function() { $(this).val(''); }); | |
| 48 | + | |
| 49 | + }); | |
| 50 | + | |
| 51 | + //받는사람 선택삭제 버튼 처리해주기 | |
| 52 | + $('#in_select_del').click(function(){ | |
| 53 | + | |
| 54 | + if(tableExcel == null || tableExcel == ""){ | |
| 55 | + alert("받는사람을 추가해 주세요."); | |
| 56 | + return false; | |
| 57 | + } | |
| 58 | + | |
| 59 | + var selectedData = tableExcel.getSelectedRows(); | |
| 60 | + | |
| 61 | + if(selectedData == "" || selectedData == null){ | |
| 62 | + alert("삭제할 연락처를 선택해주세요."); | |
| 63 | + return false; | |
| 64 | + }else{ // 선택한 Row 데이터 삭제하기 | |
| 65 | + if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){ | |
| 66 | + // 선택 데이터 삭제 | |
| 67 | + selectedData.forEach(row => row.delete()); | |
| 68 | + totRows = tableExcel.getRows().length; | |
| 69 | + $("#excelRowTotCnt").text(totRows); | |
| 70 | + } | |
| 71 | + } | |
| 72 | + }); | |
| 73 | + | |
| 74 | + $("#excelFile").on("change", function(event) { | |
| 75 | + var fileInfo = event.target.files; | |
| 76 | + if(fileInfo.length > 0){ | |
| 77 | + excelFileChange(fileInfo[0]); | |
| 78 | + } else { | |
| 79 | + fn_excelLoadRemoveActive(); // 파일이 선택되지 않은 경우 로딩 상태 제거 | |
| 80 | + setTimeout(() => { $(this).val(''); }, 0); // 파일 선택 초기화 | |
| 81 | + } | |
| 82 | + }); | |
| 83 | + | |
| 84 | + //타이틀 select 선택 이벤트 | |
| 85 | + $('.field-selector').on('change', function() { | |
| 86 | + fn_excelLoadAddActive(); | |
| 87 | + | |
| 88 | + setTimeout(() => { | |
| 89 | + var selectedFields = []; | |
| 90 | + var isDuplicate = false; | |
| 91 | + | |
| 92 | + if(tableExcel.getData().length < 1){ | |
| 93 | + alert('데이터 입력 후 선택해 주세요.'); | |
| 94 | + $(this).val(""); | |
| 95 | + fn_excelLoadRemoveActive(); | |
| 96 | + return false; | |
| 97 | + } | |
| 98 | + | |
| 99 | + // 중복체크 | |
| 100 | + $('.field-selector').each(function() { | |
| 101 | + var selectedField = $(this).val(); | |
| 102 | + if (selectedField) { | |
| 103 | + if (selectedFields.includes(selectedField)) { | |
| 104 | + alert("중복된 필드를 선택할 수 없습니다."); | |
| 105 | + $(this).val(""); // 중복 필드를 선택한 경우 빈 값으로 초기화 | |
| 106 | + isDuplicate = true; | |
| 107 | + return false; // 반복문 종료 | |
| 108 | + } | |
| 109 | + selectedFields.push(selectedField); | |
| 110 | + } | |
| 111 | + }); | |
| 112 | + | |
| 113 | + updateTableFields(tableExcel); | |
| 114 | + | |
| 115 | + // 필드가 휴대폰이면 열 중복체크 | |
| 116 | + if($(this).val() == 'addrFaxNo'){ | |
| 117 | + fn_faxDupl(tableExcel); | |
| 118 | + } | |
| 119 | + | |
| 120 | + fn_excelLoadRemoveActive(); | |
| 121 | + | |
| 122 | + }, 0); // 지연 없이 즉시 실행되도록 0ms 지연을 설정 | |
| 123 | + | |
| 124 | + }); | |
| 125 | + | |
| 126 | + // 추가버튼 | |
| 127 | + $('#btnAddrMassReg').click(function(){ | |
| 128 | + | |
| 129 | + if(tableExcel.getData().length < 1){ | |
| 130 | + alert("한 개 이상의 연락처를 입력하세요"); | |
| 131 | + return false; | |
| 132 | + } | |
| 133 | + | |
| 134 | + // tableExcel 그룹의 select 요소들을 확인 | |
| 135 | + var columns = tableExcel.getColumns(); | |
| 136 | + var isAddrFaxNoSelected = columns.some(column => column.getField() === 'addrFaxNo'); | |
| 137 | + | |
| 138 | + if (!isAddrFaxNoSelected) { | |
| 139 | + alert('팩스번호가 선택되지 않았습니다.'); | |
| 140 | + return false; | |
| 141 | + } | |
| 142 | + | |
| 143 | + var addrData = tableExcel.getData().map((row, index) => ({ | |
| 144 | + name: row.addrNm | |
| 145 | + , phone: removeDash(row.addrFaxNo) | |
| 146 | + })); | |
| 147 | + | |
| 148 | + // 기존 tableL의 데이터를 가져옵니다. | |
| 149 | + var existingData = tableL.getData(); | |
| 150 | + // 기존 데이터와 새로운 데이터를 합칩니다. | |
| 151 | + var combinedData = existingData.concat(addrData); | |
| 152 | + // 합쳐진 데이터를 tableL에 설정합니다. | |
| 153 | + tableL.setData(combinedData); | |
| 154 | + | |
| 155 | + var totRows = 0; // 좌측 받는사람 총 갯수 | |
| 156 | + totRows = tableL.getRows().length; | |
| 157 | + updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 158 | + | |
| 159 | + setAddrMassClose(); | |
| 160 | + $('.field-selector').each(function() { $(this).val(''); }); | |
| 161 | + $('#closeBtn').click(); | |
| 162 | + }); | |
| 163 | + | |
| 164 | + // 닫기버튼 | |
| 165 | + $('#closeBtn').click(function(){ | |
| 166 | + setAddrMassClose(); | |
| 167 | + }); | |
| 168 | + | |
| 169 | + // 닫기버튼 | |
| 170 | + $('#btnAddrMassClose').click(function(){ | |
| 171 | + setAddrMassClose(); | |
| 172 | + }); | |
| 173 | + | |
| 174 | + // excel 오류정보 테스트 | |
| 175 | + $(document).on('click', '#errorExcelBtn', function() { | |
| 176 | + if(tableError.getDataCount()<1){ | |
| 177 | + alert('오류 정보가 없습니다.'); | |
| 178 | + return false; | |
| 179 | + } | |
| 180 | + tableError.download("xlsx", "error_data.xlsx"); | |
| 181 | + }); | |
| 182 | +}); | |
| 183 | +//팝업 텍스트 더보기 클릭 시 펼쳐지고 숨겨짐 | |
| 184 | +function popMore(e){ | |
| 185 | + $(e).closest(".pop_more_cont").toggleClass("pop_more_click"); | |
| 186 | + | |
| 187 | + if($(e).closest(".pop_more_cont").is(".pop_more_click")){ | |
| 188 | + $(e).html('숨기기'); | |
| 189 | + $(e).append('<i></i>'); | |
| 190 | + }else { | |
| 191 | + $(e).html('더보기'); | |
| 192 | + $(e).append('<i></i>'); | |
| 193 | + } | |
| 194 | +} | |
| 195 | + | |
| 196 | +//엑셀등록 초기화 값 설정 | |
| 197 | +function setAddrMassClose() { | |
| 198 | + tableExcel.clearData(); | |
| 199 | + $("#excelRowTotCnt").text(0); //총건수 수정 | |
| 200 | + $("#excelRowDupCnt").text(0); //중복건수 수정 | |
| 201 | + $("#excelRowErrorCnt").text(0); //중복건수 수정 | |
| 202 | + dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 | |
| 203 | + addrMassDupliSaveList = null; | |
| 204 | + | |
| 205 | + $('#excelFile').val(''); //첨부파일 값 초기화 | |
| 206 | + | |
| 207 | + // popup 영역 | |
| 208 | + tableError.clearData(); | |
| 209 | + $("#errorPopDupCnt").text(0); // 중복 카운트 | |
| 210 | + $("#errorPopErrorCnt").text(0); // 에러 카운트 | |
| 211 | + $("#errorPopTotCnt").text(0); | |
| 212 | + $('.field-selector').each(function() { $(this).val(''); }); //select 선택란 초기화 | |
| 213 | +} | |
| 214 | + | |
| 215 | +//엑셀파일 업로드 | |
| 216 | +function excelFileChange(file) { | |
| 217 | + if (file) { | |
| 218 | + // 파일 크기 체크 (20MB) | |
| 219 | + const maxSize = 20 * 1024 * 1024; // 20MB in bytes | |
| 220 | + if (file.size > maxSize) { | |
| 221 | + alert('파일 크기는 20MB를 초과할 수 없습니다.'); | |
| 222 | + return; | |
| 223 | + } | |
| 224 | + | |
| 225 | + fn_excelLoadAddActive(); | |
| 226 | + var reader = new FileReader(); | |
| 227 | + var extension = file.name.split('.').pop().toLowerCase(); | |
| 228 | + reader.onload = function(e) { | |
| 229 | + setTimeout(() => { // 파일 읽기 완료 후 실행되도록 함 | |
| 230 | + if (extension === 'xlsx') { | |
| 231 | + var data = new Uint8Array(e.target.result); | |
| 232 | + var workbook = XLSX.read(data, {type: 'array'}); | |
| 233 | + var firstSheet = workbook.Sheets[workbook.SheetNames[0]]; | |
| 234 | + var jsonData = XLSX.utils.sheet_to_json(firstSheet, {header: 1}); | |
| 235 | + processExcelData(jsonData); | |
| 236 | + } else { | |
| 237 | + alert('지원되지 않는 파일 형식입니다.'); | |
| 238 | + } | |
| 239 | + fn_excelLoadRemoveActive(); | |
| 240 | + }, 0); // 지연 없이 즉시 실행되도록 0ms 지연을 설정 | |
| 241 | + }; | |
| 242 | + if (extension === 'xlsx') { | |
| 243 | + reader.readAsArrayBuffer(file); | |
| 244 | + } | |
| 245 | + } | |
| 246 | +} | |
| 247 | + | |
| 248 | +//엑셀 데이터 처리 함수 | |
| 249 | +function processExcelData(data) { | |
| 250 | + var keys = ['A', 'B']; | |
| 251 | + var tableData = []; | |
| 252 | + | |
| 253 | + data.slice(0).forEach((row, index) => { | |
| 254 | + var rowData = {}; | |
| 255 | + keys.forEach((key, idx) => { // index 변수명 변경 (내부와 외부에서 사용되므로 충돌 방지) | |
| 256 | + rowData[key] = (typeof row[idx] === 'string') ? row[idx].trim() : row[idx]; | |
| 257 | + }); | |
| 258 | + | |
| 259 | + tableData.push(rowData); | |
| 260 | + }); | |
| 261 | + | |
| 262 | + updateTable(tableData); | |
| 263 | +} | |
| 264 | + | |
| 265 | +//공통 테이블 업데이트 함수 | |
| 266 | +function updateTable(tableData) { | |
| 267 | + tableExcel.setColumns([ //Define Table Columns | |
| 268 | + {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, headerHozAlign:"center", hozAlign:"center", width:10, headerSort:false, cellClick:function(e, cell){ | |
| 269 | + cell.getRow().toggleSelect(); | |
| 270 | + } | |
| 271 | + } | |
| 272 | + ,{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:100} | |
| 273 | + ,{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:400, validator:["maxLength:100", "string"]} | |
| 274 | + ,{title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:400, validator:["maxLength:100", "string"]} | |
| 275 | + ]); | |
| 276 | + | |
| 277 | + // excelRowTotCnt 업데이트 | |
| 278 | + tableExcel.setData(tableData).then(() => { | |
| 279 | + document.getElementById("excelRowTotCnt").innerText = tableData.length; | |
| 280 | + }); | |
| 281 | + | |
| 282 | + fn_excelLoadRemoveActive(); | |
| 283 | +} | |
| 284 | + | |
| 285 | + | |
| 286 | +/* | |
| 287 | +* 타이틀 select 선택할때마다 실행해서 | |
| 288 | +* 데이터테이블 필드값 수정 | |
| 289 | +*/ | |
| 290 | +function updateTableFields(objTabul) { | |
| 291 | + var currentData = objTabul.getData(); | |
| 292 | + var columns = [ | |
| 293 | + {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", width:10, headerSort: false, cellClick: function(e, cell) { | |
| 294 | + cell.getRow().toggleSelect(); | |
| 295 | + }} | |
| 296 | + ,{formatter:"rownum", align:"center", title:"No", hozAlign:"center", headerHozAlign:"center", width:100} | |
| 297 | + ]; | |
| 298 | + | |
| 299 | + var fieldMapping = []; | |
| 300 | + $('.field-selector').each(function(index) { | |
| 301 | + var selectedField = $(this).val(); | |
| 302 | + var field = String.fromCharCode(65 + index); | |
| 303 | + if (selectedField) { | |
| 304 | + columns.push({ | |
| 305 | + title: field | |
| 306 | + , field: selectedField | |
| 307 | + , hozAlign: "center" | |
| 308 | + , headerHozAlign: "center" | |
| 309 | + , editor: false | |
| 310 | + , width: 400 | |
| 311 | + , validator: ["maxLength:100", "string"] | |
| 312 | + }); | |
| 313 | + fieldMapping.push(selectedField); | |
| 314 | + } else { | |
| 315 | + columns.push({ | |
| 316 | + title: field | |
| 317 | + , field: field | |
| 318 | + , hozAlign: "center" | |
| 319 | + , headerHozAlign: "center" | |
| 320 | + , editor: false | |
| 321 | + , width: 400 | |
| 322 | + , validator: ["maxLength:100", "string"] | |
| 323 | + }); | |
| 324 | + fieldMapping.push(field); | |
| 325 | + } | |
| 326 | + }); | |
| 327 | + | |
| 328 | + var updatedData = currentData.map(row => { | |
| 329 | + var newRow = {}; | |
| 330 | + fieldMapping.forEach((field, index) => { | |
| 331 | + newRow[field] = row[Object.keys(row)[index]] || ""; | |
| 332 | + }); | |
| 333 | + return newRow; | |
| 334 | + }); | |
| 335 | + | |
| 336 | + objTabul.setColumns(columns); | |
| 337 | + objTabul.setData(updatedData); | |
| 338 | +} | |
| 339 | + | |
| 340 | +/** | |
| 341 | + * @ 팩스번호 중복 데이터 | |
| 342 | + * */ | |
| 343 | +function fn_faxDupl(objTabul) { | |
| 344 | + | |
| 345 | + tableError.clearData(); | |
| 346 | + | |
| 347 | + var data = objTabul.getData(); | |
| 348 | + var phoneNumberChk = false; | |
| 349 | + var existingNumbers = new Set(); // 배열에서 Set으로 변경 | |
| 350 | + | |
| 351 | + let errorCount = 0; // 중복 번호 개수를 저장할 변수 | |
| 352 | + let duplicateCount = 0; // 중복 번호 개수를 저장할 변수 | |
| 353 | + | |
| 354 | + const errors = []; // 오류 데이터를 저장할 배열 | |
| 355 | + const newData = []; // 유효한 데이터만 저장할 새로운 배열 | |
| 356 | + | |
| 357 | + data.forEach((row, index) => { | |
| 358 | + | |
| 359 | + const number = row.addrFaxNo; | |
| 360 | + | |
| 361 | + // number가 null, undefined, 빈 문자열이거나 숫자인 경우 처리 | |
| 362 | + if (!number || (typeof number === 'string' && !number.trim())){ | |
| 363 | + console.log("number : ", number); | |
| 364 | + return; | |
| 365 | + } | |
| 366 | + | |
| 367 | + const formattedNumber = formatPhoneNumber(number); // 번호 표준화 | |
| 368 | + const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 | |
| 369 | + | |
| 370 | + if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크 | |
| 371 | + if (checkFaxNum(formattedNumber)) { // 유효성 검사 | |
| 372 | + row.addrFaxNo = formattedNumber; | |
| 373 | + existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 | |
| 374 | + newData.push(row); // 유효한 데이터만 새로운 배열에 추가 | |
| 375 | + } else { | |
| 376 | + // 오류: 유효성 통과 못함 | |
| 377 | + errorCount++; | |
| 378 | + errors.push({ | |
| 379 | + name: row.addrNm // 이름 | |
| 380 | + , phone: row.addrFaxNo // 팩스번호 | |
| 381 | + , result: "오류" // 결과 메시지 추가 | |
| 382 | + }); | |
| 383 | + } | |
| 384 | + } else { | |
| 385 | + // 중복 | |
| 386 | + duplicateCount++; | |
| 387 | + errors.push({ | |
| 388 | + name: row.addrNm // 이름 | |
| 389 | + , phone: row.addrFaxNo // 팩스번호 | |
| 390 | + , result: "오류" // 결과 메시지 추가 | |
| 391 | + }); | |
| 392 | + } | |
| 393 | + }); | |
| 394 | + | |
| 395 | + // data 배열을 newData 배열로 대체 | |
| 396 | + data = newData; | |
| 397 | + | |
| 398 | + | |
| 399 | + // 수정된 데이터로 테이블 업데이트 | |
| 400 | + objTabul.setData(data); | |
| 401 | + // 오류 총 카운트 | |
| 402 | + $("#excelRowTotCnt").text(objTabul.getDataCount()); | |
| 403 | + // 중복 카운트 | |
| 404 | + $("#excelRowDupCnt").text(duplicateCount); | |
| 405 | + // 에러 카운트 | |
| 406 | + $("#excelRowErrorCnt").text(errorCount); | |
| 407 | + | |
| 408 | + // popup 영역 | |
| 409 | + $("#errorPopTotCnt").text(objTabul.getDataCount()); | |
| 410 | + // 중복 카운트 | |
| 411 | + $("#errorPopDupCnt").text(duplicateCount); | |
| 412 | + // 에러 카운트 | |
| 413 | + $("#errorPopErrorCnt").text(errorCount); | |
| 414 | + | |
| 415 | + tableError.setData(errors); | |
| 416 | + | |
| 417 | + if(errorCount > 0){ | |
| 418 | + alert('휴대폰 형식에 맞지 않는 데이터는 삭제 후 업로드 됩니다.\nex) 발송불가 특수문자, 자릿수 오류 등'); | |
| 419 | + } | |
| 420 | +} |
--- src/main/webapp/js/user/fax/tabulator.js
+++ src/main/webapp/js/user/fax/tabulator.js
... | ... | @@ -1,23 +1,27 @@ |
| 1 | 1 |
|
| 2 | 2 |
$(document).ready(function (){
|
| 3 | 3 |
|
| 4 |
- //받는사람 연락처 내용 처리 |
|
| 5 |
- //Tabulator AJAX Data Loading |
|
| 4 |
+ //받는사람 연락처 Tabulator 설정 |
|
| 6 | 5 |
tableL = new Tabulator(".callList_box", {
|
| 7 | 6 |
height:"255px", |
| 8 |
- layout:"fitDataStretch", |
|
| 7 |
+ layout:"fitColumns", |
|
| 9 | 8 |
headerHozAlign:"center", |
| 10 | 9 |
validationMode:"highlight", |
| 11 | 10 |
placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional) |
| 12 | 11 |
resizableColumns:false, |
| 12 |
+ columnDefaults:{ // 공통설정
|
|
| 13 |
+ hozAlign: "center", |
|
| 14 |
+ headerHozAlign: "center", |
|
| 15 |
+ editor: "input", |
|
| 16 |
+ editor: false |
|
| 17 |
+ }, |
|
| 13 | 18 |
columns:[ //Define Table Columns |
| 14 |
- {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){
|
|
| 19 |
+ {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:5, headerSort:false, cellClick:function(e, cell){
|
|
| 15 | 20 |
cell.getRow().toggleSelect(); |
| 16 | 21 |
}}, |
| 17 |
- {title:"이름", hozAlign:"center", field:"name", editor:"input", validator:["maxLength:12"], cellEdited:function(cell){
|
|
| 18 |
- }}, |
|
| 19 |
- {title:"수신번호", hozAlign:"center", field:"phone", editor:"input", width:100, validator:["required","minLength:10", "maxLength:12", "regex:/[^0-9]/g, ''"], cellEdited:function(cell){
|
|
| 20 |
- //cell - cell component |
|
| 22 |
+ {title:"No", formatter:"rownum", align:"center", hozAlign:"center", width:60},
|
|
| 23 |
+ {title:"이름", field:"name", validator:["maxLength:12"]},
|
|
| 24 |
+ {title:"수신번호", field:"phone", validator:["required","minLength:10", "maxLength:12", "regex:/[^0-9]/g, ''"], cellEdited:function(cell){
|
|
| 21 | 25 |
fnDuplPhone(); |
| 22 | 26 |
}}, |
| 23 | 27 |
], |
... | ... | @@ -51,29 +55,23 @@ |
| 51 | 55 |
|
| 52 | 56 |
}); |
| 53 | 57 |
|
| 54 |
- |
|
| 55 |
- //주소록 불러오기 팝업 내용 |
|
| 56 |
- //Tabulator AJAX Data Loading |
|
| 58 |
+ //주소록 불러오기 팝업 Tabulator 설정 |
|
| 57 | 59 |
tableAddr = new Tabulator(".callAddr_box", {
|
| 58 | 60 |
height:"255px", |
| 59 | 61 |
layout:"fitColumns", |
| 60 | 62 |
headerHozAlign:"center", |
| 61 | 63 |
validationMode:"highlight", |
| 62 |
- placeholder:"주소록 그룹을 선택해 주세요.", //fit columns to width of table (optional) |
|
| 64 |
+ placeholder:"주소록 그룹을 선택해 주세요.", |
|
| 63 | 65 |
resizableColumns:false, |
| 66 |
+ progressiveLoad:"scroll", |
|
| 64 | 67 |
columns:[ //Define Table Columns |
| 65 |
- {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){
|
|
| 68 |
+ {formatter:"rowSelection", headerHozAlign:"center", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", width:10, headerSort:false, cellClick:function(e, cell){
|
|
| 66 | 69 |
cell.getRow().toggleSelect(); |
| 67 |
- } |
|
| 68 |
- }, |
|
| 69 |
- {title:"그룹명", hozAlign:"center", field:"addrGroupNm", editor:"input", width:200, validator:["required","minLength:2", "maxLength:40"]},
|
|
| 70 |
- {title:"이름", hozAlign:"center", field:"addrName", editor:"input", width:250, validator:["maxLength:12"]},
|
|
| 71 |
- {title:"수신자번호", hozAlign:"center", field:"addrPhone", editor:"input", width:300, validator:["required","minLength:10", "maxLength:11"]},
|
|
| 72 |
- // {title:"[*1*]", hozAlign:"center", field:"addrRep1", editor:"input", width:84, validator:["maxLength:40"]},
|
|
| 73 |
- // {title:"[*2*]", hozAlign:"center", field:"addrRep2", editor:"input", width:84, validator:["maxLength:40"]},
|
|
| 74 |
- // {title:"[*3*]", hozAlign:"center", field:"addrRep3", editor:"input", width:84, validator:["maxLength:40"]},
|
|
| 75 |
- // {title:"[*4*]", hozAlign:"center", field:"addrRep4", editor:"input", width:84, validator:["maxLength:40"]},
|
|
| 76 |
- |
|
| 70 |
+ }}, |
|
| 71 |
+ {formatter: "rownum", align: "center", title: "No", hozAlign: "center", headerHozAlign: "center", width: 60},
|
|
| 72 |
+ {title:"그룹명", hozAlign:"center", field:"groupNm", editor: false, width:200, validator:["required","minLength:2", "maxLength:40"]},
|
|
| 73 |
+ {title:"이름", hozAlign:"center", field:"name", editor:false, width:200, validator:["maxLength:12"]},
|
|
| 74 |
+ {title:"수신자번호", hozAlign:"center", field:"phone", editor:false, width:200, validator:["required","minLength:10", "maxLength:11"]},
|
|
| 77 | 75 |
], |
| 78 | 76 |
validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - 아직 잘 모르겠음
|
| 79 | 77 |
var valid = cell.isValid(); |
... | ... | @@ -94,8 +92,60 @@ |
| 94 | 92 |
} |
| 95 | 93 |
return value % parameters.addrPhone; |
| 96 | 94 |
}, |
| 97 |
- |
|
| 98 | 95 |
}); |
| 96 |
+ |
|
| 97 |
+ //엑셀 불러오기 팝업 Tabulator 설정 |
|
| 98 |
+ tableExcel = new Tabulator("#tabulator_excel", {
|
|
| 99 |
+ height:"255px", |
|
| 100 |
+ width:"100%", |
|
| 101 |
+ layout:"fitColumns", |
|
| 102 |
+ autoColumns:false, |
|
| 103 |
+ headerHozAlign:"center", |
|
| 104 |
+ validationMode:"highlight", |
|
| 105 |
+ clipboard:false, |
|
| 106 |
+ clipboardCopySelector:"table", |
|
| 107 |
+ clipboardPasteAction:"insert", // insert, update, replace |
|
| 108 |
+ placeholder:"Excel 파일을 업로드 해주세요.", //fit columns to width of table (optional) |
|
| 109 |
+ columns:[ //Define Table Columns |
|
| 110 |
+ {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, headerHozAlign:"center", hozAlign:"center", width:10, headerSort:false, cellClick:function(e, cell){
|
|
| 111 |
+ cell.getRow().toggleSelect(); |
|
| 112 |
+ }} |
|
| 113 |
+ ,{formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:100}
|
|
| 114 |
+ ,{title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:400, validator:["maxLength:100", "string"]}
|
|
| 115 |
+ ,{title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:400, validator:["maxLength:100", "string"]}
|
|
| 116 |
+ ], |
|
| 117 |
+ validationFailed:function(cell, value, parameters){ // 유효성 체크 함수
|
|
| 118 |
+ var valid = cell.isValid(); |
|
| 119 |
+ if(!valid){
|
|
| 120 |
+ alert("양식에 맞지 않는 정보가 입력되었습니다.");
|
|
| 121 |
+ |
|
| 122 |
+ //해당 셀 데이터 삭제 |
|
| 123 |
+ cell.setValue("");
|
|
| 124 |
+ } |
|
| 125 |
+ return value % parameters.phone; |
|
| 126 |
+ }, |
|
| 127 |
+ }); |
|
| 128 |
+ |
|
| 129 |
+ //엑셀 오류 주소록 상세 팝업 Tabulator 설정 |
|
| 130 |
+ tableError = new Tabulator("#tabulator_error", {
|
|
| 131 |
+ height:"255px", |
|
| 132 |
+ width:"100%", |
|
| 133 |
+ layout:"fitColumns", |
|
| 134 |
+ autoColumns:false, |
|
| 135 |
+ headerHozAlign:"center", |
|
| 136 |
+ validationMode:"highlight", |
|
| 137 |
+ clipboard:false, |
|
| 138 |
+ clipboardCopySelector:"table", |
|
| 139 |
+ clipboardPasteAction:"insert", // insert, update, replace |
|
| 140 |
+ placeholder:"등록 팝업에서 휴대폰을 선택 후 확인해주세요.", //fit columns to width of table (optional) |
|
| 141 |
+ columns:[ //Define Table Columns |
|
| 142 |
+ {title:"이름", field:"name", hozAlign:"center", headerHozAlign: "center", width:125},
|
|
| 143 |
+ {title:"휴대폰", field:"phone", hozAlign:"center", headerHozAlign: "center", width:158},
|
|
| 144 |
+ {title:"미등록 결과", field:"result", hozAlign:"center", headerHozAlign: "center", width:125}
|
|
| 145 |
+ ] |
|
| 146 |
+ }); |
|
| 147 |
+ |
|
| 148 |
+ |
|
| 99 | 149 |
|
| 100 | 150 |
//핸드폰 번호 Tabulator에서 수정시 중복 체크 |
| 101 | 151 |
function fnDuplPhone(){
|
... | ... | @@ -130,9 +180,7 @@ |
| 130 | 180 |
updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
| 131 | 181 |
|
| 132 | 182 |
} |
| 133 |
- |
|
| 134 | 183 |
} |
| 135 |
- |
|
| 136 | 184 |
} |
| 137 | 185 |
|
| 138 | 186 |
//받는사람 목록에 복사/붙여넣기 기능 처리 |
... | ... | @@ -324,7 +372,6 @@ |
| 324 | 372 |
alert("올바른 팩스 번호를 입력해 주세요.");
|
| 325 | 373 |
$('#callTo').focus();
|
| 326 | 374 |
return false; |
| 327 |
- |
|
| 328 | 375 |
} |
| 329 | 376 |
callToNum = callToNum.replaceAll("[^0-9]", "");
|
| 330 | 377 |
|
... | ... | @@ -338,11 +385,8 @@ |
| 338 | 385 |
for(var i=0; i < tableL.getRows().length; i++){
|
| 339 | 386 |
|
| 340 | 387 |
if(callToNum == data[i].getData().phone){
|
| 341 |
- |
|
| 342 | 388 |
dpCnt++; |
| 343 |
- |
|
| 344 | 389 |
} |
| 345 |
- |
|
| 346 | 390 |
} |
| 347 | 391 |
|
| 348 | 392 |
if(dpCnt > 0){
|
... | ... | @@ -360,9 +404,7 @@ |
| 360 | 404 |
var totLen = tableL.getRows().length; |
| 361 | 405 |
|
| 362 | 406 |
for(var i=0; i < totLen; i++){
|
| 363 |
- |
|
| 364 | 407 |
tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name});
|
| 365 |
- |
|
| 366 | 408 |
} |
| 367 | 409 |
|
| 368 | 410 |
//연락처 추가해 주기 |
... | ... | @@ -378,9 +420,7 @@ |
| 378 | 420 |
//totalPriceSum(totRows); |
| 379 | 421 |
|
| 380 | 422 |
$('#callTo').val("");
|
| 381 |
- |
|
| 382 | 423 |
} |
| 383 |
- |
|
| 384 | 424 |
}); |
| 385 | 425 |
|
| 386 | 426 |
|
... | ... | @@ -402,9 +442,7 @@ |
| 402 | 442 |
$("#rowDupCnt").text(0); //중복건수 수정
|
| 403 | 443 |
totalPriceSum(0); //결제 금액 수정 |
| 404 | 444 |
} |
| 405 |
- |
|
| 406 | 445 |
} |
| 407 |
- |
|
| 408 | 446 |
}); |
| 409 | 447 |
|
| 410 | 448 |
|
... | ... | @@ -415,7 +453,6 @@ |
| 415 | 453 |
|
| 416 | 454 |
alert("받는사람을 추가해 주세요.");
|
| 417 | 455 |
return false; |
| 418 |
- |
|
| 419 | 456 |
} |
| 420 | 457 |
|
| 421 | 458 |
var selectedData = tableL.getSelectedRows(); |
... | ... | @@ -441,23 +478,8 @@ |
| 441 | 478 |
|
| 442 | 479 |
var smsTxtArea = $('#smsTxtArea').val();
|
| 443 | 480 |
fn_priceClclt(); |
| 444 |
-// //일괄변환 문구 결제금액 처리 |
|
| 445 |
-// if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
| 446 |
-// || smsTxtArea.indexOf("[*1*]") > -1
|
|
| 447 |
-// || smsTxtArea.indexOf("[*2*]") > -1
|
|
| 448 |
-// || smsTxtArea.indexOf("[*3*]") > -1
|
|
| 449 |
-// || smsTxtArea.indexOf("[*4*]") > -1){
|
|
| 450 |
-// |
|
| 451 |
-// fnReplCell(); |
|
| 452 |
-// }else{
|
|
| 453 |
-// //결제 금액 구하기 |
|
| 454 |
-// totalPriceSum(totRows); |
|
| 455 |
-// } |
|
| 456 |
- |
|
| 457 | 481 |
} |
| 458 |
- |
|
| 459 | 482 |
} |
| 460 |
- |
|
| 461 | 483 |
}); |
| 462 | 484 |
|
| 463 | 485 |
//주소록 불러오기 버튼 클릭시 |
... | ... | @@ -473,7 +495,6 @@ |
| 473 | 495 |
} |
| 474 | 496 |
|
| 475 | 497 |
$("#addrGroupLoad").load("/web/mjon/fax/addr/selectFaxAddrGroupListAjaxView.do", "" ,function(response, status, xhr){
|
| 476 |
-// $("#addrGroupLoad").load("/web/mjon/fax/addr/faxAddrGroupListAjax.do", "" ,function(response, status, xhr){
|
|
| 477 | 498 |
//리스트 스크롤 처리해주기 |
| 478 | 499 |
$(".adr_pop_list").mCustomScrollbar({
|
| 479 | 500 |
axis: 'y', |
... | ... | @@ -507,17 +528,7 @@ |
| 507 | 528 |
$("input:checkbox[name='latAddrChk']:checked").each(function(index){
|
| 508 | 529 |
|
| 509 | 530 |
var chkPhone = $(this).val(); |
| 510 |
- |
|
| 511 |
- // if(!checkHpNum(chkPhone)){
|
|
| 512 |
- |
|
| 513 |
- // alert("올바른 전화번호가 아닙니다.");
|
|
| 514 |
- // return false; |
|
| 515 |
- |
|
| 516 |
- // }else{
|
|
| 517 |
- |
|
| 518 |
- addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
|
| 519 |
- |
|
| 520 |
- // } |
|
| 531 |
+ addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
|
| 521 | 532 |
|
| 522 | 533 |
}); |
| 523 | 534 |
|
... | ... | @@ -531,34 +542,16 @@ |
| 531 | 542 |
alert("연락처를 선택해주세요.");
|
| 532 | 543 |
return false; |
| 533 | 544 |
} |
| 534 |
- |
|
| 535 |
- //중복연락처 제거 |
|
| 536 |
- //var removeDuplData = dupliPhoneData(addPhoneList); |
|
| 537 |
- |
|
| 538 |
- //받는사람 목록에 추가 |
|
| 539 |
- //tableL.addData(removeDuplData); |
|
| 540 |
- |
|
| 541 |
- //총 받는사람 수 계산 |
|
| 542 |
- //totRows = tableL.getRows().length; |
|
| 543 |
- //updateTotCnt(totRows); |
|
| 544 |
- |
|
| 545 |
- //결제 금액 구하기 |
|
| 546 |
- //totalPriceSum(totRows); |
|
| 547 |
- |
|
| 548 | 545 |
}); |
| 549 | 546 |
|
| 550 | 547 |
//최근전송내역 팝업 선택 취소 버튼 처리 |
| 551 | 548 |
$(document).on('click', '#latestCancelPhone', function (){
|
| 552 |
- |
|
| 553 | 549 |
$("input[name=latAddrChk]").prop("checked", false);
|
| 554 |
- |
|
| 555 | 550 |
}); |
| 556 | 551 |
|
| 557 | 552 |
//최근전송내역 팝업 삭제 버튼 처리 |
| 558 | 553 |
$(document).on('click', '#latestAddrDel', function (){
|
| 559 |
- |
|
| 560 | 554 |
$(this).parent("#latestLi").remove();
|
| 561 |
- |
|
| 562 | 555 |
}); |
| 563 | 556 |
|
| 564 | 557 |
//자주보내는 번호 팝업 선택추가 버튼 처리(체크내역 받는사람 리스트로 추가해주기) |
... | ... | @@ -567,20 +560,8 @@ |
| 567 | 560 |
var addPhoneList = []; //신규로 추가할 전화번호 저장변수 |
| 568 | 561 |
|
| 569 | 562 |
$("input:checkbox[name='bookAddrChk']:checked").each(function(index){
|
| 570 |
- |
|
| 571 | 563 |
var chkPhone = $(this).val(); |
| 572 |
- |
|
| 573 |
-// if(!checkHpNum(chkPhone)){
|
|
| 574 |
-// |
|
| 575 |
-// alert("올바른 전화번호가 아닙니다.");
|
|
| 576 |
-// return false; |
|
| 577 |
-// |
|
| 578 |
-// }else{
|
|
| 579 |
- |
|
| 580 |
- addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
|
| 581 |
- |
|
| 582 |
-// } |
|
| 583 |
- |
|
| 564 |
+ addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
|
| 584 | 565 |
}); |
| 585 | 566 |
|
| 586 | 567 |
if(addPhoneList.length > 0){
|
... | ... | @@ -592,20 +573,6 @@ |
| 592 | 573 |
alert("연락처를 선택해주세요.");
|
| 593 | 574 |
return false; |
| 594 | 575 |
} |
| 595 |
- |
|
| 596 |
- //중복연락처 제거 |
|
| 597 |
- //var removeDuplData = dupliPhoneData(addPhoneList); |
|
| 598 |
- |
|
| 599 |
- //받는사람 목록에 추가 |
|
| 600 |
- //tableL.addData(removeDuplData); |
|
| 601 |
- |
|
| 602 |
- //총 받는사람 수 계산 |
|
| 603 |
- //totRows = tableL.getRows().length; |
|
| 604 |
- //updateTotCnt(totRows); |
|
| 605 |
- |
|
| 606 |
- //결제 금액 구하기 |
|
| 607 |
- //totalPriceSum(totRows); |
|
| 608 |
- |
|
| 609 | 576 |
}); |
| 610 | 577 |
|
| 611 | 578 |
//자주보내는 번호 팝업 선택 취소 버튼 처리 |
... | ... | @@ -651,47 +618,31 @@ |
| 651 | 618 |
for(var i=0; i < totLen; i++){
|
| 652 | 619 |
|
| 653 | 620 |
var cellValue = invalid[i].getValue(); |
| 654 |
- |
|
| 655 | 621 |
if(i == 0){
|
| 656 |
- |
|
| 657 | 622 |
errMsg = cellValue; |
| 658 |
- |
|
| 659 | 623 |
}else{
|
| 660 |
- |
|
| 661 | 624 |
errMsg = errMsg +", "+ cellValue; |
| 662 |
- |
|
| 663 | 625 |
} |
| 664 |
- |
|
| 665 | 626 |
} |
| 666 | 627 |
|
| 667 | 628 |
if(errMsg == "" || errMsg == null){
|
| 668 |
- |
|
| 669 | 629 |
alert("내용에 오류가 있습니다.");
|
| 670 | 630 |
return false; |
| 671 |
- |
|
| 672 | 631 |
}else{
|
| 673 |
- |
|
| 674 | 632 |
alert(errMsg + "의 내용에 오류가 있습니다."); |
| 675 | 633 |
return false; |
| 676 |
- |
|
| 677 | 634 |
} |
| 678 | 635 |
|
| 679 | 636 |
}else{
|
| 680 |
- |
|
| 681 | 637 |
alert("오류 데이터가 없습니다.");
|
| 682 | 638 |
return false; |
| 683 |
- |
|
| 684 | 639 |
} |
| 685 | 640 |
|
| 686 | 641 |
}else{
|
| 687 |
- |
|
| 688 | 642 |
alert("연락처를 입력해 주세요.");
|
| 689 | 643 |
return false; |
| 690 |
- |
|
| 691 | 644 |
} |
| 692 |
- |
|
| 693 | 645 |
}); |
| 694 |
- |
|
| 695 | 646 |
}); |
| 696 | 647 |
|
| 697 | 648 |
var tableErrorData = []; |
... | ... | @@ -700,19 +651,15 @@ |
| 700 | 651 |
|
| 701 | 652 |
//전체 데이터 갯수 구하는 함수 |
| 702 | 653 |
function updateTotCnt(data){
|
| 703 |
- |
|
| 704 | 654 |
$("#rowTotCnt").text(data);
|
| 705 |
- |
|
| 706 | 655 |
} |
| 707 | 656 |
|
| 708 | 657 |
//주소록 불러오기에서 수신자 리스트 tabulator에 데이터 추가해주기 |
| 709 | 658 |
function addPhoneInfo(data){
|
| 710 | 659 |
|
| 711 | 660 |
if(data == null){
|
| 712 |
- |
|
| 713 | 661 |
alert("연락처 정보가 없습니다.");
|
| 714 | 662 |
return; |
| 715 |
- |
|
| 716 | 663 |
}else{
|
| 717 | 664 |
|
| 718 | 665 |
var idx = 0; |
... | ... | @@ -730,9 +677,7 @@ |
| 730 | 677 |
|
| 731 | 678 |
//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. |
| 732 | 679 |
for(var i=0; i < newData.length; i++){
|
| 733 |
- |
|
| 734 | 680 |
tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name});
|
| 735 |
- |
|
| 736 | 681 |
} |
| 737 | 682 |
|
| 738 | 683 |
var temp = tableData.length; |
... | ... | @@ -748,24 +693,7 @@ |
| 748 | 693 |
|
| 749 | 694 |
var smsTxtArea = $('#smsTxtArea').val();
|
| 750 | 695 |
fn_priceClclt(); |
| 751 |
- //일괄변환 문구 결제금액 처리 |
|
| 752 |
-// if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
| 753 |
-// || smsTxtArea.indexOf("[*1*]") > -1
|
|
| 754 |
-// || smsTxtArea.indexOf("[*2*]") > -1
|
|
| 755 |
-// || smsTxtArea.indexOf("[*3*]") > -1
|
|
| 756 |
-// || smsTxtArea.indexOf("[*4*]") > -1){
|
|
| 757 |
-// |
|
| 758 |
-// fnReplCell(); |
|
| 759 |
-// |
|
| 760 |
-// }else{
|
|
| 761 |
-// |
|
| 762 |
-// //결제 금액 구하기 |
|
| 763 |
-// totalPriceSum(totRows); |
|
| 764 |
-// |
|
| 765 |
-// } |
|
| 766 |
- |
|
| 767 | 696 |
} |
| 768 |
- |
|
| 769 | 697 |
} |
| 770 | 698 |
|
| 771 | 699 |
|
--- src/main/webapp/publish/css/content.css
+++ src/main/webapp/publish/css/content.css
... | ... | @@ -1466,6 +1466,15 @@ |
| 1466 | 1466 |
.loading_layer .loading_container .bar {position:absolute;left:0;top:0;width:100%;height:100%;border:6px solid #fff;border-top-color:transparent;border-bottom-color:transparent;border-radius:60px;box-sizing:border-box;animation:rotate-loading 1.5s linear infinite;}
|
| 1467 | 1467 |
.loading_layer .loading_container .text {font-size:15px;line-height:108px;text-align:center;color:#fff;animation:text-loading 1s ease-in infinite;}
|
| 1468 | 1468 |
|
| 1469 |
+ |
|
| 1470 |
+.loading_execl_layer {display:none;position:fixed;left:0;top:0;width:100%;height:100%;z-index:1000000;}
|
|
| 1471 |
+.loading_execl_layer.active {display:block;}
|
|
| 1472 |
+.loading_execl_layer:after {content:'';display:block;width:100%;height:100%;background:#000;opacity:0.5;filter:opacity(50);}
|
|
| 1473 |
+.loading_execl_layer .loading_container {position:absolute;left:50%;top:50%;width:110px;height:110px;transform:translate(-50%,-50%);z-index:1;}
|
|
| 1474 |
+.loading_execl_layer .loading_container .bar {position:absolute;left:0;top:0;width:100%;height:100%;border:6px solid #fff;border-top-color:transparent;border-bottom-color:transparent;border-radius:60px;box-sizing:border-box;animation:rotate-loading 1.5s linear infinite;}
|
|
| 1475 |
+.loading_execl_layer .loading_container .text {font-size:15px;line-height:108px;text-align:center;color:#fff;animation:text-loading 1s ease-in infinite;}
|
|
| 1476 |
+ |
|
| 1477 |
+ |
|
| 1469 | 1478 |
.upload_area .loading_layer{position: absolute;}
|
| 1470 | 1479 |
.upload_area .loading_layer.active+p,.upload_area .loading_layer.active+p+.cf_text_wrap{opacity: 0;}
|
| 1471 | 1480 |
|
--- src/main/webapp/publish/css/popupLayer.css
+++ src/main/webapp/publish/css/popupLayer.css
... | ... | @@ -1202,6 +1202,9 @@ |
| 1202 | 1202 |
.file_upload_wrap .file_add.upload_area p{display:block;}
|
| 1203 | 1203 |
.file_upload_wrap .btnType.c3{position:unset;height:82px;}
|
| 1204 | 1204 |
|
| 1205 |
+.file_upload_wrap .file_add.exel_upload_area{display:flex;width:78%;margin:0;align-items:center;justify-content:center;}
|
|
| 1206 |
+.file_upload_wrap .file_add.exel_upload_area p{display:block;}
|
|
| 1207 |
+ |
|
| 1205 | 1208 |
.adr_layer.adr_popup01 .btn_list_detail {width:23px;height:23px;margin:-3px 0 0 5px;border:1px solid #d5d5d5;border-radius:5px;}
|
| 1206 | 1209 |
.adr_layer.adr_popup01 .btn_list_detail img{width:69%;height:auto;margin:-3.5px 0 0 0;}
|
| 1207 | 1210 |
.adr_layer.adr_popup14 .table_top{display:flex;align-items:center;justify-content:space-between;}
|
--- src/main/webapp/publish/js/content.js
+++ src/main/webapp/publish/js/content.js
... | ... | @@ -1571,3 +1571,11 @@ |
| 1571 | 1571 |
function fn_loadRemoveActive(){
|
| 1572 | 1572 |
$('.loading_layer').removeClass('active');
|
| 1573 | 1573 |
} |
| 1574 |
+ |
|
| 1575 |
+function fn_excelLoadAddActive(){
|
|
| 1576 |
+ $('.loading_execl_layer').addClass('active');
|
|
| 1577 |
+} |
|
| 1578 |
+ |
|
| 1579 |
+function fn_excelLoadRemoveActive(){
|
|
| 1580 |
+ $('.loading_execl_layer').removeClass('active');
|
|
| 1581 |
+} |
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?