OrderFormWeb.html 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621
  1. <!DOCTYPE html>
  2. <html lang="ko" xmlns:th="http://www.thymeleaf.org"
  3. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  4. layout:decorator="web/common/layout/DefaultLayoutWeb">
  5. <!--
  6. *******************************************************************************
  7. * @source : OrderFormWeb.html
  8. * @desc : 주문/결제 Page
  9. *============================================================================
  10. * STYLE24
  11. * Copyright(C) 2020 TSIT, All rights reserved.
  12. *============================================================================
  13. * VER DATE AUTHOR DESCRIPTION
  14. * === =========== ========== =============================================
  15. * 1.0 2021.02.01 jsh77b 최초 작성
  16. *******************************************************************************
  17. -->
  18. <body>
  19. <th:block layout:fragment="content">
  20. <link rel="stylesheet" type="text/css" href="/ux/pc/css/swiper.min.css">
  21. <script type="text/javascript" src="/ux/pc/js/swiper.min.js"></script>
  22. <script type="text/javascript" src="/ux/pc/js/slick.min.js"></script>
  23. <script type="text/javascript" src="/ux/pc/js/jquery-ui.js"></script>
  24. <!-- xodud1202 -->
  25. <script type="text/javascript">
  26. /****************************************************************/
  27. /* m_Completepayment 설명 */
  28. /****************************************************************/
  29. /* 인증완료시 재귀 함수 */
  30. /* 해당 함수명은 절대 변경하면 안됩니다. */
  31. /* 해당 함수의 위치는 payplus.js 보다먼저 선언되어여 합니다. */
  32. /* Web 방식의 경우 리턴 값이 form 으로 넘어옴 */
  33. /****************************************************************/
  34. function m_Completepayment( FormOrJson, closeEvent )
  35. {
  36. var frm = document.order_info;
  37. /********************************************************************/
  38. /* FormOrJson은 가맹점 임의 활용 금지 */
  39. /* frm 값에 FormOrJson 값이 설정 됨 frm 값으로 활용 하셔야 됩니다. */
  40. /* FormOrJson 값을 활용 하시려면 기술지원팀으로 문의바랍니다. */
  41. /********************************************************************/
  42. GetField( frm, FormOrJson );
  43. if( frm.res_cd.value == "0000" )
  44. {
  45. alert("결제 승인 요청 전,\n\n반드시 결제창에서 고객님이 결제 인증 완료 후\n\n리턴 받은 ordr_chk 와 업체 측 주문정보를\n\n다시 한번 검증 후 결제 승인 요청하시기 바랍니다."); //업체 연동 시 필수 확인 사항.
  46. alert(frm);
  47. /*
  48. 가맹점 리턴값 처리 영역
  49. */
  50. frm.submit();
  51. } else {
  52. alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value );
  53. closeEvent();
  54. }
  55. }
  56. </script>
  57. <script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
  58. <script type="text/javascript">
  59. /* 표준웹 실행 */
  60. function jsf__pay( form ) {
  61. try {
  62. KCP_Pay_Execute( form );
  63. } catch (e) {
  64. /* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
  65. }
  66. }
  67. $(document).on("click", "#buyBtn", function() {
  68. $.ajax({
  69. type: "POST",
  70. url : '/order/create/order',
  71. dataType : 'html',
  72. data : {cartSq : 8},
  73. error : function(e) {
  74. alert(3);
  75. },
  76. success : function(result) {
  77. $("#order_info").html(result);
  78. jsf__pay(document.order_info);
  79. }
  80. });
  81. });
  82. </script>
  83. <form id="order_info" name="order_info" method="post" action="/order/pay/result/response" >
  84. <input type="button" id="buyBtn" value="테스트버튼" style="width:200px; height:200px;"/>
  85. </form>
  86. <!-- // xodud1202 -->
  87. <!-- card007 -->
  88. <script type="text/javascript">
  89. $(document).on("click", "#kakaoBtn", function() {
  90. $.ajax( {
  91. type: "POST",
  92. url : '/order/create/order',
  93. dataType : 'html',
  94. data : {cartSq : 8},
  95. success : function(result) {
  96. $("#order_info").html(result);
  97. fnKakaoPaymentReady();
  98. }
  99. });
  100. });
  101. var fnKakaoPaymentReady = function() {
  102. const protocol = 'http:';
  103. let url = '/order/kakao/payment/ready';
  104. let redirectUrl = '/order/kakao/payment/request';
  105. let data = {};
  106. data.ordNo = $('#order_info input[name=ordr_idxx]').val();
  107. data.goodsNm = $('#order_info input[name=good_name]').val();
  108. data.ordQty = $('#ordQty').text();
  109. data.realOrdAmt = $('#order_info input[name=good_mny]').val();
  110. data.approvalUrl = protocol + _frontUrl + redirectUrl;
  111. data.failUrl = protocol + _frontUrl + redirectUrl;
  112. data.cancelUrl = protocol + _frontUrl + redirectUrl;
  113. let jsonData = JSON.stringify(data);
  114. gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
  115. let tid = result.tid;
  116. let nextRedirectUrl = result.next_redirect_pc_url;
  117. let option = 'width=420, height=520';
  118. $('#order_info').append('<input type=hidden name="pgTid" value="' + tid + '" />');
  119. window.open(nextRedirectUrl, 'kakaoPaymentPopup', option);
  120. });
  121. }
  122. var fnKakaoPaymentRequest = function(pgToken) {
  123. $('#order_info').append('<input type=hidden name="pgToken" value="' + pgToken + '" />');
  124. let url = '/order/kakao/payment/approve';
  125. let data = {};
  126. data.pgTid = $('#order_info input[name=pgTid]').val();
  127. data.ordNo = $('#order_info input[name=ordr_idxx]').val();
  128. data.pgToken = $('#order_info input[name=pgToken]').val();
  129. let jsonData = JSON.stringify(data);
  130. gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
  131. console.log(result);
  132. });
  133. return true;
  134. }
  135. </script>
  136. <form id="kakao_order_info" name="order_info" method="post" action="/order/pay/result/response" >
  137. <input type="button" id="kakaoBtn" value="카카오테스트버튼" style="width:200px; height:200px;"/>
  138. </form>
  139. <!-- // card007 -->
  140. <!-- container -->
  141. <form id="payForm" name="payForm">
  142. <br>
  143. <!-- 주문상세금액 -->
  144. <table border="1" style="font-size:10px; text-align:center;">
  145. <tr style="height:30px;">
  146. <th>cartSq</th>
  147. <th>orgCurrPrice</th>
  148. <th>cpn1DcSq</th>
  149. <th>cpn1DcAmt</th>
  150. <th>optAddPrice</th>
  151. <th>goodsQty</th>
  152. <th>ordAmt</th>
  153. <th>tmtb1Sq</th>
  154. <th>tmtb1DcAmt</th>
  155. <th>tmtb2Sq</th>
  156. <th>tmtb2DcAmt</th>
  157. <th>goodsCpnSq</th>
  158. <th>goodsCpnDcAmt</th>
  159. <th>cartCpnSq</th>
  160. <th>cartCpnDcAmt</th>
  161. <th>prePntDcAmt1</th>
  162. <th>dcSumAmt</th>
  163. <th>pntDcAmt1</th>
  164. <th>gfcdUseAmt1</th>
  165. <th>realOrdAmt1</th>
  166. <th>savePntAmt1</th>
  167. </tr>
  168. <th:block th:each="delvAllCart, i : ${delvAllCartList}">
  169. <th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
  170. <th:block th:each="goods, i : ${delvAllCart}">
  171. <tr style="height:30px;">
  172. <td class="cartSq" th:text="${goods.cartSq}"></td>
  173. <td class="orgCurrPrice" th:text="${goods.orgCurrPrice}"></td>
  174. <td class="cpn1CpnSq" th:text="${goods.cpn1CpnSq}"></td>
  175. <td class="cpn1DcAmt" th:text="${goods.orgCurrPrice} - ${goods.currPrice}"></td>
  176. <td class="optAddPrice" th:text="${goods.optAddPrice}"></td>
  177. <td class="goodsQty" th:text="${goods.goodsQty}"></td>
  178. <td class="ordAmt">0</td>
  179. <th:block th:if="${goods.applyQtySectionYn} == 'Y' and ${goods.qtyTmtbSq} > 0">
  180. <td class="tmtb1Sq" th:text="${goods.qtyTmtbSq}"></td>
  181. <td class="tmtb1DcAmt" th:text="${goods.tmtb1DcAmt}"></td>
  182. </th:block>
  183. <th:block th:if="${goods.applyQtySectionYn} != 'Y'">
  184. <td class="tmtb1Sq">0</td>
  185. <td class="tmtb1DcAmt">0</td>
  186. </th:block>
  187. <th:block th:if="${goods.applyAmtSectionYn} == 'Y' and ${goods.amtTmtbSq} > 0">
  188. <td class="tmtb2Sq" th:text="${goods.amtTmtbSq}"></td>
  189. <td class="tmtb2DcAmt" th:text="${goods.tmtb2DcAmt}"></td>
  190. </th:block>
  191. <th:block th:if="${goods.applyAmtSectionYn} != 'Y'">
  192. <td class="tmtb2Sq" >0</td>
  193. <td class="tmtb2DcAmt" >0</td>
  194. </th:block>
  195. <td class="goodsCpnSq">0</td>
  196. <td class="goodsCpnDcAmt">0</td>
  197. <td class="cartCpnSq">0</td>
  198. <td class="cartCpnDcAmt">0</td>
  199. <td class="prePntDcAmt1" th:text="${goods.prePntDcAmt}"></td>
  200. <td class="dcSumAmt">0</td>
  201. <td class="pntDcAmt1">0</td>
  202. <td class="gfcdUseAmt1">0</td>
  203. <td class="realOrdAmt1">0</td>
  204. <td class="savePntAmt1" th:text="${goods.savePntAmt}"></td>
  205. </tr>
  206. </th:block>
  207. </th:block>
  208. </th:block>
  209. </table>
  210. <br>
  211. <!-- 주문금액합계 -->
  212. <table border="1" style="font-size:10px; text-align:center;">
  213. <tr style="height:30px;">
  214. <th>orgGoodsSumAmt</th>
  215. <th>delvSumAmt</th>
  216. <th>freegiftUsePnt</th>
  217. <th>cpn1DcSumAmt</th>
  218. <th>ordSumAmt</th>
  219. <th>tmtb1DcSumAmt</th>
  220. <th>tmtb2DcSumAmt</th>
  221. <th>tmtbDcSumAmt</th>
  222. <th>goodsCpnDcSumAmt</th>
  223. <th>cartCpnDcSumAmt</th>
  224. <th>delvCpnDcSumAmt</th>
  225. <th>cpnDcSumAmt</th>
  226. <th>prePntDcAmt</th>
  227. <th>pntDcSumAmt</th>
  228. <th>gfcdUseSumAmt</th>
  229. <th>realOrdSumAmt</th>
  230. <th>savePntSumAmt</th>
  231. </tr>
  232. <tr style="height:30px;">
  233. <td class="orgGoodsSumAmt">0</td>
  234. <td class="delvSumAmt" th:text="${sumDelvFee}"></td>
  235. <td class="freegiftUsePnt">0</td>
  236. <td class="cpn1DcSumAmt">0</td>
  237. <td class="ordSumAmt">0</td>
  238. <td class="tmtb1DcSumAmt">0</td>
  239. <td class="tmtb2DcSumAmt">0</td>
  240. <td class="tmtbDcSumAmt">0</td>
  241. <td class="goodsCpnDcSumAmt">0</td>
  242. <td class="cartCpnDcSumAmt">0</td>
  243. <td class="delvCpnDcSumAmt">0</td>
  244. <td class="cpnDcSumAmt">0</td>
  245. <td class="prePntDcSumAmt">0</td>
  246. <td class="pntDcSumAmt">0</td>
  247. <td class="gfcdUseSumAmt">0</td>
  248. <td class="realOrdSumAmt">0</td>
  249. <td class="savePntSumAmt">0</td>
  250. </tr>
  251. </table>
  252. <div id="container" class="container od">
  253. <div class="wrap">
  254. <div class="content odPayment">
  255. <!-- 페이지특정 클래스 = odPayment -->
  256. <div class="cont_head">
  257. <h2>주문&#47;결제</h2>
  258. <div class="oder_steps">
  259. <ul>
  260. <li>01 쇼핑백</li>
  261. <li class="on">02 주문/결제</li>
  262. <li>03 주문완료</li>
  263. </ul>
  264. </div>
  265. </div>
  266. <div class="cont_body">
  267. <!-- CONT-BODY -->
  268. <form class="form_wrap">
  269. <div class="od_cont">
  270. <div class="sec_head">
  271. <div class="tbl type4">
  272. <table>
  273. <colgroup>
  274. <col width="240">
  275. <col width="*">
  276. </colgroup>
  277. <tbody>
  278. <tr>
  279. <th>총 <span class="c_primary bold" th:text="${delvFeeTotCnt}"></span> 건으로 나뉘어 배송 예정</th>
  280. <td class="t_l">
  281. <span>총알배송<em class="c_primary bold" th:text="${wmsCnt}" id="shotDelv"></em>건</span>
  282. <span>STYLE24<em class="c_primary bold" th:text="${wmsCnt}" id="wmsDelv"></em>건</span>
  283. <span>업체직배송<em class="c_primary bold" th:text="${delvCnt}"></em>건</span>
  284. <span>예약배송<em class="c_primary bold" th:text="${resCnt}"></em>건</span>
  285. </td>
  286. </tr>
  287. </tbody>
  288. </table>
  289. </div>
  290. </div>
  291. <div class="sec_body">
  292. <div class="foldGroup">
  293. <ul>
  294. <!-- 주문고객정보 -->
  295. <li class="fold_mbinfo" id="custemerInfo" style="display:none"></li>
  296. <!-- //주문고객정보 -->
  297. <!-- 배송지정보 -->
  298. <li class="fold_mbinfo" id="deliveryAddrInfo" style="display:none"></li>
  299. <!-- //배송지정보 -->
  300. <!-- 사은품선택 -->
  301. <li id="freegiftInfo" style="display:none"></li>
  302. <!-- //사은품선택 -->
  303. <!-- 할인/혜택 사용 -->
  304. <li id="dcAmtInfo" style="display:none"></li>
  305. <!-- //할인/혜택 사용 -->
  306. <!-- 결제수단 선택 -->
  307. <li class="fold_paymethod" id="paymentInfo" style="display:none"></li>
  308. <!-- //결제수단 선택 -->
  309. </ul>
  310. </div>
  311. </div>
  312. </div>
  313. <div class="od_side">
  314. <div class="area_order">
  315. <div class="tit_box">
  316. <h3 class="subH2">주문내역</h3>
  317. <span> <em class="number" id="ordQty" th:text="${delvTotCnt}"></em>개의 상품</span>
  318. </div>
  319. <div class="od_item_box">
  320. <!-- 전체배송목록 sort -->
  321. <th:block th:each="delvAllCart, i : ${delvAllCartList}">
  322. <th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
  323. <div class="part_dlvr">
  324. <th:block th:if="${i.index} == 0">
  325. <th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
  326. <h4 class="subH3 mb20">STYLE24 총알배송<span>오늘 자정까지 도착</span></h4>
  327. </th:block>
  328. </th:block>
  329. <th:block th:if="${i.index} == 1">
  330. <th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
  331. <h4 class="subH3 mb20" id="wmsDelvTitle">STYLE24 일반배송</h4>
  332. </th:block>
  333. </th:block>
  334. <th:block th:if="${i.index} == 2">
  335. <th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
  336. <h4 class="subH3 mb20">업체직배송</h4>
  337. </th:block>
  338. </th:block>
  339. <th:block th:if="${i.index} == 3">
  340. <th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
  341. <h4 class="subH3 mb20">예약배송</h4>
  342. </th:block>
  343. </th:block>
  344. <div class="gd_list">
  345. <th:block th:each="goods, i : ${delvAllCart}">
  346. <div class="item_gd">
  347. <figure>
  348. <span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
  349. <figcaption>
  350. <div class="brand" th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></div>
  351. <div class="name" th:text="${goods.goodsNm}"></div>
  352. <div class="option" th:each="opt, index : ${goods.itemNmArr}">
  353. <span th:text="${goods.optCdArr[index.index]}"></span>
  354. <span>수량:<em th:text="${goods.goodsQty}"></em>개</span>
  355. </div>
  356. <div class="price">
  357. <th:block th:if="${goods.tmtbDcAmt} > 0">
  358. <span class="selling_price" th:text="${#numbers.formatInteger(goods.tmtbDcAmt, 1, 'COMMA')}"></span>
  359. </th:block>
  360. <th:block th:if="${goods.tmtbDcAmt} < 1">
  361. <span class="selling_price" th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></span>
  362. </th:block>
  363. </div>
  364. </figcaption>
  365. </figure>
  366. </div>
  367. </th:block>
  368. </div>
  369. </div>
  370. </th:block>
  371. </th:block>
  372. <!-- //전체배송목록 sort -->
  373. </div>
  374. <div class="od_amount_box">
  375. <dl>
  376. <div>
  377. <dt>상품금액</dt>
  378. <dd id="orgGoodsSumAmt" th:text="|${#numbers.formatInteger(orgGoodsSumAmt, 1, 'COMMA')}원|"></dd>
  379. </div>
  380. <div>
  381. <dt>배송비</dt>
  382. <dd id="delvSumAmt" th:text="|${#numbers.formatInteger(sumDelvFee, 1, 'COMMA')}원|"></dd>
  383. </div>
  384. <div>
  385. <dt>할인금액</dt>
  386. <th:block th:if="${cpn1DcSumAmt} > 0">
  387. <dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|-${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></span></dd>
  388. </th:block>
  389. <th:block th:if="${cpn1DcSumAmt} < 1">
  390. <dd><span class="disc_amount" id="cpn1DcSumAmt" th:text="|${#numbers.formatInteger(cpn1DcSumAmt, 1, 'COMMA')}원|"></span></dd>
  391. </th:block>
  392. </div>
  393. <div>
  394. <dt>다다익선할인금액</dt>
  395. <th:block th:if="${tmtbDcSumAmt} > 0">
  396. <dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|-${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
  397. </th:block>
  398. <th:block th:if="${tmtbDcSumAmt} < 1">
  399. <dd><span class="disc_amount" id="tmtbDcSumAmt" th:text="|${#numbers.formatInteger(tmtbDcSumAmt, 1, 'COMMA')}원|"></span></dd>
  400. </th:block>
  401. </div>
  402. <div>
  403. <dt>쿠폰할인금액</dt>
  404. <dd><span class="disc_amount" id="couponDcSumAmt"></span></dd>
  405. </div>
  406. <div>
  407. <dt>선포인트 사용</dt>
  408. <th:block th:if="${prePntDcAmt} > 0">
  409. <dd><span class="disc_amount" id="prePntDcAmt" th:text="|-${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></span></dd>
  410. </th:block>
  411. <th:block th:if="${prePntDcAmt} < 1">
  412. <dd><span class="disc_amount" id="prePntDcAmt" th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></span></dd>
  413. </th:block>
  414. </div>
  415. <div>
  416. <dt>포인트 사용</dt>
  417. <dd><span class="disc_amount" id="pntDcAmt">0원</span></dd>
  418. </div>
  419. <div>
  420. <dt>상품권 사용</dt>
  421. <dd><span class="disc_amount" id="gfcdUseAmt">0원</span></dd>
  422. </div>
  423. </dl>
  424. </div>
  425. <div class="totalprice_box">
  426. <dl>
  427. <dt>총 결제 예정 금액</dt>
  428. <dd data-weight="price" data-font="lato">
  429. <span id="realOrdAmt"></span>원
  430. </dd>
  431. </dl>
  432. <p class="info_point">스타일 포인트
  433. <span class="save_point" id="savePntSumAmt" th:text="|${#numbers.formatInteger(savePntSumAmt, 1, 'COMMA')}P|"></span> 적립예정
  434. </p>
  435. </div>
  436. </div>
  437. </div>
  438. </form>
  439. <!-- // CONT-BODY -->
  440. </div>
  441. </div>
  442. </div>
  443. </div>
  444. </form>
  445. <!-- // container -->
  446. <footer id="footer"></footer>
  447. <!-- 배송지변경팝업 -->
  448. <div class="modal fade od_pop adrsChange_pop" id="adrsChangePop" tabindex="-1" role="dialog" aria-labelledby="adrsChangeLabel" aria-hidden="true"></div>
  449. <!-- 배송지수정팝업 -->
  450. <div class="modal fade od_pop adrsModify_pop" id="adrsModifyPop" tabindex="-1" role="dialog" aria-labelledby="adrsModifyLabel" aria-hidden="true"></div>
  451. <!-- 배송지추가팝업 -->
  452. <div class="modal fade od_pop adrsAdd_pop" id="adrsAddPop" tabindex="-1" role="dialog" aria-labelledby="adrsAddLabel" aria-hidden="true"></div>
  453. <!-- 배송요청사항수정 팝업 -->
  454. <div class="modal fade od_pop rqstModify_pop" id="rqstModifyPop" tabindex="-1" role="dialog" aria-labelledby="rqstModifyLabel" aria-hidden="true"></div>
  455. <!-- 사은품지급안내 팝업 -->
  456. <div class="modal fade od_pop infoGift_pop" id="infoGiftPop" tabindex="-1" role="dialog" aria-labelledby="infoGiftLabel" aria-hidden="true"></div>
  457. <script th:inline="javascript">
  458. // 배송관련정보 변수선언
  459. var cartGoodsList = [[${cartGoodsList}]] // 배송목록
  460. var wmsCnt = [[${wmsCnt}]]; // 자사 일반,촐알 배송건수
  461. var resCnt = [[${resCnt}]]; // 자사 예약 배송건수
  462. var delvCnt = [[${delvCnt}]]; // 입전 일반 배송건수
  463. var shotDelvYn = [[${shotDelvYn}]]; // 총알배송여부
  464. var orgSumDelvFee = [[${sumDelvFee}]]; // 최초배송비합계
  465. var prePntDcAmt = [[${prePntDcAmt}]]; // 선포인트사용가능금액
  466. var custNm = [[${order.custNm}]]; // 주문자명
  467. var cellPhnno = [[${order.cellPhnno}]]; // 핸드폰번호
  468. var email = [[${order.email}]]; // 이메일
  469. var recipZipcode = [[${order.recipZipcode}]]; // 우편번호
  470. var recipBaseAddr = [[${order.recipBaseAddr}]]; // 기본주소
  471. var recipDtlAddr = [[${order.recipDtlAddr}]]; // 상세주소
  472. var cartSqArr = [[${order.cartSqArr}]]; // 장바구니시퀀스 목록
  473. var custCpnSq = 0;
  474. var cpnIndex = 0;
  475. var cpnApplyTemp = false;
  476. var jsonData = null;
  477. // 컨텐츠 호출
  478. $(document).ready( function() {
  479. // 장바구니시퀀스 배열 변환
  480. cartSqArr = String(cartSqArr).split(",");
  481. // 1. 각각의 컨텐츠 AJAX 로드
  482. var jsonObj = {
  483. "custNm" : custNm
  484. , "cellPhnno" : cellPhnno
  485. , "email" : email
  486. , "recipZipcode" : recipZipcode
  487. , "recipBaseAddr" : recipBaseAddr
  488. , "recipDtlAddr" : recipDtlAddr
  489. , "cartSqArr" : cartSqArr
  490. , "dispYn" : "N"
  491. }
  492. var jsonData = JSON.stringify(jsonObj);
  493. // 1.1 고객정보로드
  494. custemerInfoSet(jsonData);
  495. // 2. 각각의 기능 구현
  496. // 2.1 총알배송가능 지역, 총알배송 가능 시간 체크
  497. fnGetDailyDeliveryCheck();
  498. });
  499. // 3. 함수기능 정의
  500. // 3.1 프로모션 쿠폰 적용 함수
  501. function serialCpnApply() {
  502. let data = {
  503. rdCpnNm : $("#payForm #serialCpnNm").val()
  504. }
  505. let jsonData = JSON.stringify(data);
  506. $.ajax( {
  507. type : "POST",
  508. url : '/cart/list/serialCpnApply',
  509. contentType : 'application/json',
  510. dataType : 'json',
  511. data : jsonData,
  512. success : function(result) {
  513. var jsonObj = {"cartSqArr" : cartSqArr,"dispYn" : "Y"};
  514. var jsonData = JSON.stringify(jsonObj);
  515. // 성공일때는 쿠폰정보 및 포인트 정보 reset
  516. if (result.serialCpnInfo.result == "SUCCESS") {
  517. dcAmtInfoSet(jsonData);
  518. } else {
  519. alert(result.serialCpnInfo.result);
  520. }
  521. }
  522. });
  523. }
  524. // 1.1 고객정보로드
  525. var custemerInfoSet = function(jsonData) {
  526. $.ajax( {
  527. type : "POST",
  528. url : '/order/custemerInfo',
  529. data : jsonData,
  530. dataType : 'html',
  531. beforeSend : function(xhr, settings) {
  532. xhr.setRequestHeader("AJAX" , "true");
  533. xhr.setRequestHeader('Accept' , 'application/json');
  534. xhr.setRequestHeader('Content-Type' , 'application/json');
  535. gagajf.showProgressbar(true);
  536. },
  537. success : function(result) {
  538. if (result != null) {
  539. $("#custemerInfo").css("display", "block");
  540. $("#custemerInfo").html(result);
  541. }
  542. // 1.2 배송정보로드
  543. deliveryAddrInfoSet(jsonData);
  544. }
  545. });
  546. }
  547. // 1.2 배송정보로드
  548. var deliveryAddrInfoSet = function(jsonData) {
  549. $.ajax( {
  550. type : "POST",
  551. url : '/order/deliveryAddrInfo',
  552. data : jsonData,
  553. dataType : 'html',
  554. beforeSend : function(xhr, settings) {
  555. xhr.setRequestHeader("AJAX" , "true");
  556. xhr.setRequestHeader('Accept' , 'application/json');
  557. xhr.setRequestHeader('Content-Type' , 'application/json');
  558. gagajf.showProgressbar(true);
  559. },
  560. success : function(result) {
  561. if (result != null) {
  562. $("#deliveryAddrInfo").css("display", "block");
  563. $("#deliveryAddrInfo").html(result);
  564. }
  565. // 1.2 배송정보로드
  566. freegiftInfoSet(jsonData);
  567. }
  568. });
  569. }
  570. // 1.3 사은품정보로드
  571. var freegiftInfoSet = function(jsonData) {
  572. $.ajax( {
  573. type : "POST",
  574. url : '/order/freegiftInfo',
  575. data : jsonData,
  576. dataType : 'html',
  577. beforeSend : function(xhr, settings) {
  578. xhr.setRequestHeader("AJAX" , "true");
  579. xhr.setRequestHeader('Accept' , 'application/json');
  580. xhr.setRequestHeader('Content-Type' , 'application/json');
  581. gagajf.showProgressbar(true);
  582. },
  583. success : function(result) {
  584. if (result != null) {
  585. $("#freegiftInfo").html(result);
  586. // 2.2 사은품선택 라디오 버튼 기능
  587. $(".freegiftRdo").on("click", function() {
  588. var total_gift = 0;
  589. var total_deduct = 0;
  590. $(".freegiftRdo").each(function(){
  591. // 라디오버튼 사은품 체크
  592. if ($(this).is(":checked")) {
  593. // 수령거부가 아닐때 체크
  594. if ($(this).val() != "noSel") {
  595. total_gift += 1;
  596. total_deduct += parseInt($(this).attr("usepoint"));
  597. }
  598. }
  599. });
  600. $(".total_gift").text(total_gift); // 사은품총선택개수
  601. $(".total_deduct").text(total_deduct.addComma()); // 사은품총사용포인트
  602. $(".freegiftUsePnt").text(total_deduct);
  603. // 쿠폰초기화기능
  604. custCpnInit();
  605. });
  606. }
  607. // 1.5 결제타입로드
  608. paymentInfoSet(jsonData);
  609. }
  610. });
  611. }
  612. // 1.5 결제타입로드
  613. var paymentInfoSet = function(jsonData) {
  614. $.ajax( {
  615. type : "POST",
  616. url : '/order/paymentInfo',
  617. data : jsonData,
  618. dataType : 'html',
  619. beforeSend : function(xhr, settings) {
  620. xhr.setRequestHeader("AJAX" , "true");
  621. xhr.setRequestHeader('Accept' , 'application/json');
  622. xhr.setRequestHeader('Content-Type' , 'application/json');
  623. gagajf.showProgressbar(true);
  624. },
  625. success : function(result) {
  626. if (result != null) {
  627. $("#paymentInfo").css("display", "block");
  628. $("#paymentInfo").html(result);
  629. // 3.2 할인영역 설정
  630. dcAmtInfoSet(jsonData);
  631. }
  632. }
  633. });
  634. }
  635. // 3.2 할인영역 설정
  636. var dcAmtInfoSet = function(jsonData) {
  637. // 3.2.1 할인정보로드
  638. $.ajax( {
  639. type : "POST",
  640. url : '/order/dcAmtInfo',
  641. data : jsonData,
  642. dataType : 'html',
  643. beforeSend : function(xhr, settings) {
  644. xhr.setRequestHeader("AJAX" , "true");
  645. xhr.setRequestHeader('Accept' , 'application/json');
  646. xhr.setRequestHeader('Content-Type' , 'application/json');
  647. gagajf.showProgressbar(true);
  648. },
  649. success : function(result) {
  650. if (result != null) {
  651. $("#dcAmtInfo").css("display", "block");
  652. $("#dcAmtInfo").html(result);
  653. // 3.2.2 쿠폰적용초기화(할인율최고)
  654. custCpnInit();
  655. // 3.2.3 쿠폰 SELECT BOX 기능 설정(js적용)
  656. $('.select_custom.type1').each(function(index){
  657. var selecter01 = new sCombo($(this));
  658. // 선택박스 버튼기능 구현
  659. $(this).find("ul li").each(function(i){
  660. // SELECT BOX 버튼 기능 설정
  661. $(this).on("click", function(){
  662. // 쿠폰 선택없음
  663. if ($(this).prop("value") == 0) {
  664. // 쿠폰 선택없음
  665. cpnApplyDel($(this));
  666. }
  667. // 쿠폰선택
  668. else {
  669. // 쿠폰중복체크 후 적용
  670. if (custCpnDuplicationCheck($(this).prop("value"), index)) {
  671. // 쿠폰적용
  672. custCpnApply($(this));
  673. } else {
  674. alert("이미 적용된 쿠폰 입니다.");
  675. // 쿠폰적용불가
  676. custCpnNotApply($(this));
  677. }
  678. // 쿠폰할인금액 SUM
  679. custCpnSumAmtCal();
  680. // 최대할인혜택적용 체크해제
  681. if ($("#chk-maxdisc").is(":checked")) {
  682. $("#chk-maxdisc").attr("checked", false);
  683. }
  684. }
  685. });
  686. });
  687. });
  688. // 3.2.4 쿠폰 최대할인금액 초기화 버튼 설정
  689. $("#chk-maxdisc").on("click", function(){
  690. if ($(this).is(":checked")) {
  691. custCpnInit();
  692. }
  693. });
  694. // 3.2.5 쿠폰할인적용 삭제 버튼
  695. $(".btn_del_coupon").on("click", function(){
  696. //선택없음선택
  697. $(this).parent().parent().find("ul li").each(function(i){
  698. if (i == 0) {
  699. cpnApplyDel($(this)); // 쿠폰 선택없음
  700. }
  701. });
  702. });
  703. // 3.2.6 선포인트 적용 버튼 기능
  704. $("input[name='rdi-beforpoint']").each(function(){
  705. // 선포인트 초기 설정 사용함
  706. if ($(this).val() == "Y") {
  707. $(this).attr("checked", true);
  708. }
  709. // 버튼기능 구현
  710. $(this).on("click", function(){
  711. var rmPrePntAmt = parseInt($("input[name='rmPrePntAmt']").val());
  712. // 선포인트적용
  713. if ($(this).val() == "Y") {
  714. $("#prePntDcAmt").text("-"+rmPrePntAmt.addComma()+"원");
  715. } else {
  716. $("#prePntDcAmt").text("0원");
  717. }
  718. // 포인트기능 리렛
  719. pntDcAmtReset();
  720. });
  721. });
  722. // 3.2.6 포인트 적용버튼 기능
  723. $("#btn_point_apply").on("click", function(){
  724. var rmPntAmt = parseInt($("input[name='rmPntAmt']").val());
  725. var freegiftUsePnt = parseInt($(".freegiftUsePnt").text());
  726. var pntDcAmt = parseInt($("input[name='pntDcAmtStr']").val());
  727. var realOrdAmt = parseInt($(".realOrdSumAmt").text());
  728. var applyPntDcAmt = (realOrdAmt * 40) / 100;
  729. rmPntAmt = rmPntAmt - freegiftUsePnt;
  730. // 입력여부체크
  731. if (pntDcAmt < 1) {
  732. alert("사용할 포인트를 입력해주세요");
  733. // 포인트리셋기능
  734. pntDcAmtReset();
  735. return false;
  736. }
  737. // 보유포인트보다 초과 사용 불가
  738. if (pntDcAmt > rmPntAmt) {
  739. alert("보유포인트 보다 초과 사용 할 수 없습니다.");
  740. // 포인트리셋기능
  741. pntDcAmtReset();
  742. return false;
  743. }
  744. // TODO 포인트 사용금액 1000P 이상 사용
  745. if (pntDcAmt < 1000) {
  746. alert("포인트는 최소 1,000P이상 사용해야 합니다.");
  747. // 포인트리셋기능
  748. pntDcAmtReset();
  749. return false;
  750. }
  751. // 실결제금액보다 크게 적용 되었을때 적용 불가능
  752. if (pntDcAmt > applyPntDcAmt) {
  753. alert("결제금액의 최대 40%를 초과 사용 할 수 없습니다.");
  754. // 포인트리셋기능
  755. pntDcAmtReset();
  756. return false;
  757. }
  758. // 포인트 적용
  759. $(".pntDcSumAmt").text(pntDcAmt);
  760. $("#pntDcAmt").text("-"+pntDcAmt.addComma()+"원");
  761. // 상품권리렛기능
  762. gfcdUseAmtReset();
  763. });
  764. // 3.2.7 상품권 적용버튼 기능
  765. $("#btn_gfcd_apply").on("click", function(){
  766. var rmGfcdAmt = parseInt($("input[name='rmGfcdAmt']").val());
  767. var gfcdUseAmt = parseInt($("input[name='gfcdUseAmtStr']").val());
  768. // 입력여부체크
  769. if (gfcdUseAmt < 1 || $("input[name='gfcdUseAmtStr']").val() == "") {
  770. alert("사용할 금액을 입력해주세요");
  771. // 상품권리셋기능
  772. gfcdUseAmtReset();
  773. return false;
  774. }
  775. // 보유금액보다 초과 사용 불가
  776. if (gfcdUseAmt > rmGfcdAmt) {
  777. alert("보유금액 보다 초과 사용 할 수 없습니다.");
  778. // 상품권리셋기능
  779. gfcdUseAmtReset();
  780. return false;
  781. }
  782. // TODO 포인트 사용금액 1000원 이상 사용
  783. if (gfcdUseAmt < 1000) {
  784. alert("상품권 사용금액은 최소 1,000원 이상 사용해야 합니다.");
  785. // 상품권리셋기능
  786. gfcdUseAmtReset();
  787. return false;
  788. }
  789. // 상품권 적용
  790. $(".gfcdUseSumAmt").text(gfcdUseAmt);
  791. $("#gfcdUseAmt").text("-"+gfcdUseAmt.addComma()+"원");
  792. // 금액전체계산
  793. custCpnSumAmtCal();
  794. });
  795. }
  796. }
  797. });
  798. }
  799. // 3.3 쿠폰 최대할인율 쿠폰적용
  800. var custCpnInit = function() {
  801. // 쿠폰적용없음적용
  802. $(".select_custom.type1").each(function(index){
  803. // select box 쿠폰 적용
  804. var cpnCartSq = $(this).find("input[name='cpnCartSq']").val();
  805. // 장바구니시퀀스 체크
  806. $(".cartSq").each(function(){
  807. if (cpnCartSq == $(this).text()) {
  808. $(this).parent().find(".goodsCpnSq").text("0"); // 상품쿠폰시퀀스
  809. $(this).parent().find(".goodsCpnDcAmt").text("0"); // 상품쿠폰할인금액
  810. }
  811. });
  812. $(this).find("input[name='custCpnSq']").val("0");
  813. $(this).find("input[name='cpnDcAmt']").val("0");
  814. $(this).find(".select").text("선택없음");
  815. $(this).find(".cp_discount").css("display", "none");
  816. });
  817. // 최대할인율 쿠폰적용
  818. $('.select_custom.type1').each(function(index){
  819. cpnIndex = 0;
  820. cpnApplyTemp = false;
  821. // select 박스 반복문 실행
  822. $(this).find("ul li").each(function(i){
  823. cpnIndex++;
  824. // 1이상부터 중복 체크
  825. if (cpnApplyTemp == false) {
  826. if (cpnIndex > 1) {
  827. if (custCpnDuplicationCheck($(this).prop("value"), index)) {
  828. // 쿠폰적용
  829. custCpnApply($(this));
  830. // 쿠폰할인적용
  831. cpnApplyTemp = true;
  832. }
  833. }
  834. }
  835. });
  836. });
  837. // 선포인트기능리셋
  838. prePntDcAmtReset();
  839. }
  840. // 3.4 쿠폰중복사용체크
  841. var custCpnDuplicationCheck = function(custCpnSq, index) {
  842. var selCustSq = 0;
  843. var cnt = 0;
  844. // 쿠폰중본사용체크
  845. $("input[name='custCpnSq']").each(function(i){
  846. if (index != i) {
  847. selCustSq = $(this).val();
  848. if (selCustSq == custCpnSq) {
  849. cnt++;
  850. }
  851. }
  852. });
  853. // 쿠폰적용불가
  854. if (cnt > 0) {
  855. return false;
  856. }
  857. // 쿠폰적용가능
  858. else {
  859. return true;
  860. }
  861. }
  862. // 3.5 쿠폰중복체크 후 적용가능
  863. var custCpnApply = function(obj) {
  864. // select box 쿠폰 적용
  865. var cpnType = obj.parent().parent().find("input[name='cpnType']").val();
  866. // 상품쿠폰적용
  867. if (cpnType == "goodsCpn") {
  868. // 적용된 할인금액 text 설정
  869. var dcAmtStr = "- " + parseInt(obj.attr("data")).addComma() + " 원 할인적용";
  870. obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
  871. var cpnCartSq = obj.parent().parent().find("input[name='cpnCartSq']").val();
  872. // 장바구니시퀀스 체크
  873. $(".cartSq").each(function(){
  874. if (cpnCartSq == $(this).text()) {
  875. $(this).parent().find(".goodsCpnSq").text(obj.prop("value")); // 상품쿠폰시퀀스
  876. $(this).parent().find(".goodsCpnDcAmt").text(obj.attr("data")); // 상품쿠폰할인금액
  877. }
  878. });
  879. obj.parent().parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
  880. }
  881. // 장바구니쿠폰적용
  882. else if (cpnType == "cartCpn") {
  883. var dcWay = obj.parent().find("input[name='dcWay']").val();
  884. var dcVal = obj.parent().find("input[name='dcVal']").val();
  885. var cartCpnDcSumAmt = 0;
  886. var tempSumAmt = 0;
  887. var cartSqLen = $(".cartSq").length;
  888. var leftAmt = 0;
  889. var index = 1;
  890. // 장바구니쿠폰 해당 장바구니상품들 할인가 적용
  891. obj.find("input[name='cartCpnCartSq']").each(function(){
  892. var cartCpnCartSq = $(this).val();
  893. var cartCpnDcAmt = 0;
  894. // 장바구니시퀀스 체크
  895. $(".cartSq").each(function(){
  896. if (cartCpnCartSq == $(this).text()) {
  897. var orgCurrPrice = parseInt($(this).parent().find(".orgCurrPrice").text());
  898. var tmtb1DcAmt = parseInt($(this).parent().find(".tmtb1DcAmt").text());
  899. var tmtb2DcAmt = parseInt($(this).parent().find(".tmtb2DcAmt").text());
  900. var goodsCpnDcAmt = parseInt($(this).parent().find(".goodsCpnDcAmt").text());
  901. var tempAmt = orgCurrPrice - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
  902. tempSumAmt = tempSumAmt + tempAmt;
  903. // 할인율일때 할인금액
  904. if (dcWay == "G240_20") {
  905. cartCpnDcAmt = (tempAmt * dcVal) / 100;
  906. cartCpnDcSumAmt = cartCpnDcSumAmt + cartCpnDcAmt;
  907. $(this).parent().find(".cartCpnSq").val(obj.prop("value"));
  908. $(this).parent().find(".cartCpnDcAmt").val(cartCpnDcAmt);
  909. }
  910. }
  911. });
  912. });
  913. // 금액일때 할인금액 적용
  914. if (dcWay == "G240_10") {
  915. cartCpnDcSumAmt = dcVal;
  916. leftAmt = dcVal;
  917. index = 1;
  918. // 장바구니쿠폰 해당 장바구니상품들 할인가 적용
  919. obj.find("input[name='cartCpnCartSq']").each(function(){
  920. var cartCpnCartSq = $(this).val();
  921. var cartCpnDcAmt = 0;
  922. // 장바구니시퀀스 체크
  923. $(".cartSq").each(function(){
  924. if (cartCpnCartSq == $(this).text()) {
  925. var orgCurrPrice = parseInt($(this).parent().find(".orgCurrPrice").text());
  926. var tmtb1DcAmt = parseInt($(this).parent().find(".tmtb1DcAmt").text());
  927. var tmtb2DcAmt = parseInt($(this).parent().find(".tmtb2DcAmt").text());
  928. var goodsCpnDcAmt = parseInt($(this).parent().find(".goodsCpnDcAmt").text());
  929. var tempAmt = orgCurrPrice - tmtb1DcAmt - tmtb2DcAmt - goodsCpnDcAmt;
  930. var tempDiv = parseInt((tempAmt / tempSumAmt) * 100);
  931. var cartCpnDcAmt = 0;
  932. if (index == cartSqLen) {
  933. cartCpnDcAmt = leftAmt;
  934. } else {
  935. cartCpnDcAmt = parseInt((cartCpnDcSumAmt * tempDiv) / 100);
  936. leftAmt = leftAmt - cartCpnDcAmt;
  937. }
  938. $(this).parent().find(".cartCpnSq").text(obj.prop("value"));
  939. $(this).parent().find(".cartCpnDcAmt").text(cartCpnDcAmt);
  940. index++;
  941. }
  942. });
  943. });
  944. }
  945. obj.parent().parent().find("input[name='cpnDcAmt']").val(cartCpnDcSumAmt);
  946. var dcAmtStr = "- " + cartCpnDcSumAmt.addComma() + " 원 할인적용";
  947. obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
  948. }
  949. // 배송비쿠폰적용
  950. else if (cpnType == "delvCpn") {
  951. // 적용된 할인금액 text 설정
  952. var dcAmtStr = "- " + parseInt(obj.attr("data")).addComma() + " 원 할인적용";
  953. obj.parent().parent().parent().parent().parent().find(".cp_amount").text(dcAmtStr);
  954. var cpnCartSq = obj.parent().parent().find("input[name='cpnCartSq']").val();
  955. obj.parent().parent().find("input[name='cpnDcAmt']").val(obj.attr("data"));
  956. obj.parent().parent().find("input[name='delvFeeCd']").val(obj.attr("delvfeecd"));
  957. $(".delvCpnDcSumAmt").text(obj.attr("data"));
  958. }
  959. // select box 쿠폰 적용 (공통적용)
  960. obj.parent().parent().find("input[name='custCpnSq']").val(obj.prop("value"));
  961. obj.parent().parent().find(".select").text(obj.text());
  962. // 선택된 할인금액 노출
  963. obj.parent().parent().parent().parent().parent().find(".cp_discount").css("display", "block");
  964. // 선포인트기능리셋
  965. prePntDcAmtReset();
  966. }
  967. // 3.6 쿠폰중복체크 후 적용불가
  968. var custCpnNotApply = function(obj) {
  969. // 이전에 등록된 쿠폰시퀀스
  970. var custCpnSq = obj.parent().parent().find("input[name='custCpnSq']").val();
  971. // 이전에 등록된 쿠폰시퀀스 비교후 데이타 원복
  972. obj.parent().find("li").each(function(){
  973. if ($(this).prop("value") == custCpnSq) {
  974. $(this).parent().parent().find(".select").text($(this).text());
  975. if (custCpnSq == 0) {
  976. $(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "none");
  977. } else {
  978. $(this).parent().parent().parent().parent().parent().find(".cp_discount").css("display", "block");
  979. }
  980. }
  981. });
  982. // 선포인트기능리셋
  983. prePntDcAmtReset();
  984. }
  985. // 3.7 쿠폰 선택없음 기능 구현
  986. var cpnApplyDel = function(obj) {
  987. // 쿠폰타입(상품쿠폰, 장바구니쿠폰, 배송비쿠폰)
  988. var cpnType = obj.parent().parent().find("input[name='cpnType']").val();
  989. // 상품쿠폰적용
  990. if (cpnType == "goodsCpn") {
  991. // select box 쿠폰 적용
  992. var cpnCartSq = obj.parent().parent().find("input[name='cpnCartSq']").val();
  993. // 장바구니시퀀스 체크
  994. $(".cartSq").each(function(){
  995. if (cpnCartSq == $(this).text()) {
  996. $(this).parent().find(".goodsCpnSq").text("0"); // 상품쿠폰시퀀스
  997. $(this).parent().find(".goodsCpnDcAmt").text("0"); // 상품쿠폰할인금액
  998. }
  999. });
  1000. }
  1001. // 장바구니쿠폰적용
  1002. else if (cpnType == "cartCpn") {
  1003. // 장바구니쿠폰 시퀀스 0, 장바구니할인금액 0
  1004. $(".cartSq").each(function(){
  1005. $(this).parent().find(".cartCpnSq").text("0");
  1006. $(this).parent().find(".cartCpnDcAmt").text("0");
  1007. });
  1008. }
  1009. // 배송비쿠폰적용
  1010. else if (cpnType == "delvCpn") {
  1011. // 장바구니쿠폰 시퀀스 0, 장바구니할인금액 0
  1012. //$("input[name='custCpnSq']").each(function(){
  1013. //$(this).parent().find("input[name='delvFeeCd']").val("0");
  1014. //});
  1015. obj.parent().parent().find("input[name='delvFeeCd']").val("0");
  1016. }
  1017. obj.parent().parent().find("input[name='custCpnSq']").val("0");
  1018. obj.parent().parent().find("input[name='cpnDcAmt']").val("0");
  1019. obj.parent().parent().find(".select").text("선택없음");
  1020. obj.parent().parent().parent().parent().parent().find(".cp_discount").css("display", "none");
  1021. // 선포인트기능리셋
  1022. prePntDcAmtReset();
  1023. // 최대할인혜택적용 체크해제
  1024. if ($("#chk-maxdisc").is(":checked")) {
  1025. $("#chk-maxdisc").attr("checked", false);
  1026. }
  1027. }
  1028. // 3.9 선포인트리셋기능
  1029. var prePntDcAmtReset = function() {
  1030. var rmPrePntAmt = parseInt($("input[name='rmPrePntAmt']").val());
  1031. $("input[name='prePntDcAmt']").val(rmPrePntAmt);
  1032. // 선포인트사용여부 체크 후 적용
  1033. $("input[name='rdi-beforpoint']").each(function(){
  1034. // 선포인트 초기 설정 사용함
  1035. if ($(this).val() == "Y") {
  1036. $(this).attr("checked", true);
  1037. }
  1038. });
  1039. $("#prePntDcAmt").text("-"+rmPrePntAmt.addComma()+"원");
  1040. // 포인트기능 리렛
  1041. pntDcAmtReset();
  1042. }
  1043. // 3.10 포인트리셋기능
  1044. var pntDcAmtReset = function() {
  1045. $(".pntDcSumAmt").text("0");
  1046. $("input[name='pntDcAmtStr']").val("");
  1047. $("#pntDcAmt").text("0원");
  1048. // 상품권리셋기능
  1049. gfcdUseAmtReset();
  1050. }
  1051. // 3.11 상품권리셋기능
  1052. var gfcdUseAmtReset = function() {
  1053. $(".gfcdUseSumAmt").text("0");
  1054. $("input[name='gfcdUseAmtStr']").val("");
  1055. $("#gfcdUseAmt").text("0원");
  1056. // 금액전체계산
  1057. custCpnSumAmtCal();
  1058. }
  1059. // 3.12 쿠폰할인금액합계설정(금액전체계산)
  1060. var custCpnSumAmtCal = function() {
  1061. var cpnDcSumAmt = 0;
  1062. var cpnApplyCnt = 0;
  1063. $("input[name='cpnDcAmt']").each(function(){
  1064. cpnDcSumAmt = cpnDcSumAmt + parseInt($(this).val());
  1065. // 적용된 쿠폰 수량
  1066. if (parseInt($(this).val()) > 0) {
  1067. cpnApplyCnt++;
  1068. }
  1069. });
  1070. // 쿠폰영역
  1071. $(".maxdisc_amount").text("(-" + cpnDcSumAmt.addComma() + "원)"); // 쿠폰할인금액합계
  1072. $("#cpnApplyCnt").text(cpnApplyCnt + "장");
  1073. // 상품목록영역
  1074. $("#couponDcSumAmt").text("-" + cpnDcSumAmt.addComma() + "원"); // 쿠폰할인금액합계
  1075. $(".cpnDcSumAmt").text(cpnDcSumAmt);
  1076. // 배송비할인적용
  1077. $("input[name='cpnType']").each(function(){
  1078. if ($(this).val() == "delvCpn") {
  1079. var delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
  1080. // 최종배송비
  1081. $("#delvSumAmt").text(delvSumAmt.addComma() + "원");
  1082. $(".delvSumAmt").text(delvSumAmt);
  1083. }
  1084. });
  1085. // 2021.03.06 주문상세 테이블 적용
  1086. // 포인트금액 상품상세에 포인트금액 분배 작업
  1087. var prePntDcAmtYn = $("input[name='rdi-beforpoint']:checked").val();
  1088. var leftPntAmt = parseInt($(".pntDcSumAmt").text());
  1089. var leftGfcdAmt = parseInt($(".gfcdUseSumAmt").text());
  1090. var cartSqLenght = $(".cartSq").length;
  1091. var index = 1;
  1092. var orgGoodsSumAmt = 0;
  1093. var cpn1DcSumAmt = 0;
  1094. var ordSumAmt = 0;
  1095. var tmtb1DcSumAmt = 0;
  1096. var tmtb2DcSumAmt = 0;
  1097. var tmtbDcSumAmt = 0;
  1098. var goodsCpnDcSumAmt = 0;
  1099. var cartCpnDcSumAmt = 0;
  1100. var delvCpnDcSumAmt = 0;
  1101. var cpnDcSumAmt = 0;
  1102. var prePntDcSumAmt = 0;
  1103. var pntDcSumAmt = parseInt($(".pntDcSumAmt").text());
  1104. var gfcdUseSumAmt = parseInt($(".gfcdUseSumAmt").text());
  1105. var realOrdSumAmt = 0;
  1106. var savePntSumAmt = 0;
  1107. $(".cartSq").each(function(){
  1108. var orgCurrPrice = parseInt($(this).parent().find(".orgCurrPrice").text());
  1109. var cpn1DcAmt = parseInt($(this).parent().find(".cpn1DcAmt").text());
  1110. var optAddPrice = parseInt($(this).parent().find(".optAddPrice").text());
  1111. var goodsQty = parseInt($(this).parent().find(".goodsQty").text());
  1112. var tmtb1DcAmt = parseInt($(this).parent().find(".tmtb1DcAmt").text());
  1113. var tmtb2DcAmt = parseInt($(this).parent().find(".tmtb2DcAmt").text());
  1114. var goodsCpnDcAmt = parseInt($(this).parent().find(".goodsCpnDcAmt").text());
  1115. var cartCpnDcAmt = parseInt($(this).parent().find(".cartCpnDcAmt").text());
  1116. var prePntDcAmt1 = parseInt($(this).parent().find(".prePntDcAmt1").text());
  1117. var dcSumAmt = 0;
  1118. var savePntAmt1 = parseInt($(this).parent().find(".savePntAmt1").text());
  1119. // 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
  1120. orgGoodsSumAmt = orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
  1121. cpn1DcSumAmt = cpn1DcSumAmt + cpn1DcAmt;
  1122. tmtb1DcSumAmt = tmtb1DcSumAmt + tmtb1DcAmt;
  1123. tmtb2DcSumAmt = tmtb2DcSumAmt + tmtb2DcAmt;
  1124. tmtbDcSumAmt = tmtbDcSumAmt + (tmtb1DcAmt + tmtb2DcAmt);
  1125. goodsCpnDcSumAmt = goodsCpnDcSumAmt + goodsCpnDcAmt;
  1126. cartCpnDcSumAmt = cartCpnDcSumAmt + cartCpnDcAmt;
  1127. cpnDcSumAmt = cpnDcSumAmt + (goodsCpnDcAmt + cartCpnDcAmt);
  1128. prePntDcSumAmt = prePntDcSumAmt + prePntDcAmt1;
  1129. var ordAmt = ((orgCurrPrice - cpn1DcAmt) + optAddPrice) * goodsQty;
  1130. ordSumAmt = ordSumAmt + ordAmt;
  1131. // 선포인트사용여부
  1132. // 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
  1133. if (prePntDcAmtYn == "Y") {
  1134. dcSumAmt = tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
  1135. } else {
  1136. dcSumAmt = tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
  1137. }
  1138. // 주문금액설정
  1139. $(this).parent().find(".ordAmt").text(ordAmt);
  1140. $(this).parent().find(".dcSumAmt").text(dcSumAmt);
  1141. savePntSumAmt = savePntSumAmt + savePntAmt1;
  1142. });
  1143. // 포인트, 상품권 금액 분배
  1144. $(".cartSq").each(function(){
  1145. var ordAmt = parseInt($(this).parent().find(".ordAmt").text());
  1146. var dcSumAmt = parseInt($(this).parent().find(".dcSumAmt").text());
  1147. var tempDiv = parseInt((ordAmt / ordSumAmt) * 100);
  1148. var pntDcAmt1 = 0;
  1149. var gfcdUseAmt1 = 0;
  1150. if (index == cartSqLenght) {
  1151. pntDcAmt1 = leftPntAmt;
  1152. gfcdUseAmt1 = leftGfcdAmt;
  1153. } else {
  1154. pntDcAmt1 = parseInt((pntDcSumAmt * tempDiv) / 100);
  1155. gfcdUseAmt1 = parseInt((gfcdUseSumAmt * tempDiv) / 100);
  1156. leftPntAmt = leftPntAmt - pntDcAmt1;
  1157. leftGfcdAmt = leftGfcdAmt - gfcdUseAmt1;
  1158. }
  1159. var realOrdAmt1 = ordAmt - dcSumAmt - (pntDcAmt1 - gfcdUseAmt1);
  1160. realOrdSumAmt = realOrdSumAmt + realOrdAmt1;
  1161. $(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
  1162. $(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
  1163. $(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
  1164. index++;
  1165. });
  1166. $(".orgGoodsSumAmt").text(orgGoodsSumAmt);
  1167. $(".cpn1DcSumAmt").text(cpn1DcSumAmt);
  1168. $(".ordSumAmt").text(ordSumAmt);
  1169. $(".tmtb1DcSumAmt").text(tmtb1DcSumAmt);
  1170. $(".tmtb2DcSumAmt").text(tmtb2DcSumAmt);
  1171. $(".tmtbDcSumAmt").text(tmtbDcSumAmt);
  1172. $(".goodsCpnDcSumAmt").text(goodsCpnDcSumAmt);
  1173. $(".cartCpnDcSumAmt").text(cartCpnDcSumAmt);
  1174. $(".cpnDcSumAmt").text(cpnDcSumAmt);
  1175. $(".prePntDcSumAmt").text(prePntDcSumAmt);
  1176. $(".realOrdSumAmt").text(realOrdSumAmt);
  1177. $(".savePntSumAmt").text(savePntSumAmt);
  1178. var tempSavePnt = savePntSumAmt - prePntDcAmt;
  1179. // 사은품사용 후 보유포인트
  1180. var rmPntAmt = parseInt($("input[name='rmPntAmt']").val());
  1181. var freegiftUsePnt = parseInt($(".freegiftUsePnt").text());
  1182. rmPntAmt = rmPntAmt - freegiftUsePnt;
  1183. $(".rmPntAmt").text("보유 : " + rmPntAmt.addComma() + "P");
  1184. // 걸제영역
  1185. $("#btn_payment").text("동의 후 "+realOrdSumAmt.addComma()+"원 결제하기");
  1186. // 적립포인트
  1187. $("#savePntSumAmt").text(savePntSumAmt.addComma()+"P");
  1188. };
  1189. // 3.20 총알배송가능 지역, 총알배송 가능 시간 체크
  1190. var fnGetDailyDeliveryCheck = function () {
  1191. // TODO
  1192. var jsonObj = {"zipNo" : 12345};
  1193. var jsonData = JSON.stringify(jsonObj);
  1194. gagajf.ajaxJsonSubmit(
  1195. "/order/getDailyDeliveryCheck"
  1196. , jsonData
  1197. , function (result) {
  1198. // 자사몰 일반배송
  1199. $("#shotDelv").text(0);
  1200. $("#wmsDelv").text(wmsCnt);
  1201. $("#wmsDelvTitle").css("display", "block");
  1202. $("#shotDelvTitle").css("display", "none");
  1203. $(".tag_stype2").css("display", "none");
  1204. // 자사몰 총알배송
  1205. if (shotDelvYn == "Y") {
  1206. if (parseInt(result) > 0) {
  1207. $("#shotDelv").text(wmsCnt);
  1208. $("#wmsDelv").text(0);
  1209. $("#wmsDelvTitle").css("display", "none");
  1210. $("#shotDelvTitle").css("display", "block");
  1211. $(".tag_stype2").css("display", "block");
  1212. }
  1213. }
  1214. }
  1215. )
  1216. }
  1217. </script>
  1218. <script th:inline="javascript">
  1219. // 화면준비상태
  1220. $(document).ready( function() {
  1221. // 배송지변경 팝업열기
  1222. $(document).on('click','#btn_adrsChange_pop',function(e){
  1223. $.ajax( {
  1224. type : "POST",
  1225. url : '/order/delvAddrChangePop',
  1226. dataType : 'html',
  1227. success : function(result) {
  1228. if (result != null) {
  1229. $("#adrsChangePop").html(result);
  1230. $("#adrsChangePop").modal("show");
  1231. }
  1232. }
  1233. });
  1234. return false;
  1235. });
  1236. // 배송지추가 팝업열기
  1237. $(document).on('click','#btn_addrAdd_pop',function(e){
  1238. $.ajax( {
  1239. type : "POST",
  1240. url : '/order/delvAddrAddPop',
  1241. dataType : 'html',
  1242. success : function(result) {
  1243. if (result != null) {
  1244. $("#adrsAddPop").html(result);
  1245. $("#adrsAddPop").modal("show");
  1246. }
  1247. }
  1248. });
  1249. return false;
  1250. });
  1251. // 배송지수정 팝업열기
  1252. $("#btn_addrModify_pop").on("click", function(e){
  1253. $.ajax( {
  1254. type : "POST",
  1255. url : '/order/delvAddrModifyPop',
  1256. dataType : 'html',
  1257. success : function(result) {
  1258. if (result != null) {
  1259. $("#adrsModifyPop").html(result);
  1260. $("#adrsModifyPop").modal("show");
  1261. }
  1262. }
  1263. });
  1264. return false;
  1265. });
  1266. // 배송요청사항 팝업열기
  1267. $("#btn_rqstModify_pop").on("click", function(e){
  1268. var jsonObj = new Object();
  1269. jsonObj.delvMemo = $("input[name='delvMemo']").val();
  1270. $.ajax({
  1271. type : "POST",
  1272. url : "/order/delvMemoChangePop",
  1273. data : jsonObj,
  1274. dataType : "html",
  1275. success : function(result) {
  1276. if (result != null) {
  1277. $("#rqstModifyPop").html(result);
  1278. $("#rqstModifyPop").modal("show");
  1279. }
  1280. }
  1281. });
  1282. return false;
  1283. });
  1284. // 해외배송 입력
  1285. $(document).on('change','.odPayment .area_overseas #rdi-overs1', function(e){
  1286. $('.info_box.overs2').hide();
  1287. $('.info_box.overs1').show();
  1288. return false;
  1289. }).on('change','.odPayment .area_overseas #rdi-overs2', function(e){
  1290. $('.info_box.overs1').hide();
  1291. $('.info_box.overs2').show();
  1292. return false;
  1293. });
  1294. // 사은품지급안내 팝업열기
  1295. $("#btn_infoGift_pop").on("click",function(e){
  1296. $.ajax({
  1297. type : "POST",
  1298. url : "/order/freegiftInfoPop",
  1299. dataType : "html",
  1300. success : function(result) {
  1301. if (result != null) {
  1302. $("#infoGiftPop").html(result);
  1303. $("#infoGiftPop").modal("show");
  1304. }
  1305. }
  1306. });
  1307. return false;
  1308. });
  1309. // 할인쿠폰 확인
  1310. $(document).on('click','.odPayment .area_seldiscount .btn_coupon_toggle',function(e){
  1311. $('.coupon_list').toggle();
  1312. $(this).toggleClass('on');
  1313. return false;
  1314. });
  1315. // 결제수단 선택
  1316. $(document).on('change','.odPayment .area_paymethod .paymethod_radio input',function(e){
  1317. $('.radio_blk').removeClass('on');
  1318. $(this).parents('.radio_blk').addClass('on');
  1319. $(this).parents('.radio_blk').find('.paymethod_box').show();
  1320. $(this).parents('.radio_blk').siblings('div').find('.paymethod_box').hide();
  1321. var paymethodlabel = $(this).prop('labels');
  1322. $(this).parents('li').find('.fold_head .data span').text($(paymethodlabel).text());
  1323. // 간편결제 카드추가 슬라이드
  1324. var swiper = new Swiper('.paymethod_box .card_quickpay .list_card', {
  1325. slidesPerView: 'auto',
  1326. spaceBetween: 160,
  1327. centeredSlides: true,
  1328. navigation: {
  1329. nextEl: '.list_card .swiper-button-next',
  1330. prevEl: '.list_card .swiper-button-prev',
  1331. },
  1332. });
  1333. return false;
  1334. });
  1335. // STYLE24 간편결제 배너닫기
  1336. $(document).on('click','.odPayment .area_paymethod .quickpay_bnr .btn_close_bnr',function(e){
  1337. $('.quickpay_bnr').hide();
  1338. });
  1339. // 결제수단 선택 > 즐겨찾기 추가시
  1340. $(document).on('click','.odPayment .area_paymethod .paymethod_box .card .etc .btn_favorcard',function(e){
  1341. $(this).toggleClass('active');
  1342. return false;
  1343. });
  1344. // 결제수단 > 일반결제> 실시간계좌이체 선택시
  1345. $(document).on('change','.odPayment input:radio[name=rdi-paynormal]',function(e){
  1346. var paynormalValue = $(this).attr('id');
  1347. if (paynormalValue == 'rdi-paynormal2') {
  1348. $('.area_paymethod .agree_insurance').show();
  1349. } else {
  1350. $('.area_paymethod .agree_insurance').hide();
  1351. }
  1352. return false;
  1353. });
  1354. // 개인정보동의 열고닫기
  1355. $(document).on('click','.area_paymentinfo .payinfo_blk a',function(e){
  1356. e.preventDefault();
  1357. $(this).parents('.payinfo_blk').toggleClass('on');
  1358. var privacyToggle = $(this).find('span');
  1359. $(privacyToggle).text($(privacyToggle).text() == '보기' ? '닫기' : '보기');
  1360. return false;
  1361. });
  1362. // 간편결제등록 > STEP1.이용약관 팝업열기
  1363. $(document).on('click','.btn_addcard',function(e){
  1364. $("#qPayAgree_pop").modal("show");
  1365. return false;
  1366. });
  1367. // 간편결제등록 > STEP1.이용약관 체크
  1368. $(document).on('click','.area_QpayCk .agr_select button',function(e){
  1369. $(this).parents('.area_QpayCk').find('.info_agrQpay').toggle();
  1370. var payagrToggle = $(this).find('span');
  1371. $(payagrToggle).text($(payagrToggle).text() == '약관열기' ? '약관닫기' : '약관열기');
  1372. return false;
  1373. });
  1374. // 간편결제등록 > STEP1.이용약관 체크박스 전체선택
  1375. $(document).on('click','#chk-Qpay-agrAll',function(e){
  1376. $(this).parents(".qPayAgree_pop").find('.agree_Qpay input').prop("checked", $(this).is(":checked"));
  1377. });
  1378. // 간편결제등록 > STEP1.이용약관 체크박스 개별선택
  1379. $(document).on("click", ".agree_Qpay input",function(e){
  1380. var is_checked = true;
  1381. $(".agree_Qpay input").each(function(){
  1382. is_checked = is_checked && $(this).is(":checked");
  1383. });
  1384. $("#chk-Qpay-agrAll").prop("checked", is_checked);
  1385. });
  1386. // 간편결제등록 > 본인인증 팝업열기
  1387. $(document).on('click','#btn_qPayidConfirm_pop',function(e){
  1388. $("#qPayidConfirm_pop").modal("show");
  1389. return false;
  1390. });
  1391. });
  1392. </script>
  1393. </th:block>
  1394. </body>
  1395. </html>