NoMemberCreExchangeDetailFormWeb.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org"
  4. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  5. layout:decorator="web/common/layout/NoMemberLayoutWeb">
  6. <!--
  7. *******************************************************************************
  8. * @source : NoMemberCreExchangeDetailFormWeb.html
  9. * @desc : 비회원 > 취소/반품/교환내역 > 교환상세 Page
  10. *============================================================================
  11. * STYLE24
  12. * Copyright(C) 2021 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.05.03 card007 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <div class="content myOrderView"> <!-- 페이지특정 클래스 = myOrderView -->
  22. <div class="cont_body">
  23. <!-- CONT-BODY -->
  24. <div class="lnb">
  25. <div class="lnb_tit">
  26. <h2>마이페이지</h2>
  27. </div>
  28. <div class="lnb_list">
  29. <ul id="mypageLnbList"></ul>
  30. </div>
  31. </div>
  32. <div class="cont">
  33. <div class="sec_head">
  34. <h3 class="subH1">교환상세</h3>
  35. <span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
  36. </div>
  37. <div class="sec_body">
  38. <div class="part_goods">
  39. <div class="goods_head">
  40. <p>주문일 <span th:text="${oneData.ordDt}"></span></p>
  41. <a href="javascript:void(0)" th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}, noMember=noMember" onclick="fnCreCancel(this);">전체신청취소</a>
  42. </div>
  43. <div class="goods_cont">
  44. <!-- 주문상품 -->
  45. <th:block th:if="${exchangeDetailList.exchangeDetailList}" th:each="exchangeDtl, status : ${exchangeDetailList.exchangeDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
  46. <div class="goods_info">
  47. <div class="order_desc">
  48. <div class="goods_box">
  49. <div class="gd_item">
  50. <a href="javascript:void(0)" th:attr="goodsCd=${exchangeDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
  51. <span class="thumb">
  52. <img th:src="${imageUrl + '/' + exchangeDtl.sysImgNm}" width="100%" alt="">
  53. </span>
  54. <p>
  55. <span class="brand" th:text="${exchangeDtl.brandNm}"></span>
  56. <span class="tag primary" th:if="${exchangeDtl.shotDelvYn == 'Y'}">총알배송</span>
  57. <span class="tag" th:if="${exchangeDtl.shotDelvYn == 'N' and exchangeDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
  58. <span class="tag" th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</span>
  59. </p>
  60. <p>
  61. <span class="name" th:text="${exchangeDtl.goodsNm}"></span>
  62. </p>
  63. </a>
  64. </div>
  65. <div class="gd_opt">
  66. <div class="option_wrap">
  67. <span class="title sr-only">주문 옵션</span>
  68. <span class="option" th:if="${exchangeDtl.goodsType == 'G056_S'}" th:each="option, status : ${exchangeDtl.colorNmArr}" th:text="|${exchangeDtl.itemNmArr[status.index]} / ${option} / ${exchangeDtl.optCd2Arr[status.index]}|"></span>
  69. <span class="option" th:unless="${exchangeDtl.goodsType == 'G056_S'}" th:text="|${exchangeDtl.colorNm} / ${exchangeDtl.optCd2}|"></span>
  70. </div>
  71. </div>
  72. <div class="gd_opt">
  73. <div class="option_wrap">
  74. <span class="title">교환 옵션</span>
  75. <span class="option" th:if="${exchangeDtl.goodsType == 'G056_S'}" th:each="option, status : ${exchangeDtl.chgColorNmArr}" th:text="|${exchangeDtl.chgItemNmArr[status.index]} / ${option} / ${exchangeDtl.chgOptCd2Arr[status.index]}|"></span>
  76. <span class="option" th:unless="${exchangeDtl.goodsType == 'G056_S'}" th:text="|${exchangeDtl.chgColorNm} / ${exchangeDtl.chgOptCd2}|"></span>
  77. </div>
  78. </div>
  79. <div class="gd_calc">
  80. <p>
  81. <span class="count"><em th:text="${exchangeDtl.chgQty}"></em>개</span>
  82. </p>
  83. <!-- <p>-->
  84. <!-- <span class="price_org" th:if="${exchangeDtl.priceOrg > exchangeDtl.priceSale}"><em th:text="${#numbers.formatInteger(exchangeDtl.priceOrg, 1, 'COMMA')}"></em>원</span>-->
  85. <!-- <span class="price_sale"><em th:text="${#numbers.formatInteger(exchangeDtl.priceSale, 1, 'COMMA')}"></em>원</span>-->
  86. <!-- </p>-->
  87. </div>
  88. </div>
  89. <div class="status_box">
  90. <p>
  91. <th:block th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_20' or exchangeDtl.ordDtlStat == 'G013_30' or exchangeDtl.ordDtlStat == 'G013_35' or exchangeDtl.ordDtlStat == 'G013_40' or exchangeDtl.ordDtlStat == 'G013_50')}" th:text="|교환진행중|"></th:block>
  92. <th:block th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_60' or exchangeDtl.ordDtlStat == 'G013_70')}" th:text="|교환완료|"></th:block>
  93. <th:block th:if="${exchangeDtl.chgStat == 'G685_49'}" th:text="|접수취소|"></th:block>
  94. <th:block th:unless="${exchangeDtl.chgStat == 'G685_40' or exchangeDtl.chgStat == 'G685_49'}" th:text="${exchangeDtl.chgStatNm}"></th:block>
  95. <span class="date" th:text="${exchangeDtl.chgDate}"></span>
  96. <span class="time" th:text="${exchangeDtl.chgTime}"></span>
  97. </p>
  98. </div>
  99. <div class="button_box">
  100. <p th:if="${exchangeDtl.chgStat == 'G685_32' or exchangeDtl.chgStat == 'G685_21'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordChgSq=${exchangeDtl.ordChgSq}" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>
  101. <p th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_20' or exchangeDtl.ordDtlStat == 'G013_30' or exchangeDtl.ordDtlStat == 'G013_35' or exchangeDtl.ordDtlStat == 'G013_40' or exchangeDtl.ordDtlStat == 'G013_50')}"><button type="button" class="btn btn_default btn_sm" th:attr="${exchangeDtl.ordDtlNo}" onclick="fnGoToDeliveryTrack(this);"><span>배송조회</span></button></p>
  102. </div>
  103. </div>
  104. <!-- 교환결제대기 -->
  105. <div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_21' or (exchangeDtl.chgGb == 'G680_40' and exchangeDtl.chgStat == 'G685_32')}"><p th:text="|${exchangeDtl.addPayCost}|원 결제 후 교환 가능합니다."></p></div>
  106. <!-- 교환접수 -->
  107. <div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_20'}"><p>교환 신청이 접수 되었습니다. 신속하게 처리하여 드리겠습니다.</p></div>
  108. <!-- 회수요청 -->
  109. <div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_30'}"><p>고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p></div>
  110. <!-- 교환상품검수중 -->
  111. <div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_31' and exchangeDtl.chgGb == 'G680_40'}"><p>고객님이 교환하신 상품을 검수 중에 있습니다.</p></div>
  112. <!-- 교환완료 -->
  113. <div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_40' and (exchangeDtl.chgOrdDtlStat == 'G013_60' or exchangeDtl.chgOrdDtlStat == 'G013_70')}"><p>교환이 완료되었습니다.</p></div>
  114. <!-- 교환철회 -->
  115. <div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_49'}"><p>요청하신 교환을 취소하였습니다.</p></div>
  116. </div>
  117. </th:block>
  118. <!-- //주문상품 -->
  119. </div>
  120. </div>
  121. <h4 class="subH3">상세 정보</h4>
  122. <div class="tbl type1">
  123. <table>
  124. <colgroup>
  125. <col width="210">
  126. <col width="*">
  127. </colgroup>
  128. <tbody>
  129. <tr>
  130. <th>교환접수 일자</th>
  131. <td th:text="${oneData.chgDt}"></td>
  132. </tr>
  133. <tr>
  134. <th>교환완료 일자</th>
  135. <td th:if="${oneData.chgStat == 'G685_40' && (oneData.ordDtlStat == 'G013_60' or oneData.ordDtlStat == 'G013_70')}" th:text="${oneData.completeDt}"></td>
  136. </tr>
  137. </tbody>
  138. </table>
  139. </div>
  140. <h4 class="subH3">교환 상품 배송지</h4>
  141. <div class="tbl type1">
  142. <table>
  143. <colgroup>
  144. <col width="210">
  145. <col width="*">
  146. </colgroup>
  147. <tbody>
  148. <tr>
  149. <th>
  150. 배송지 정보
  151. </th>
  152. <td>
  153. <div class="block_line">
  154. <ul>
  155. <li>
  156. <span id="recipNm" th:text="${oneData.recipNm}"></span>
  157. </li>
  158. <li>
  159. <span id="recipPhnno" th:text="${oneData.recipPhnno}"></span>
  160. </li>
  161. <li>
  162. <span id="recipAddr" th:text="|${oneData.recipBaseAddr} ${oneData.recipDtlAddr}|"></span>
  163. <button type="button" class="btn btn_default btn_sm" th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35'}" onclick="fnChangeAddr('recip');"><span>배송지 변경</span></button>
  164. </li>
  165. <li>
  166. 배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${oneData.delvMemo}"></span>
  167. <button type="button" class="btn_underline" th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35'}" onclick="fnChangeMemo('recip')"><span>변경하기</span></button>
  168. </li>
  169. </ul>
  170. </div>
  171. </td>
  172. </tr>
  173. </tbody>
  174. </table>
  175. </div>
  176. <th:block th:if="${oneData.wdGb == 'W'}">
  177. <h4 class="subH3">교환 회수지 주소</h4>
  178. <div class="tbl type1">
  179. <table>
  180. <colgroup>
  181. <col width="210">
  182. <col width="*">
  183. </colgroup>
  184. <tbody>
  185. <tr>
  186. <th>회수 진행 여부</th>
  187. <td>회수요청</td>
  188. </tr>
  189. <tr>
  190. <th>회수지 정보</th>
  191. <td>
  192. <div class="block_line">
  193. <ul>
  194. <li>
  195. <span id="chgerNm" th:text="${oneData.chgerNm}"></span>
  196. </li>
  197. <li>
  198. <span id="chgerPhnno" th:text="${oneData.chgerPhnno}"></span>
  199. </li>
  200. <li>
  201. <span id="chgerAddr" th:text="|${oneData.chgerBaseAddr} ${oneData.chgerDtlAddr}|"></span>
  202. <button type="button" class="btn btn_default btn_sm" th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
  203. </li>
  204. <li>
  205. 배송요청 사항&nbsp;:&nbsp;<span id="chgerRtnMemo" th:text="${oneData.chgerRtnMemo}"></span>
  206. <button type="button" class="btn_underline" th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}" onclick="fnChangeMemo('chger');"><span>변경하기</span></button>
  207. </li>
  208. </ul>
  209. </div>
  210. </td>
  211. </tr>
  212. <tr th:if="${not #strings.isEmpty(oneData.wdInvoiceNo) and not #strings.isEmpty(oneData.shipCompNm)}">
  213. <th>회수 정보</th>
  214. <td>
  215. <th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
  216. <button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
  217. </td>
  218. </tr>
  219. </tbody>
  220. </table>
  221. </div>
  222. </th:block>
  223. <th:block th:if="${oneData.addPayCost > 0}">
  224. <h4 class="subH3">결제정보</h4>
  225. <div class="tbl type6">
  226. <table>
  227. <colgroup>
  228. <col width="50%">
  229. <col width="50%">
  230. </colgroup>
  231. <tbody>
  232. <tr>
  233. <td>
  234. <dl>
  235. <div>
  236. <dt>배송비</dt>
  237. <dd>
  238. <div class="price">
  239. <span class="order_total_price"><em th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></em>원</span>
  240. </div>
  241. </dd>
  242. </div>
  243. <!-- <div class="include_item"> &lt;!&ndash; 할인항목 표기 class명 include_item &ndash;&gt;-->
  244. <!-- <dt>제휴할인</dt>-->
  245. <!-- <dd><em>-123,456,789</em>원</dd>-->
  246. <!-- </div>-->
  247. </dl>
  248. </td>
  249. <td>
  250. <dl>
  251. <div>
  252. <dt>결제 금액</dt>
  253. <dd>
  254. <div class="price">
  255. <span class="pay_total_price"><em th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></em>원</span>
  256. </div>
  257. </dd>
  258. </div>
  259. <div>
  260. <dt class="sr-only">결제방법</dt>
  261. <dd th:if="${oneData.payMeans == 'G014_30'}" th:text="|${oneData.payMeansNm}(${oneData.cardNm}) / ${oneData.cardMips}|"></dd>
  262. <dd th:if="${oneData.payMeans == 'G014_60'}" th:text="${oneData.payMeansNm}"></dd>
  263. </div>
  264. <div th:if="${oneData.payMeans == 'G014_30'}">
  265. <dt class="sr-only">영수증 확인</dt>
  266. <dd>
  267. <button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
  268. </dd>
  269. </div>
  270. </dl>
  271. </td>
  272. </tr>
  273. </tbody>
  274. </table>
  275. <p class="t_help">※ NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
  276. </div>
  277. </th:block>
  278. <div class="btn_footer_area">
  279. <button type="button" class="btn btn_dark btn_md" onclick="fnGoToNoMemberCreList();"><span>확인</span></button>
  280. </div>
  281. </div>
  282. </div>
  283. <!-- // CONT-BODY -->
  284. </div>
  285. </div>
  286. <script src="/ux/plugins/gaga/gaga.paging.js"></script>
  287. <script th:inline="javascript">
  288. /*<![CDATA[*/
  289. let addrGb = '';
  290. let memoGb = '';
  291. var isLogin = [[${isLogin}]];
  292. let oneData = [[${oneData}]];
  293. let ordNo = oneData.ordNo;
  294. let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
  295. // 추가배송비 전표 데이터 설정
  296. let paymentInfo = {};
  297. paymentInfo.pgTid = oneData.pgTid;
  298. let orderAmtInfo = {};
  299. orderAmtInfo.realOrdAmt = oneData.addPayCost;
  300. orderAmtInfo.realDelvAmt = 0;
  301. $(document).ready(function() {
  302. // 마이페이지 LNB 설정
  303. fnSetNoMemberLnbList(2);
  304. // 마이페이지 location 설정
  305. fnSetNoMemberLocation('취소/반품/교환 내역', '교환 상세');
  306. });
  307. // 배송메모 및 반품메모 변경 처리
  308. var fnChangeMemo = function(param) {
  309. memoGb = param;
  310. fnChangeDeliveryMemo();
  311. }
  312. // 배송지 및 교환지 변경 처리
  313. var fnChangeAddr = function(param) {
  314. addrGb = param;
  315. fnChangeDeliveryAddr();
  316. }
  317. // 배송지 및 회수지 정보 설정
  318. var delvAddrSet = function(delvObj) {
  319. let url = '';
  320. let ordChgSq = oneData.ordChgSq;
  321. let delvAddrSq = oneData.delvAddrSq;
  322. let recipNm = delvObj.recipNm;
  323. let recipPhnno = delvObj.recipPhnno;
  324. let recipZipcode = delvObj.recipZipcode;
  325. let recipBaseAddr = delvObj.recipBaseAddr;
  326. let recipDtlAddr = delvObj.recipDtlAddr;
  327. let delvMemo = delvObj.delvMemo;
  328. let recipAddr = recipBaseAddr + ' ' + recipDtlAddr;
  329. let data = {};
  330. if (addrGb == 'chger') {
  331. url = '/noMember/change/chger/addr';
  332. data.ordChgSq = ordChgSq;
  333. data.chgerNm = recipNm;
  334. data.chgerPhnno = recipPhnno;
  335. data.chgerZipcode = recipZipcode;
  336. data.chgerBaseAddr = recipBaseAddr;
  337. data.chgerDtlAddr = recipDtlAddr;
  338. data.chgerRtnMemo = delvMemo;
  339. } else {
  340. url = '/noMember/change/delvery/addr';
  341. data.delvAddrSq = delvAddrSq;
  342. data.recipNm = recipNm;
  343. data.recipPhnno = recipPhnno;
  344. data.recipZipcode = recipZipcode;
  345. data.recipBaseAddr = recipBaseAddr;
  346. data.recipDtlAddr = recipDtlAddr;
  347. data.delvMemo = delvMemo;
  348. }
  349. let jsonData = JSON.stringify(data);
  350. gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
  351. if (result.status == '200') {
  352. if (addrGb == 'chger') {
  353. $('#chgerNm').text(recipNm);
  354. $('#chgerPhnno').text(recipPhnno);
  355. $('#chgerAddr').text(recipAddr);
  356. $('#chgerRtnMemo').text(delvMemo);
  357. } else {
  358. $('#recipNm').text(recipNm);
  359. $('#recipPhnno').text(recipPhnno);
  360. $('#recipAddr').text(recipAddr);
  361. $('#delvMemo').text(delvMemo);
  362. }
  363. }
  364. });
  365. }
  366. // 배송메모 설정
  367. var delvMemoSet = function(delvMemoObj) {
  368. let url = '';
  369. let ordChgSq = oneData.ordChgSq;
  370. let delvAddrSq = oneData.delvAddrSq;
  371. let delvMemo = delvMemoObj.delvMemo;
  372. let data = {};
  373. if (memoGb == 'chger') {
  374. url = '/noMember/change/chger/rtn/memo';
  375. data.ordChgSq = ordChgSq;
  376. data.chgerRtnMemo = delvMemo;
  377. } else {
  378. url = '/noMember/change/delvery/memo';
  379. data.delvAddrSq = delvAddrSq;
  380. data.delvMemo = delvMemo;
  381. }
  382. let jsonData = JSON.stringify(data);
  383. gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
  384. if (result.status == '200') {
  385. if (memoGb == 'chger') {
  386. $("#chgerRtnMemo").text(delvMemo);
  387. } else {
  388. $("#delvMemo").text(delvMemo);
  389. }
  390. }
  391. });
  392. }
  393. var fnGoToWithdrawDelivery = function(param) {
  394. // TODO
  395. // 회수조회 페이지 이동
  396. }
  397. /*]]>*/
  398. </script>
  399. </th:block>
  400. </body>
  401. </html>