최신 수정내용 포멧 수정, 메모 maxlength 25 추가, 휴대폰등록 최대 5개 ip등록 최대 10개 수정
@78837eecf848e05afde63b90912439093b1cb4a3
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
... | ... | @@ -1107,7 +1107,7 @@ |
| 1107 | 1107 |
<select id="mberManageDAO.findTopByregDateFromCertLog" parameterClass="authCertVO" resultClass="String"> |
| 1108 | 1108 |
|
| 1109 | 1109 |
SELECT |
| 1110 |
- REGDATE |
|
| 1110 |
+ DATE_FORMAT(REGDATE, '%Y-%m-%d %T') AS regdate |
|
| 1111 | 1111 |
FROM |
| 1112 | 1112 |
mj_cert_log |
| 1113 | 1113 |
WHERE |
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
... | ... | @@ -1697,21 +1697,11 @@ |
| 1697 | 1697 |
<button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button> |
| 1698 | 1698 |
<button type="button" class="btnType btnType2" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button> |
| 1699 | 1699 |
|
| 1700 |
-<!-- <div class="security_box"> --> |
|
| 1701 |
-<%-- <a href="<c:out value="/web/user/mberSecureLogin.do"/>"><p class="title"><i class="icon_lock"></i>보안로그인</p></a> --%> |
|
| 1702 |
-<!-- <a href="#" id="secuLoginFlag" class="state"> </a> --> |
|
| 1703 |
- <!-- <a href="#" class="state off">OFF</a> --> |
|
| 1704 |
-<!-- </div> --> |
|
| 1705 |
- |
|
| 1706 | 1700 |
|
| 1707 | 1701 |
<div class="security_box"> |
| 1708 | 1702 |
<a href="<c:out value="/web/user/mberSecureLogin.do"/>" class="title">보안로그인</a><!-- 보안로그인 클릭시 보안로그인 홈페이지로 --> |
| 1709 | 1703 |
<a href="#" id="secuLoginFlag" class="state"></a><!-- ON/OFF 클릭시 이벤트 발생 --> |
| 1710 | 1704 |
</div> |
| 1711 |
-<!-- <div class="security_box green_box"> --> |
|
| 1712 |
-<!-- <a href="#" class="title">보안로그인</a> --> |
|
| 1713 |
-<!-- <a href="#" class="state on">ON</a> --> |
|
| 1714 |
-<!-- </div> --> |
|
| 1715 | 1705 |
|
| 1716 | 1706 |
|
| 1717 | 1707 |
</div> |
... | ... | @@ -1720,7 +1710,7 @@ |
| 1720 | 1710 |
<div class="holdingsum_box"> |
| 1721 | 1711 |
<i></i> |
| 1722 | 1712 |
<fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" />
|
| 1723 |
- <p>보유잔액<em>(캐시)</em> <span class="fwMd" id="hdUserMoney"><c:out value="${commaPrice}"/></span>원</p>
|
|
| 1713 |
+ <p>보유잔액<!-- <em>(캐시)</em> --> <span class="fwMd" id="hdUserMoney"><c:out value="${commaPrice}"/></span>원</p>
|
|
| 1724 | 1714 |
<c:if test="${prePaymentYn eq 'N'}">
|
| 1725 | 1715 |
<dl> |
| 1726 | 1716 |
<dd>후불제 고객의 보유잔액(캐시)은 당월 발송 가능<br>금액을 말하며 <span>매월 1일 자동으로 충전</span>됩니다.</dd> |
... | ... | @@ -1741,14 +1731,14 @@ |
| 1741 | 1731 |
<div class="point"> |
| 1742 | 1732 |
<i></i> |
| 1743 | 1733 |
<fmt:formatNumber type="number" maxFractionDigits="3" value="${userPoint}" var="commaPoint" />
|
| 1744 |
- <p><em>적립</em>포인트 <span class="fwMd"><c:out value="${commaPoint}"/></span>원</p>
|
|
| 1734 |
+ <p><!-- <em>적립</em> -->포인트 <span class="fwMd"><c:out value="${commaPoint}"/></span>원</p>
|
|
| 1745 | 1735 |
<button type="button" data-tooltip="popup04" class="btnType btnType3">교환</button> |
| 1746 | 1736 |
</div> |
| 1747 | 1737 |
</div> |
| 1748 |
- <div class="event"> |
|
| 1738 |
+ <!-- <div class="event"> |
|
| 1749 | 1739 |
<span><i></i>이달의 이벤트</span> |
| 1750 | 1740 |
<button type="button" class="btnType btnType2" onclick="location.href='/web/cop/bbs/EventList.do'">GO</button> |
| 1751 |
- </div> |
|
| 1741 |
+ </div> --> |
|
| 1752 | 1742 |
</div> |
| 1753 | 1743 |
<!-- <div class="login_right"> |
| 1754 | 1744 |
<button type="button" data-tooltip="popupJunk" class="btnType btnType14 tab1"><i></i>통신사 스팸규격안내</button> |
--- src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
... | ... | @@ -84,6 +84,14 @@ |
| 84 | 84 |
alert("핸드폰번호를 입력해주세요.");
|
| 85 | 85 |
return; |
| 86 | 86 |
} |
| 87 |
+ |
|
| 88 |
+ // 2. 휴대폰 번호 유효성 검사 |
|
| 89 |
+ const phoneRegex = /^(010(\d{3}\d{4}|\d{4}\d{4})|011(\d{3}\d{4}|\d{4}\d{4}))$/;
|
|
| 90 |
+ if (!phoneRegex.test(certReqPhone)) {
|
|
| 91 |
+ alert("유효한 핸드폰 번호를 입력해주세요.");
|
|
| 92 |
+ return; |
|
| 93 |
+ } |
|
| 94 |
+ |
|
| 87 | 95 |
var params = {"mbtlnum" : certReqPhone }
|
| 88 | 96 |
$.ajax({
|
| 89 | 97 |
type: "POST", |
... | ... | @@ -159,12 +167,46 @@ |
| 159 | 167 |
|
| 160 | 168 |
// IP 추가 버튼 클릭 시 tr 추가 |
| 161 | 169 |
$(".btn_ip_plus").click(function () {
|
| 170 |
+ |
|
| 171 |
+ var chk = false; |
|
| 172 |
+ |
|
| 173 |
+ $.ajax({
|
|
| 174 |
+ type: "POST", |
|
| 175 |
+ url: "/cert/ip/selectMberCertIpList.do", |
|
| 176 |
+ data: null, |
|
| 177 |
+ dataType:'json', |
|
| 178 |
+ async: false, |
|
| 179 |
+ success: function (returnData) {
|
|
| 180 |
+ console.log('returnData : ', returnData);
|
|
| 181 |
+ if (returnData.status === "OK") {
|
|
| 182 |
+ const objects = returnData.object; // 배열 데이터 |
|
| 183 |
+ |
|
| 184 |
+ // 배열의 개수 구하기 |
|
| 185 |
+ const count = objects.length; |
|
| 186 |
+ console.log('count :', count);
|
|
| 187 |
+ if(count > 9){
|
|
| 188 |
+ alert("접속 IP 등록은 10개까지 가능합니다.");
|
|
| 189 |
+ chk = true; |
|
| 190 |
+ return false; |
|
| 191 |
+ } |
|
| 192 |
+ } else {
|
|
| 193 |
+ alert("데이터를 불러오는 데 실패했습니다.");
|
|
| 194 |
+ } |
|
| 195 |
+ }, |
|
| 196 |
+ error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
|
| 197 |
+ }); |
|
| 198 |
+ |
|
| 199 |
+ if(chk){
|
|
| 200 |
+ return false; |
|
| 201 |
+ } |
|
| 202 |
+ |
|
| 203 |
+ |
|
| 162 | 204 |
// 추가할 HTML 구조 |
| 163 | 205 |
const ipTr = ` |
| 164 | 206 |
<tr class="ip-new"> |
| 165 | 207 |
<td><input type="text" class="input_text" |
| 166 | 208 |
oninput="this.value = this.value.replace(/[^0-9.]/g, '');" maxlength="15"/></td> |
| 167 |
- <td><input type="text" class="input_text"></td> |
|
| 209 |
+ <td><input type="text" maxLength="25" class="input_text"></td> |
|
| 168 | 210 |
<td>-</td> |
| 169 | 211 |
<td> |
| 170 | 212 |
<button type="button" class="btnType btnType5" id="ipRegBtn">등록</button> |
... | ... | @@ -253,13 +295,43 @@ |
| 253 | 295 |
|
| 254 | 296 |
// td 내용을 input 필드로 변경 |
| 255 | 297 |
$aliasTd.html('<input type="text" class="input_text" maxlength="12" value="' + aliasValue + '">');
|
| 256 |
- $memoTd.html('<input type="text" class="input_text" value="' + memoValue + '">');
|
|
| 298 |
+ $memoTd.html('<input type="text" class="input_text" maxlength="25" value="' + memoValue + '">');
|
|
| 257 | 299 |
|
| 258 | 300 |
// aliasTd 내의 input 필드에 포커스 설정 |
| 259 | 301 |
const $aliasInput = $aliasTd.find('.input_text');
|
| 260 | 302 |
$aliasInput.focus().val($aliasInput.val()); // 포커스 후 커서를 맨 끝으로 이동 |
| 261 | 303 |
|
| 262 | 304 |
$(this).removeClass("phoneModiBtn").attr("onclick", "fn_phoneSave(this);").text("저장");
|
| 305 |
+ }); |
|
| 306 |
+ |
|
| 307 |
+ $(document).on('click', '#phonePlus', function () {
|
|
| 308 |
+ |
|
| 309 |
+ $.ajax({
|
|
| 310 |
+ type: "POST", |
|
| 311 |
+ url: "/cert/phone/selectMberCertPhoneList.do", |
|
| 312 |
+ data: null, |
|
| 313 |
+ dataType:'json', |
|
| 314 |
+ async: false, |
|
| 315 |
+ success: function (returnData) {
|
|
| 316 |
+ console.log('returnData : ', returnData);
|
|
| 317 |
+ if (returnData.status === "OK") {
|
|
| 318 |
+ const objects = returnData.object; // 배열 데이터 |
|
| 319 |
+ |
|
| 320 |
+ // 배열의 개수 구하기 |
|
| 321 |
+ const count = objects.length; |
|
| 322 |
+ console.log('count :', count);
|
|
| 323 |
+ if(count < 5){
|
|
| 324 |
+ $('#phonePlusPopupOpen').click()
|
|
| 325 |
+ }else{
|
|
| 326 |
+ alert("인증 휴대폰 번호는 5개까지 등록 가능합니다.");
|
|
| 327 |
+ return false; |
|
| 328 |
+ } |
|
| 329 |
+ } else {
|
|
| 330 |
+ alert("데이터를 불러오는 데 실패했습니다.");
|
|
| 331 |
+ } |
|
| 332 |
+ }, |
|
| 333 |
+ error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
|
| 334 |
+ }); |
|
| 263 | 335 |
}); |
| 264 | 336 |
|
| 265 | 337 |
|
... | ... | @@ -368,33 +440,43 @@ |
| 368 | 440 |
// tbody의 기존 내용 삭제 |
| 369 | 441 |
const $tbody = $("#ipTable tbody");
|
| 370 | 442 |
$tbody.empty(); |
| 371 |
- |
|
| 372 |
- // 배열 데이터를 기반으로 tr 생성 후 tbody에 추가 |
|
| 373 |
- $.each(objects, function(index, obj) {
|
|
| 374 |
- const $tr = $("<tr></tr>"); // tr 요소 생성
|
|
| 375 |
- |
|
| 376 |
- // 각 td 요소 생성 |
|
| 377 |
- const $certIp = $("<td></td>").text(obj.certIp || "");
|
|
| 378 |
- const $certMemo = $("<td></td>").text(obj.certMemo || "");
|
|
| 379 |
- const $frstRegistPnttm = $("<td></td>").text(obj.frstRegistPnttm || "등록되지 않음");
|
|
| 380 |
- const $deleteBtn = $("<button></button>")
|
|
| 381 |
- .addClass("btnType btn_text btn_lightgray fill btn_28")
|
|
| 382 |
- .text("삭제")
|
|
| 383 |
- .attr("type", "button")
|
|
| 384 |
- .attr("id", "ipDelBtn")
|
|
| 385 |
- .on("click", function() {
|
|
| 386 |
- deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행 |
|
| 387 |
- }); |
|
| 388 |
- |
|
| 389 |
- // 관리 버튼을 감쌀 td 생성 |
|
| 390 |
- const $deleteTd = $("<td></td>").append($deleteBtn);
|
|
| 391 |
- |
|
| 392 |
- // tr에 td 추가 |
|
| 393 |
- $tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd); |
|
| 394 |
- |
|
| 395 |
- // tbody에 tr 추가 |
|
| 396 |
- $tbody.append($tr); |
|
| 397 |
- }); |
|
| 443 |
+ if (objects.length === 0) {
|
|
| 444 |
+ // 데이터가 없을 때 tr과 td 추가 |
|
| 445 |
+ const $emptyRow = $("<tr></tr>").append(
|
|
| 446 |
+ $("<td></td>")
|
|
| 447 |
+ .attr("colspan", 4)
|
|
| 448 |
+ .text("등록된 IP 주소가 없습니다.")
|
|
| 449 |
+ .addClass("empty-row") // 스타일을 추가할 경우
|
|
| 450 |
+ ); |
|
| 451 |
+ $tbody.append($emptyRow); |
|
| 452 |
+ } else {
|
|
| 453 |
+ // 배열 데이터를 기반으로 tr 생성 후 tbody에 추가 |
|
| 454 |
+ $.each(objects, function(index, obj) {
|
|
| 455 |
+ const $tr = $("<tr></tr>"); // tr 요소 생성
|
|
| 456 |
+ |
|
| 457 |
+ // 각 td 요소 생성 |
|
| 458 |
+ const $certIp = $("<td></td>").text(obj.certIp || "");
|
|
| 459 |
+ const $certMemo = $("<td></td>").text(obj.certMemo || "");
|
|
| 460 |
+ const $frstRegistPnttm = $("<td></td>").text(obj.frstRegistPnttm || "등록되지 않음");
|
|
| 461 |
+ const $deleteBtn = $("<button></button>")
|
|
| 462 |
+ .addClass("btnType btn_text btn_lightgray fill btn_28")
|
|
| 463 |
+ .text("삭제")
|
|
| 464 |
+ .attr("type", "button")
|
|
| 465 |
+ .attr("id", "ipDelBtn")
|
|
| 466 |
+ .on("click", function() {
|
|
| 467 |
+ deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행 |
|
| 468 |
+ }); |
|
| 469 |
+ |
|
| 470 |
+ // 관리 버튼을 감쌀 td 생성 |
|
| 471 |
+ const $deleteTd = $("<td></td>").append($deleteBtn);
|
|
| 472 |
+ |
|
| 473 |
+ // tr에 td 추가 |
|
| 474 |
+ $tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd); |
|
| 475 |
+ |
|
| 476 |
+ // tbody에 tr 추가 |
|
| 477 |
+ $tbody.append($tr); |
|
| 478 |
+ }); |
|
| 479 |
+ } |
|
| 398 | 480 |
} else {
|
| 399 | 481 |
alert("데이터를 불러오는 데 실패했습니다.");
|
| 400 | 482 |
} |
... | ... | @@ -591,6 +673,13 @@ |
| 591 | 673 |
}); |
| 592 | 674 |
} |
| 593 | 675 |
|
| 676 |
+ |
|
| 677 |
+function fn_phonePopClean(){
|
|
| 678 |
+ console.log('ddd')
|
|
| 679 |
+ $('#certReqPhone').val('');
|
|
| 680 |
+ $('#certNumber').val('');
|
|
| 681 |
+} |
|
| 682 |
+ |
|
| 594 | 683 |
function linkPage(pageNo){
|
| 595 | 684 |
var listForm = document.listForm ; |
| 596 | 685 |
listForm.pageIndex.value = pageNo ; |
... | ... | @@ -615,7 +704,7 @@ |
| 615 | 704 |
<div class="popup-com certify_layer popup05" tabindex="0" data-tooltip-con="popup05" data-focus="popup05" data-focus-prev="popup05-close" style="width: 500px;"> |
| 616 | 705 |
<div class="popup_heading"> |
| 617 | 706 |
<p>휴대폰 인증</p> |
| 618 |
- <button type="button" class="tooltip-close" data-focus="popup05-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 707 |
+ <button type="button" class="tooltip-close" data-focus="popup05-close" onclick="fn_phonePopClean()"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> |
|
| 619 | 708 |
</div> |
| 620 | 709 |
<div class="layer_in"> |
| 621 | 710 |
<div class="hascont"> |
... | ... | @@ -640,7 +729,7 @@ |
| 640 | 729 |
<th>인증번호</th> |
| 641 | 730 |
<td> |
| 642 | 731 |
<label for="" class="label">인증번호 입력</label> |
| 643 |
- <input type="text" placeholder="인증번호 6자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 6자리 입력'" class="inputLight" style="width: 200px;"> |
|
| 732 |
+ <input type="text" placeholder="인증번호 6자리 입력" id="certNumber" maxlength="7" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 6자리 입력'" class="inputLight" style="width: 200px;"> |
|
| 644 | 733 |
<button type="button" id="certConfirmBtn" class="btnType btnType6" style="width:90px">확인</button> |
| 645 | 734 |
</td> |
| 646 | 735 |
</tr> |
... | ... | @@ -733,7 +822,8 @@ |
| 733 | 822 |
<p>인증에 사용할 휴대폰번호를 추가로 등록하여 관리할 수 있습니다. <br> |
| 734 | 823 |
(등록 및 삭제 시 휴대폰 본인인증 필요)</p> |
| 735 | 824 |
</div> |
| 736 |
- <button type="button" data-tooltip="popup05" class="btn_plus"><img src="/publish/images/content/mypage_plus.png" alt="더보기"></button> |
|
| 825 |
+ <button type="button" id="phonePlus" class="btn_plus"><img src="/publish/images/content/mypage_plus.png" alt="더보기"></button> |
|
| 826 |
+ <input type="hidden" data-tooltip="popup05" id="phonePlusPopupOpen"/> |
|
| 737 | 827 |
</div> |
| 738 | 828 |
|
| 739 | 829 |
<div class="table_wrap" id="phoneTable"> |
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?