DelvAddrModifyPopWeb.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <form class="form_wrap form_full" name="deliveryModifyForm" id="deliveryModifyForm">
  2. <input type="hidden" class="form_control" name="custDelvAddrSq" th:value="${deliveryAddrInfo.custDelvAddrSq}">
  3. <div class="modal-header">
  4. <h5 class="modal-title" id="adrsModifyLabel">배송지 수정</h5>
  5. </div>
  6. <div class="modal-body">
  7. <div class="pop_cont">
  8. <div class="area_adrsinfo">
  9. <h6>배송지 정보</h6>
  10. <div class="default_addrs">
  11. <div class="form_field">
  12. <th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
  13. <input id="chk-default-addrs1" type="checkbox" name="defaultYn" checked>
  14. </th:block>
  15. <th:block th:if="${deliveryAddrInfo.defaultYn} == 'N'">
  16. <input id="chk-default-addrs1" type="checkbox" name="defaultYn">
  17. </th:block>
  18. <label for="chk-default-addrs1"><span>기본 배송지로 등록</span></label>
  19. </div>
  20. </div>
  21. <div class="form_field">
  22. <label class="input_label sr-only">받는 분</label>
  23. <div class="ui_col_12">
  24. <div class="input_wrap">
  25. <input type="text" class="form_control" name="recipNm" maxlength="11" placeholder="받는 분" th:value="${deliveryAddrInfo.recipNm}">
  26. </div>
  27. </div>
  28. </div>
  29. <div class="form_field">
  30. <label class="input_label sr-only">휴대폰 번호</label>
  31. <div class="ui_col_12">
  32. <div class="input_wrap">
  33. <input type="text" name="recipPhnno" placeholder="휴대폰 번호" class="form_control" minlength="10" maxlength="14" th:value="${deliveryAddrInfo.recipPhnno}"/>
  34. </div>
  35. </div>
  36. </div>
  37. <div class="form_field">
  38. <label class="input_label sr-only">배송주소</label>
  39. <div class="ui_col_12">
  40. <div class="input_wrap">
  41. <input type="hidden" name="recipZipcode" placeholder="우편번호" th:value="${deliveryAddrInfo.recipZipcode}" readonly="readonly">
  42. <input type="hidden" class="form_control" name="recipBaseAddr" placeholder="기본주소" th:value="${deliveryAddrInfo.recipBaseAddr}" readonly="readonly">
  43. <input type="text" class="form_control" name="recipAddr" placeholder="배송주소" th:value="${deliveryAddrInfo.recipZipcode} + ' '+ ${deliveryAddrInfo.recipBaseAddr}" readonly="readonly">
  44. </div>
  45. <button type="button" class="btn btn_dark btn_sm" onclick="fnOpenDaumAddr();">
  46. <span>우편번호 찾기</span>
  47. </button>
  48. </div>
  49. </div>
  50. <div class="form_field">
  51. <label class="input_label sr-only">상세주소</label>
  52. <div class="ui_col_12">
  53. <div class="input_wrap">
  54. <input type="text" class="form_control" name="recipDtlAddr" maxlength="50" placeholder="상세주소" th:value="${deliveryAddrInfo.recipDtlAddr}">
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <div class="area_request">
  60. <h6>배송요청 사항</h6>
  61. <div class="form_field">
  62. <div>
  63. <input type="radio" name="rdi-request1" id="rdi-request11" value="문 앞">
  64. <label for="rdi-request11"><span>문 앞</span></label>
  65. </div>
  66. <div>
  67. <input type="radio" name="rdi-request1" id="rdi-request12" value="직접 받고 부재 시 문 앞">
  68. <label for="rdi-request12"><span>직접 받고 부재 시 문 앞</span></label>
  69. </div>
  70. <div>
  71. <input type="radio" name="rdi-request1" id="rdi-request13" value="경비실">
  72. <label for="rdi-request13"><span>경비실</span></label>
  73. </div>
  74. <div>
  75. <input type="radio" name="rdi-request1" id="rdi-request14" value="택배함">
  76. <label for="rdi-request14"><span>택배함</span></label>
  77. </div>
  78. <div>
  79. <input type="radio" name="rdi-request1" id="rdi-request15" value="기타사항">
  80. <label for="rdi-request15"><span>기타사항</span></label>
  81. <div class="info_box">
  82. <div class="input_wrap">
  83. <input type="text" name="delvMemoText" class="form_control" maxlength="30" placeholder="보관장소만 입력 (필수)" disabled>
  84. <p>보관 장소 외 다른 내용 입력시 통보없이 삭제 될 수 있습니다.</p>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. <div class="modal-footer">
  93. <button type="button" class="btn btn_dark" id="btn_delivery_modi_save"><span>배송지 등록</span></button>
  94. </div>
  95. </form>
  96. <script th:inline="javascript">
  97. var delvMemo = [[${deliveryAddrInfo.delvMemo}]];
  98. //컨텐츠 호출
  99. $(document).ready( function() {
  100. var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
  101. var tempMemo = true;
  102. // 배송요청사항설정
  103. for (i=0 ; i<delvMemoArr.length ; i++) {
  104. if (delvMemoArr[i] == delvMemo) {
  105. tempMemo = false;
  106. }
  107. }
  108. if (tempMemo) {
  109. $("#deliveryModifyForm input[name=rdi-request1]").eq(4).attr("checked", true);
  110. $("#deliveryModifyForm input[name=delvMemoText]").attr("disabled", false);
  111. $("#deliveryModifyForm input[name=delvMemoText]").val(delvMemo);
  112. }
  113. $("#deliveryModifyForm input[name=rdi-request1]").each(function(){
  114. var temp = $(this).parent().find('span').text();
  115. if (delvMemo == temp) {
  116. $(this).attr("checked", true);
  117. }
  118. });
  119. // 배송요청사항 버튼기능
  120. $("#deliveryModifyForm input[name=rdi-request1]").each(function(){
  121. // 버튼기능
  122. $(this).on("click", function(){
  123. var temp = $(this).parent().find('span').text();
  124. $("#deliveryModifyForm input[name=delvMemoText]").val("");
  125. if (temp == "기타사항") {
  126. $("#deliveryModifyForm input[name=delvMemoText]").attr("disabled", false);
  127. } else {
  128. $("#deliveryModifyForm input[name=delvMemoText]").attr("disabled", true);
  129. }
  130. });
  131. });
  132. });
  133. // 배송지등록버튼
  134. $("#btn_delivery_modi_save").on("click", function(){
  135. // 유효성체크
  136. if (!deliveryModifyFormCheck()){
  137. return false;
  138. }
  139. // 기본배송지여부
  140. var defaultYn = "N";
  141. if ($("#deliveryModifyForm input[name=defaultYn]").is(":checked")) {
  142. defaultYn = "Y";
  143. }
  144. // 기타사항일때 텍스트 등록
  145. var delvMemo = $("#deliveryModifyForm input[name=rdi-request1]:checked").parent().find('span').text();
  146. if ("기타사항" == delvMemo) {
  147. delvMemo = $("#deliveryModifyForm input[name=delvMemoText]").val();
  148. }
  149. // 2021.04.29 추가
  150. if (gagajf.isNull(delvMemo)) {
  151. mcxDialog.alert("기타사항을 입력해주세요.");
  152. $("#deliveryAddForm input[name=delvMemoText]").focus();
  153. return false;
  154. }
  155. // 배송지정보설정
  156. var jsonObj = {
  157. "defaultYn" : defaultYn
  158. , "custDelvAddrSq" : parseInt($("#deliveryModifyForm input[name=custDelvAddrSq]").val())
  159. , "recipNm" : $("#deliveryModifyForm input[name=recipNm]").val()
  160. , "recipPhnno" : $("#deliveryModifyForm input[name=recipPhnno]").val()
  161. , "recipZipcode" : $("#deliveryModifyForm input[name=recipZipcode]").val()
  162. , "recipBaseAddr" : $("#deliveryModifyForm input[name=recipBaseAddr]").val()
  163. , "recipDtlAddr" : $("#deliveryModifyForm input[name=recipDtlAddr]").val()
  164. , "delvMemo" : delvMemo
  165. }
  166. var jsonData = JSON.stringify(jsonObj);
  167. $.ajax( {
  168. type : "POST",
  169. url : '/common/updateCustDeliveryAddr',
  170. data : jsonData,
  171. dataType : 'html',
  172. beforeSend : function(xhr, settings) {
  173. xhr.setRequestHeader("AJAX" , "true");
  174. xhr.setRequestHeader('Accept' , 'application/json');
  175. xhr.setRequestHeader('Content-Type' , 'application/json');
  176. },
  177. success : function(result) {
  178. // custDelvAddrSq 부모창으로 전달
  179. var delvObj = {
  180. "custDelvAddrSq" : parseInt($("#deliveryModifyForm input[name=custDelvAddrSq]").val())
  181. , "dispYn" : "Y"
  182. , "recipNm" : $("#deliveryModifyForm input[name=recipNm]").val()
  183. , "recipPhnno" : $("#deliveryModifyForm input[name=recipPhnno]").val()
  184. , "recipZipcode" : $("#deliveryModifyForm input[name=recipZipcode]").val()
  185. , "recipBaseAddr" : $("#deliveryModifyForm input[name=recipBaseAddr]").val()
  186. , "recipDtlAddr" : $("#deliveryModifyForm input[name=recipDtlAddr]").val()
  187. , "delvMemo" : delvMemo
  188. }
  189. // 부모장으로 값 전닫
  190. delvAddrSet(delvObj);
  191. // 팝업닫기
  192. $(".close-modal").trigger("click");
  193. }
  194. });
  195. });
  196. // 유효성체크 함수
  197. var deliveryModifyFormCheck = function() {
  198. // TODO 유효성 체크 추가
  199. if (gagajf.isNull($("#deliveryModifyForm input[name=recipNm]").val())) {
  200. mcxDialog.alert("받는분을 입력해주세요.");
  201. $('#deliveryModifyForm input[name=custNm]').focus();
  202. return false;
  203. }
  204. if (gagajf.isNull($("#deliveryModifyForm input[name=recipPhnno]").val())) {
  205. mcxDialog.alert("휴대폰번호를 입력해주세요.");
  206. $('#deliveryAddForm input[name=recipPhnno]').focus();
  207. return false;
  208. }
  209. if ($("#deliveryModifyForm input[name=recipPhnno]").val().length < 10) {
  210. mcxDialog.alert("휴대폰번호를 정확히 입력해주세요.");
  211. $('#deliveryAddForm input[name=recipPhnno]').focus();
  212. return false;
  213. }
  214. if (gagajf.isNull($("#deliveryModifyForm input[name=recipZipcode]").val())) {
  215. mcxDialog.alert("배송주소를 입력해주세요.");
  216. $('#deliveryModifyForm input[name=recipAddr]').focus();
  217. return false;
  218. }
  219. if (gagajf.isNull($("#deliveryModifyForm input[name=recipBaseAddr]").val())) {
  220. mcxDialog.alert("배송주소를 입력해주세요.");
  221. $('#deliveryModifyForm input[name=recipAddr]').focus();
  222. return false;
  223. }
  224. if (gagajf.isNull($("#deliveryModifyForm input[name=recipDtlAddr]").val())) {
  225. mcxDialog.alert("상세주소를 입력해주세요.");
  226. $('#deliveryModifyForm input[name=recipDtlAddr]').focus();
  227. return false;
  228. }
  229. return true;
  230. }
  231. //우편번호 DAUM을 이용한 우편번호 팝업 레이어
  232. var fnOpenDaumAddr = function() {
  233. let daumZip = new daum.Postcode({
  234. oncomplete: function(data) {
  235. $('#deliveryModifyForm input[name=recipAddr]').val(data.zonecode + ' ' + cfnGetDaumRoadAddr(data));
  236. $('#deliveryModifyForm input[name=recipZipcode]').val(data.zonecode);
  237. $('#deliveryModifyForm input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
  238. $('#deliveryModifyForm input[name=recipDtlAddr]').focus();
  239. cfnCloseDaumAddr();
  240. },
  241. width: '100%'
  242. });
  243. cfnOpenDaumAddr(daumZip);
  244. }
  245. // 2021.04.09 하이픈처리
  246. $(document).on("keyup", "#deliveryModifyForm input[name=recipPhnno]", function() {
  247. $(this).val( $(this).val().replace(/[^0-9]/g, "").replace(/(^02|^0505|^1[0-9]{3}|^0[0-9]{2})([0-9]+)?([0-9]{4})$/,"$1-$2-$3").replace("--", "-") );
  248. });
  249. </script>