/* // /js/orderFormControl4.js */ /* AUTH JSON 의 종류들... SENT ---- 전송 성공 ---- 인증번호가 전송되었습니다. 휴대폰으로 전송된 다섯자리 인증번호를 입력해주세요 WAITING ---- 입력 대기 ---- 인증번호가 발송되어 입력을 기다리고 있습니다. SENDFAILED ---- 전송 실패 ---- 서버와 통신중 오류가 발생하였습니다. 잠시후 다시 시도해주세요. AUTHFAILED ---- 인증 실패 ---- 인증에 실패했습니다. 인증번호를 확인해주세요 AUTHDONE ---- 인증 성공 ---- 인증이 완료되었습니다. 계속 진행해주세요 LOGINPLZ ---- 로그인 요청 ---- 설정된 비밀번호가 있습니다. 로그인 해주세요. */ /************** hpNumAuthReqBtn 클릭 이벤트 캐치 ***************/ var hpPureNum = ""; var date = new Date(); $(document).on( "click", "#hpNumAuthReqBtn, #hpNumAuthDoneBtn", function(e) { e.preventDefault(); var msg = ""; var authNumInput = $("#hpAuthNumberInput").val(); // non-number 스트링 제거 var hpPureNum = $("#userHpNumInput").val().replace(/[^0-9]+/g,""); // HP 형식 패턴 var regExp = /01([016789])([0-9]{7,8})/; // HP 형색 패턴에 부합할 때 if ( regExp.test( hpPureNum ) ) { console.log("패턴 체크 통과함" ); $.getJSON("/ajax/authNumAction2.php?userHpNum="+hpPureNum+"&authNumStr="+authNumInput+"&callback=?", function( jsonObj ) { console.log("authActionResult: "+jsonObj.authActionResult); console.log("authSecLeft: "+jsonObj.authSecLeft); // Auth 의 결과 케이스에 따라 처리... if(jsonObj.authActionResult=="SENDFAILED") shortPopUp("Error", "서버와 통신중 오류가 발생하였습니다. 잠시후 다시 시도해주세요."); else if(jsonObj.authActionResult=="AUTHFAILED") shortPopUp( "Error", "인증에 실패했습니다. 인증번호를 다시 확인해주세요."); else if(jsonObj.authActionResult=="SENT") { shortPopUp( "전송 성공", "인증번호가 전송되었습니다. 휴대폰으로 전송된 다섯자리 인증번호를 입력해주세요"); displayGetAuthNumStr(); } // 인증완료 처리까지 해줘야 한다. else if(jsonObj.authActionResult=="AUTHDONE") { // SessionStorage 에 hpNum, hpAuthId, hpAuthExpiry 의 3 항목을 저장한다. sessionStorage.setItem("hpNum",hpPureNum); sessionStorage.setItem("hpAuthId",jsonObj.hpAuthId); sessionStorage.setItem("hpAuthExpiry", Math.floor(date.getTime()/1000) ); shortPopUp( "OK", "인증이 완료되었습니다. 계속 진행해주세요"); $("#orderMainUserHpNum").val(hpPureNum); $("#hpAuthId").val(jsonObj.hpAuthId); $(".userHpNum").text(hpPureNum); displayAuthDone(); } else if(jsonObj.authActionResult == "LOGINPLZ") { msg= "설정된 비밀번호가 있습니다. 로그인 하시겠습니까?"; // 컨펌을 받고 Yes 일 때, dialogCallBackFunc 을 호출하게 된다. shortPopUp( msg ); } else if(jsonObj.authActionResult=="WAITING") { shortPopUp( "Waiting...", "인증번호가 발송되어 입력을 기다리고 있습니다." ); displayGetAuthNumStr(); } }, "jsonp"); } else { //alert("전화번호 형식이 맞지 않습니다."); shortPopUp( "Error", "전화번호 형식이 올바르지 않습니다." ); } }); /**************************** #hpNumDeleteBtn 버튼 클릭 이벤트.. ******************************/ // 권한 검사는 하지 않는다. 로그인 사용자에게만 액션이 노출되고, 서버사이드에서 재차 검증이 이루어진다. $(document).on("click","#hpNumDeleteBtn", function() { var r = confirm("인증 완료된 전화번호의 인증기록을 삭제합니다."); if( r == true ) { hpPureNum = $(".userHpNum").text().replace(/[^0-9]+/g,""); $.getJSON("/ajax/resetHPAuth.php?userHpNum="+hpPureNum+"&callback=?", function( jsonObj ) { console.log( " jsonObj.authActionResult : " + jsonObj.authActionResult ); console.log( " jsonObj.authActionResultCode : " + jsonObj.authActionResultCode ); consoleLogObject( jsonObj ); if( jsonObj.authActionResult != "error" ) { $(".HPAuthUnDoneDiv").removeClass("display-none"); $(".HPAuthOKDiv").addClass("display-none"); $("#userHpNumInput, #hpAuthNumberInput, #orderMainUserHpNum").val(""); shortPopUp( "OK", "삭제요청 처리를 완료 하였습니다." ); } else { shortPopUp( "Error", "삭제요청 처리를 실패 하였습니다.
Code: "+ jsonObj.authActionResultCode ); } }); } //else shortPopUp( "취소딤", "삭제요청을 취소 하였습니다. " ); }); // SENDFAILED -- 전송실패.. 디스플레이 변경은 없다. // SENT / WAITING / AUTHFAILED -- 인증번호를 입력받기위한 디스플레이 변경 // smsAuthInput 를 echo 시킨다. function displayGetAuthNumStr() { console.log("슬라이드 다운...."); $(".smsAuthInput").slideDown('slow'); //$(".membershipOnly").slideDown(); } // AUTHDONE -- 인증완료 상태로 디스플레이 변경 function displayAuthDone() { console.log( "displayAuthDone 펑션에서.... " + addDashesTohpNum(HPAuthCheckedNumber) ); $(".HPAuthUnDoneDiv").addClass("display-none"); $(".HPAuthOKDiv").removeClass("display-none"); if(HPAuthCheckedNumber.length > 8) $(".userHpNum").text( addDashesTohpNum(HPAuthCheckedNumber) ); else if($("#orderMainUserHpNum").val().length > 8) $(".userHpNum").text( addDashesTohpNum($("#orderMainUserHpNum").val()) ); } /**************************** Order 에서의 CartList 를 채워준다... ******************************/ /* 2017-11-12오전 1:19 #orderEachCartItems 를 채워준다. 1. cartList.php 에서 카트.JSON 을 받아오고, 2. 원형 DOM #orderEachItemsPrimitiveDOM 의 clone 을 하나씩 모두 append() 해준다. - 옵션 출력형태를 하나씩 잡아준다... 3. 오더 폼 에 필요한 cartId 밸류들을 #orderMainForm 에 append() 해준다. */ //$(document).ready( function() { //}); function fillOrderItems() { $.getJSON( "/ajax/cartList.php?&callback=?", function( jsonObj ) { console.log(" typeof jsonObj " + jsonObj ); if( jsonObj != null ) { // 먼저 이전 내용을 비우고... $("#orderEachCartItemsFrameDiv").html(""); $("#eachCartOrdersFrameDiv").empty(); $.each( jsonObj, function( id, ea ) { if(ea.cartId) { var eachOrderCartItemsId = "eachOrderCartItemsDiv_"+ea.cartId; $("#orderEachItemsPrimitiveDOM").clone().attr("id",eachOrderCartItemsId).appendTo("#orderEachCartItemsFrameDiv"); $("#"+eachOrderCartItemsId).removeClass("display-none"); $("#"+eachOrderCartItemsId+" .deptFullAddr").text( ea.deptFullAddr ); $("#"+eachOrderCartItemsId+" .destFullAddr").text( ea.destFullAddr ); $("#"+eachOrderCartItemsId+" .driveDistance").text( ea.driveDistance+"km" ); $("#"+eachOrderCartItemsId+" .selectedCharge").text( ea.selectedCharge.format()+"원" ); $("#"+eachOrderCartItemsId+" .driveQntity").text( ea.qntity ); $("#"+eachOrderCartItemsId+" .selectedChargeStorage").attr("data-value", ea.selectedCharge); $("#"+eachOrderCartItemsId+" .selectedQntityStorage").attr("data-value", ea.qntity); $("#"+eachOrderCartItemsId+" .selectedQntityStorage").text( ea.qntity ); // driverOptions 구성.. $("#"+eachOrderCartItemsId+" .cartDriveOptionsUL > li").css("display","none"); $("#"+eachOrderCartItemsId+" .cartDriveOptionsUL > li").filter("[data-value='"+ea.driverSex+"']").css("display","inline-block"); $("#"+eachOrderCartItemsId+" .cartDriveOptionsUL > li").filter("[data-value='"+ea.driverLicense+"']").css("display","inline-block"); $("#"+eachOrderCartItemsId+" .cartDriveOptionsUL > li").filter("[data-value='"+ea.transmission+"']").css("display","inline-block"); } cartDriversAmount(); cartSelectedChargesAmount(); }); } else { console.log(" 엠티 카트.... #orderEachCartItemsFrameDiv 구성중......"); $(".cartEnabled").addClass("display-none"); $(".cartEmptyDiv").removeClass("display-none"); $("#orderEachCartItemsFrameDiv").removeClass("display-none"); $("#orderEachCartItemsFrameDiv > div ").html("

대리바구니에 담긴 운행오더가 없습니다.\n대리비조회후 바구니에 담으실 수 있습니다.

"); } }); } // legalAgreementChkbox 감시.. $(document).on( "click", "#legalAgreementChkbox", function() { //console.log("첵박스 액션!!! " + this.checked ); if( this.checked == true ) $("#orderConfirmSubmitBtn").removeClass("disabled"); else if( this.checked ==false ) $("#orderConfirmSubmitBtn").addClass("disabled"); }); // #orderConfirmSubmitBtn 버튼 클릭 대응... $(document).on( "click", "#orderConfirmSubmitBtn", function() { if( $(this).hasClass("disabled") ) return false; else { var quickOrderFormSerialized = $("#quickOrderInquiryForm").serialize(); $.getJSON( "/ajax/orderAction2.php?"+quickOrderFormSerialized+"&callback=?", function( jsonObj ) { // return JSON : {"actionResult":"Duplicated","orderCode":"49248934C","validTillSec":1678}) // JSON.actionResult 의 종류 : Succeeded// Duplicated// AuthFailed// ActionFailed if (jsonObj.actionResult == "Succeeded") document.location.href = "/order/orderDone.html?orderCode=" + jsonObj.orderCode; else if( jsonObj.actionResult == "AuthFailed" ) shortPopUp( "Error", "요청 권한이 없습니다. Error Code: " +jsonObj.ErrorCode ); else if( jsonObj.actionResult == "ActionFailed" ) shortPopUp( "Error", "요청을 처리하지 못하였습니다. Error Code: " +jsonObj.ErrorCode ); else if( jsonObj.actionResult == "Duplicated" ) shortPopUp( "Error", "이미 등록되어 처리중인 오더입니다. 오더 수정을 원하시면 클릭해 주세요." ); //console.log(" 오더액션 결과..... " +jsonObj.ErrorCode ); //if( jsonObj.actionResult == "Succeeded" ) shortPopUp("오더등록 성공") ; // else shortPopUp("오더 등록에 실패하였습니다.", "Error Code : " + jsonObj.ErrorCode ); }); } }); // #orderCartItemsListUL 의 HTML 을 채워준다. // Cart <-> Order 페이지간 이동이 발생할 때마다 실행되어 업데이트 된다. // Cart -> Order 페이지간 이동 컨트롤 펑션 cartOrderPageMove() 에서 호출된다. /* 2017-11-12오전 2:04 ... 사용되지 않는다. function fillOrderCartItemsListUL() { // 카트-오더 아이템 객체 선언 var cartItemsObject = { cartItems : [] }; // .cartEachOrdersDiv 객체 모두에 대해 루프.. $( ".cartEachOrdersDiv").each( function( eachDom ) { var cartId = $(this).attr("id").replace(/[^0-9]/ig, ""); //console.log( " cartId : " + cartId ); if( !isNaN(parseInt(cartId) ) ) { // 추출된 cartId 가 유효한 숫자일 때만.. // 각 cartId 항목의 필요한 데이터를 JSON 으로 구성해준다. var jsonData = {}; jsonData['cartId'] = cartId; jsonData['destAddr'] = $(this).find(".destFullAddrStorage").attr("data-value"); jsonData['driveQntity'] = $(this).find(".selectedQntityStorage").attr("data-value"); jsonData['selectedCharge'] = $(this).find(".selectedChargeStorage").attr("data-value"); // 카트-오더 아이템 객체 cartItemsObject 에 현재 카트아이템 데이터 JSON 을 푸시 cartItemsObject.cartItems.push(jsonData); } }); // JSON 데이터를 HTML 로 구성해주고, ... -- 세련된 코딩방식인데, 앞으론 이런 방식으로 코딩하도록 신경을 쓰자. var cartOrdersList = $.map(cartItemsObject.cartItems, function( eaItem ) { return "
  • " + eaItem.destAddr + " " + eaItem.selectedCharge + " " + eaItem.driveQntity + "
  • " }).join(" ").trim(); // 대상 #id 에 넣어준다. #orderCartItemsListUL if(cartOrdersList.length > 20) $("#orderCartItemsListUL").html( cartOrdersList ); console.log( "cartOrdersList : " + cartOrdersList); } */