ExchangeRequestForm.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864
  1. <!DOCTYPE html>
  2. <html lang="ko" xmlns:th="http://www.thymeleaf.org">
  3. <!--
  4. *******************************************************************************
  5. * @source : ExchangeRequestForm.html
  6. * @desc : 교환요청 화면
  7. *============================================================================
  8. * STYLE24
  9. * Copyright(C) 2021 TSIT, All rights reserved.
  10. *============================================================================
  11. * VER DATE AUTHOR DESCRIPTION
  12. * === =========== ========== =============================================
  13. * 1.0 2021.01.15 card007 최초 작성
  14. *******************************************************************************
  15. -->
  16. <div class="modalPopup" data-width="1400" data-height="600">
  17. <div class="panelStyle">
  18. <div class="panelTitle">
  19. <h2>교환요청</h2>
  20. <button type="button" class="close" onclick="uifnPopupClose('popupExchangeRequestForm');"><i class="fa fa-times"></i></button>
  21. </div>
  22. <div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
  23. <form id="exchangeRequestFrm" name="exchangeRequestFrm" action="/orderChange/exchange" method="post" target="hdFrameForOrderExchange">
  24. <input type="hidden" name="ordNo" th:value="${ordNo}"/>
  25. <input type="hidden" name="chgReason" value=""/>
  26. <input type="hidden" name="chgReasonDesc" value=""/>
  27. <h4>주문정보</h4>
  28. <div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
  29. <h4>배송비정보</h4>
  30. <div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
  31. <div style="text-align:right; padding-bottom:5px; padding-top:5px;">
  32. <button type="button" class="btn btn-success" id="fnExchangeRequestSubmit" onclick="fnExchangeRequestSubmit();">요청</button>
  33. </div>
  34. <table class="frmStyle">
  35. <colgroup>
  36. <col style="width:160px;" />
  37. <col style="width:320px;" />
  38. <col style="width:160px;" />
  39. <col />
  40. </colgroup>
  41. <tbody>
  42. <tr>
  43. <th>교환사유 <i class="star"></i></th>
  44. <td>
  45. <select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
  46. <option value="">[선택하세요]</option>
  47. <option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
  48. </select>
  49. </td>
  50. <th>귀책사유</th>
  51. <td><span id="imputeReason"></span></td>
  52. </tr>
  53. <tr>
  54. <th>회수방법</th>
  55. <td>
  56. <label class="rdoBtn"><input type="radio" name="wdGb" th:id="wdGb" value="W" onCLick="fnChangeQty()" checked="checked"/>회수요청<span></span></label>
  57. <label class="rdoBtn"><input type="radio" name="wdGb" th:id="wdGb" value="D" onCLick="fnChangeQty()"/>직접발송<span></span></label>
  58. </td>
  59. <th>추가배송비</th>
  60. <td id="addDelvFee"></td>
  61. </tr>
  62. <tr>
  63. <th>요청메모</th>
  64. <td colspan="3">
  65. <textarea id="chgMemo" name="chgMemo" style="height:80px;" placeholder="교환사유를 300자내외로 작성해 주세요"></textarea>
  66. </td>
  67. </tr>
  68. </tbody>
  69. </table>
  70. <h4>회수지 정보</h4>
  71. <table class="frmStyle">
  72. <colgroup>
  73. <col style="width:160px;" />
  74. <col style="width:320px;" />
  75. <col style="width:160px;" />
  76. <col />
  77. </colgroup>
  78. <tbody>
  79. <tr>
  80. <th>보내는사람 <i class="star"></i></th>
  81. <td colspan="3"><input type="text" name ="chgerNm" class=""/></td>
  82. </tr>
  83. <tr>
  84. <th>회수지주소 <i class="star"></i></th>
  85. <td colspan="3">
  86. <input type="text" name ="chgerZipNo" class="w100" readonly="readonly"/>
  87. <button type="button" class="btn btn-info" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
  88. <input type="text" name ="chgerBaseAddr" class="w300"/>
  89. <input type="text" name ="chgerDtlAddr" class="w300"/>
  90. </td>
  91. </tr>
  92. <tr>
  93. <th>일반전화</th>
  94. <td>
  95. <select name="chgerTelno1" class="w100">
  96. <option value="">[선택하세요]</option>
  97. <option th:if="${TelExcNoList}" th:each="oneData, status : ${TelExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
  98. </select>
  99. - <input type="text" name ="chgerTelno2" class="w60" value="0000" />
  100. - <input type="text" name ="chgerTelno3" class="w60" value="0000" />
  101. </td>
  102. <th>휴대전화 <i class="star"></i></th>
  103. <td>
  104. <select name="chgerPhnno1" class="w100">
  105. <option value="">[선택하세요]</option>
  106. <option th:if="${PhnExcNoList}" th:each="oneData, status : ${PhnExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
  107. </select>
  108. - <input type="text" name ="chgerPhnno2" class="w60" value="0000" />
  109. - <input type="text" name ="chgerPhnno3" class="w60" value="0000" />
  110. </td>
  111. </tr>
  112. </tbody>
  113. </table>
  114. <h4>교환지 정보</h4>
  115. <table class="frmStyle">
  116. <colgroup>
  117. <col style="width:160px;" />
  118. <col style="width:320px;" />
  119. <col style="width:160px;" />
  120. <col />
  121. </colgroup>
  122. <tbody>
  123. <tr>
  124. <th>받는사람 <i class="star"></i></th>
  125. <td colspan="3"><input type="text" name ="recipNm" class=""/></td>
  126. </tr>
  127. <tr>
  128. <th>교환지주소 <i class="star"></i></th>
  129. <td colspan="3">
  130. <input type="text" name ="recipZipNo" class="w100" readonly="readonly"/>
  131. <button type="button" class="btn btn-info" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
  132. <input type="text" name ="recipBaseAddr" class="w300"/>
  133. <input type="text" name ="recipDtlAddr" class="w300"/>
  134. </td>
  135. </tr>
  136. <tr>
  137. <th>일반전화</th>
  138. <td>
  139. <select name="recipTelno1" class="w100">
  140. <option value="">[선택하세요]</option>
  141. <option th:if="${TelExcNoList}" th:each="oneData, status : ${TelExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
  142. </select>
  143. - <input type="text" name ="recipTelno2" class="w60" value="0000" />
  144. - <input type="text" name ="recipTelno3" class="w60" value="0000" />
  145. </td>
  146. <th>휴대전화 <i class="star"></i></th>
  147. <td>
  148. <select name="recipPhnno1" class="w100">
  149. <option value="">[선택하세요]</option>
  150. <option th:if="${PhnExcNoList}" th:each="oneData, status : ${PhnExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
  151. </select>
  152. - <input type="text" name ="recipPhnno2" class="w60" value="0000" />
  153. - <input type="text" name ="recipPhnno3" class="w60" value="0000" />
  154. </td>
  155. </tr>
  156. </tbody>
  157. </table>
  158. </form>
  159. </div>
  160. </div>
  161. </div>
  162. <!-- data -->
  163. <script th:inline="javascript">
  164. /*<![CDATA[*/
  165. var cancelRequestTargetList = [[${cancelRequestTargetList}]]; // 교환대상목록
  166. var ordNo = [[${ordNo}]]; // 주문번호
  167. var orderInfoList = [[${orderInfoList}]]; // 주문기본정보
  168. var payMeans = orderInfoList[0].payMeans; // 결제수단
  169. var orderDelvAddrInfo = [[${orderDelvAddrInfo}]]; // 회수지정보
  170. var addDelvFee = 0; // 추가배송비
  171. var addDelvFeeList = []; // 추가배송비정보
  172. var temp1 = true;
  173. var temp2 = false;
  174. // 1. 주문정보(교환대상)
  175. var columnExchangeReqList = [
  176. {
  177. headerName : "주문상세정보",
  178. children : [
  179. {headerName: "주문번호" , field: "ordNo" , width: 80 , cellClass: 'text-center', hide: temp1},
  180. {headerName: "주문상세" , field: "ordDtlNo" , width: 80 , cellClass: 'text-center'},
  181. {headerName: "주문상세" , field: "ordDtlStat" , width: 80 , cellClass: 'text-center', hide: temp1},
  182. {headerName: "주문상세상태" , field: "ordDtlStatNm" , width: 100 , cellClass: 'text-center', hide: temp1},
  183. {headerName: "상품코드" , field: "goodsCd" , width: 100 , cellClass: 'text-center', hide: temp1},
  184. {headerName: "상품명" , field: "goodsNm" , width: 200 , cellClass: 'text-center', hide: temp1},
  185. {headerName: "상품타입" , field: "goodsTypeNm" , width: 100 , cellClass: 'text-center', hide: temp2}
  186. ]
  187. },
  188. {
  189. headerName : "주문상세단품정보",
  190. children : [
  191. {headerName: "단품번호" , field: "ordDtlItemSq" , width: 100 , cellClass: 'text-center', hide: temp2},
  192. {headerName: "단품코드" , field: "itemCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  193. {headerName: "단품명" , field: "itemNm" , width: 200 , cellClass: 'text-center', hide: temp2},
  194. {headerName: "옵션1" , field: "optCd1" , width: 80 , cellClass: 'text-center', hide: temp1},
  195. {headerName: "옵션2" , field: "optCd2" , width: 80 , cellClass: 'text-center', hide: temp2},
  196. {
  197. headerName : "단품수량"
  198. , field : "itemQty"
  199. , width : 80
  200. , cellClass : 'text-center'
  201. , cellRenderer : function (params) {
  202. return params.value.addComma();
  203. }
  204. },
  205. {
  206. headerName : "단품금액"
  207. , field : "itemPrice"
  208. , width : 80
  209. , cellClass : 'text-right'
  210. , cellRenderer : function (params) {
  211. return params.value.addComma();
  212. }
  213. },
  214. {
  215. headerName : "단품옵션금액"
  216. , field : "optAddPrice"
  217. , width : 80
  218. , cellClass : 'text-right'
  219. , cellRenderer : function (params) {
  220. return params.value.addComma();
  221. }
  222. }
  223. ]
  224. },
  225. {
  226. headerName : "주문상세수량",
  227. children : [
  228. {
  229. headerName : "주문"
  230. , field : "ordQty"
  231. , width : 80
  232. , cellClass : 'text-center'
  233. , cellRenderer : function (params) {
  234. return params.value.addComma();
  235. }
  236. },
  237. {
  238. headerName : "취소/요청"
  239. , field : "cnclRtnQty"
  240. , width : 80
  241. , cellClass : 'text-center'
  242. , cellRenderer : function (params) {
  243. var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
  244. return cnclRtnReqQty;
  245. }
  246. },
  247. {headerName: "교환가능옵션" , field: "optCd2s" , width: 200 , cellClass: 'text-center', hide: temp2},
  248. {
  249. headerName : "교환옵션"
  250. , field : "ordChgOpt"
  251. , width : 100
  252. , cellClass : "text-center"
  253. , cellRenderer : function (params) {
  254. var optArr = params.data.optCd2s.split(',');
  255. var ordChgOpt = params.data.ordChgOpt;
  256. var strVal = '';
  257. strVal += '<select class="ordChgOpt" name="ordChgOpt" ordDtlNo="' + params.data.ordDtlNo + '" ordDtlItemSq="' + params.data.ordDtlItemSq + '" onchange="fnChangeOption(this)">';
  258. if (gagajf.isNull(ordChgOpt)) {
  259. strVal += '<option value="">선택</option>'
  260. } else {
  261. strVal += '<option value="" selected>선택</option>'
  262. }
  263. $.each(optArr, function(idx,item){
  264. if (ordChgOpt == item) {
  265. strVal += '<option value="' + item + '" selected>' + item + '</option>';
  266. } else {
  267. strVal += '<option value="' + item + '">' + item + '</option>';
  268. }
  269. });
  270. return strVal;
  271. }
  272. },
  273. {headerName: "재고수량" , field: "currStockQty" , width: 100 , cellClass: 'text-center', hide: temp2},
  274. {
  275. headerName : "교환신청수량"
  276. , field : "ordCanChgQty"
  277. , width : 100
  278. , cellClass : 'text-center'
  279. , cellRenderer : function (params) {
  280. var ordQty = parseInt(params.data.ordQty);
  281. var cnclRtnQty = parseInt(params.data.cnclRtnQty);
  282. var ordReqChgQty = parseInt(params.data.ordReqChgQty);
  283. var ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
  284. var strVal = "";
  285. strVal += '<select class="ordCanChgQty ' + params.data.ordDtlNo + '" name="ordCanChgQty" ordDtlNo="'+params.data.ordDtlNo+'" onchange="fnChangeQty(this)">';
  286. for (i=0 ; i<=ordCanChgQty ; i++) {
  287. if (i == params.data.ordCanChgQty) {
  288. strVal += " <option value='"+i+"' selected>"+i+"</option>";
  289. } else {
  290. strVal += " <option value='"+i+"'>"+i+"</option>";
  291. }
  292. }
  293. strVal += "</select>";
  294. return strVal;
  295. }
  296. }
  297. ]
  298. },
  299. {
  300. headerName : "주문단품금액",
  301. children : [
  302. {
  303. headerName : "주문"
  304. , field : "ordAmt"
  305. , width : 80
  306. , cellClass : 'text-right'
  307. , cellRenderer : function (params) {
  308. return params.value.addComma();
  309. }
  310. },
  311. {
  312. headerName : "취소"
  313. , field : "cnclRtnAmt"
  314. , width : 80
  315. , cellClass : 'text-right'
  316. , cellRenderer : function (params) {
  317. return params.value.addComma();
  318. }
  319. },
  320. {
  321. headerName : "즉시할인"
  322. , field : "cpn1DcAmt"
  323. , width : 80
  324. , cellClass : 'text-right'
  325. , cellRenderer : function (params) {
  326. return params.value.addComma();
  327. }
  328. },
  329. {
  330. headerName : "다다익선1"
  331. , field : "tmtb1DcAmt"
  332. , width : 80
  333. , cellClass : 'text-right'
  334. , cellRenderer : function (params) {
  335. return params.value.addComma();
  336. }
  337. },
  338. {
  339. headerName : "다다익선2"
  340. , field : "tmtb2DcAmt"
  341. , width : 80
  342. , cellClass : 'text-right'
  343. , cellRenderer : function (params) {
  344. return params.value.addComma();
  345. }
  346. },
  347. {
  348. headerName : "상품쿠폰"
  349. , field : "goodsCpnDcAmt"
  350. , width : 80
  351. , cellClass : 'text-right'
  352. , cellRenderer : function (params) {
  353. return params.value.addComma();
  354. }
  355. },
  356. {
  357. headerName : "장바구니쿠폰"
  358. , field : "cartCpnDcAmt"
  359. , width : 80
  360. , cellClass : 'text-right'
  361. , cellRenderer : function (params) {
  362. return params.value.addComma();
  363. }
  364. },
  365. {
  366. headerName : "포인트"
  367. , field : "pntDcAmt"
  368. , width : 80
  369. , cellClass : 'text-right'
  370. , cellRenderer : function (params) {
  371. return params.value.addComma();
  372. }
  373. },
  374. {
  375. headerName : "선포인트"
  376. , field : "prePntDcAmt"
  377. , width : 80
  378. , cellClass : 'text-right'
  379. , cellRenderer : function (params) {
  380. return params.value.addComma();
  381. }
  382. },
  383. {
  384. headerName : "상품권"
  385. , field : "gfcdUseAmt"
  386. , width : 80
  387. , cellClass : 'text-right'
  388. , cellRenderer : function (params) {
  389. return params.value.addComma();
  390. }
  391. },
  392. {
  393. headerName : "실결제금액"
  394. , field : "realOrdAmt"
  395. , width : 80
  396. , cellClass : 'text-right'
  397. , cellRenderer : function (params) {
  398. return params.value.addComma();
  399. }
  400. }
  401. ]
  402. },
  403. {
  404. headerName : "주문배송비정보",
  405. children : [
  406. {
  407. headerName : "배송비"
  408. , field : "delvFee"
  409. , width : 80
  410. , cellClass : 'text-right'
  411. , cellRenderer : function (params) {
  412. return params.value.addComma();
  413. }
  414. , hide : temp2
  415. },
  416. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  417. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  418. {
  419. headerName : "무료배송비"
  420. , field : "minOrdAmt"
  421. , width : 80
  422. , cellClass : 'text-right'
  423. , cellRenderer : function (params) {
  424. return params.value.addComma();
  425. }
  426. , hide : temp2
  427. },
  428. {
  429. headerName : "기본배송비"
  430. , field : "orgDelvFee"
  431. , width : 80
  432. , cellClass : 'text-right'
  433. , cellRenderer : function (params) {
  434. return params.value.addComma();
  435. }
  436. , hide : temp2
  437. },
  438. {
  439. headerName : "반품배송비"
  440. , field : "rtnDelvFee"
  441. , width : 80
  442. , cellClass : 'text-right'
  443. , cellRenderer : function (params) {
  444. return params.value.addComma();
  445. }
  446. , hide : temp2
  447. },
  448. {
  449. headerName : "교환배송비"
  450. , field : "excDelvFee"
  451. , width : 80
  452. , cellClass : 'text-right'
  453. , cellRenderer : function (params) {
  454. return params.value.addComma();
  455. }
  456. , hide : temp2
  457. },
  458. {headerName: "전체취소가능" , field: "allCanYn" , width: 100 , cellClass: 'text-center', hide: temp2},
  459. ]
  460. }
  461. ];
  462. var gridOptionsExchangeReqList = gagaAgGrid.getGridOptions(columnExchangeReqList);
  463. // Add on options
  464. gridOptionsExchangeReqList.suppressRowClickSelection = true;
  465. gridOptionsExchangeReqList.rowSelection = 'multiple';
  466. // 3. 배송비정보(환불정보)
  467. var columnDelvCdList = [
  468. {headerName: "업체" , field: "supplyCompCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  469. {headerName: "배송비코드" , field: "delvFeeCd" , width: 100 , cellClass: 'text-center', hide: temp2},
  470. {
  471. headerName : "추가배송비"
  472. , field : "addDelvFee"
  473. , width : 100
  474. , cellClass : 'text-right'
  475. , cellRenderer : function (params) {
  476. return params.value.addComma();
  477. }
  478. , hide : temp2
  479. },
  480. {headerName: "반품지명" , field: "rtnLocNm" , width: 100 , cellClass: 'text-center', hide: temp2},
  481. {headerName: "반품지명" , field: "rtnLocNm" , width: 100 , cellClass: 'text-center', hide: temp2},
  482. ];
  483. var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
  484. </script>
  485. <script>
  486. //현재 사유는 고객 입니다.
  487. var isCustomer = false;
  488. // 사유
  489. var fnChangeChgReason = function(reasonCd){
  490. var arrReasonCd = reasonCd.split(":");
  491. var customerReasonArr = ['G689_10', 'G689_30'];
  492. isCustomer = false;
  493. // 취소, 반품, 교환 사유 판단
  494. for (i=0 ; i<customerReasonArr.length ; i++) {
  495. if (customerReasonArr[i] == arrReasonCd[0]) {
  496. isCustomer = true;
  497. }
  498. }
  499. // 귀책사유설정 회사, 고객
  500. if (isCustomer) {
  501. $("#imputeReason").text("고객");
  502. } else {
  503. $("#imputeReason").text("회사");
  504. }
  505. $('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
  506. $('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
  507. // 추가배송비 설정
  508. fnChangeQty();
  509. }
  510. // 교환요청
  511. var fnExchangeRequestSubmit = function () {
  512. var temp = false;
  513. var ordDtlStat = cancelRequestTargetList[0].ordDtlStat;
  514. var allCanYn = "N";
  515. // 1. 교환수량 체크
  516. for (i=0 ; i<cancelRequestTargetList.length ; i++) {
  517. if (cancelRequestTargetList[i].ordCanChgQty > 0) {
  518. temp = true;
  519. }
  520. }
  521. if (temp == false) {
  522. mcxDialog.alert('취소 할 수량을 입력하세요.');
  523. return;
  524. }
  525. // 3. 교환사유 체크
  526. var chgReason = $("#exchangeRequestFrm select[name=selectChgReason]").val();
  527. if (gagajf.isNull(chgReason)) {
  528. mcxDialog.alert("취소사유를 입력하세요.");
  529. return ;
  530. }
  531. // 5. 회수지정보설정
  532. var chgerNm = $("#exchangeRequestFrm input[name=chgerNm]").val();
  533. var chgerZipNo = $("#exchangeRequestFrm input[name=chgerZipNo]").val();
  534. var chgerBaseAddr = $("#exchangeRequestFrm input[name=chgerBaseAddr]").val();
  535. var chgerDtlAddr = $("#exchangeRequestFrm input[name=chgerDtlAddr]").val();
  536. var chgerPhnno1 = $("#exchangeRequestFrm select[name=chgerPhnno1]").val();
  537. var chgerPhnno2 = $("#exchangeRequestFrm input[name=chgerPhnno2]").val();
  538. var chgerPhnno3 = $("#exchangeRequestFrm input[name=chgerPhnno3]").val();
  539. var chgerTelno1 = $("#exchangeRequestFrm select[name=chgerTelno1]").val();
  540. var chgerTelno2 = $("#exchangeRequestFrm input[name=chgerTelno2]").val();
  541. var chgerTelno3 = $("#exchangeRequestFrm input[name=chgerTelno3]").val();
  542. if (gagajf.isNull(chgerZipNo)) {
  543. mcxDialog.alert("회수지주소를 입력하세요."); return;
  544. }
  545. if (gagajf.isNull(chgerBaseAddr)) {
  546. mcxDialog.alert("회수지주소를 입력하세요."); return;
  547. }
  548. if (gagajf.isNull(chgerDtlAddr)) {
  549. mcxDialog.alert("회수지주소를 입력하세요."); return;
  550. }
  551. if (gagajf.isNull(chgerPhnno1)) {
  552. mcxDialog.alert("휴대전화를 입력하세요."); return;
  553. }
  554. if (gagajf.isNull(chgerPhnno2)) {
  555. mcxDialog.alert("휴대전화를 입력하세요."); return;
  556. }
  557. if (gagajf.isNull(chgerPhnno3)) {
  558. mcxDialog.alert("휴대전화를 입력하세요."); return;
  559. }
  560. var chgerPhnno = chgerPhnno1 + chgerPhnno2 + chgerPhnno3;
  561. var chgerTelno = chgerTelno1 + chgerTelno2 + chgerTelno3;
  562. var chgerEmail = orderInfoList[0].ordEmail;
  563. // 교환지정보 설정
  564. var recipNm = $("#exchangeRequestFrm input[name=chgerNm]").val();
  565. var recipZipNo = $("#exchangeRequestFrm input[name=chgerZipNo]").val();
  566. var recipBaseAddr = $("#exchangeRequestFrm input[name=chgerBaseAddr]").val();
  567. var recipDtlAddr = $("#exchangeRequestFrm input[name=chgerDtlAddr]").val();
  568. var recipPhnno1 = $("#exchangeRequestFrm select[name=chgerPhnno1]").val();
  569. var recipPhnno2 = $("#exchangeRequestFrm input[name=chgerPhnno2]").val();
  570. var recipPhnno3 = $("#exchangeRequestFrm input[name=chgerPhnno3]").val();
  571. var recipTelno1 = $("#exchangeRequestFrm select[name=chgerTelno1]").val();
  572. var recipTelno2 = $("#exchangeRequestFrm input[name=chgerTelno2]").val();
  573. var recipTelno3 = $("#exchangeRequestFrm input[name=chgerTelno3]").val();
  574. if (gagajf.isNull(recipZipNo)) {
  575. mcxDialog.alert("교환지주소를 입력하세요."); return;
  576. }
  577. if (gagajf.isNull(recipBaseAddr)) {
  578. mcxDialog.alert("교환지주소를 입력하세요."); return;
  579. }
  580. if (gagajf.isNull(recipDtlAddr)) {
  581. mcxDialog.alert("교환지주소를 입력하세요."); return;
  582. }
  583. if (gagajf.isNull(recipPhnno1)) {
  584. mcxDialog.alert("휴대전화를 입력하세요."); return;
  585. }
  586. if (gagajf.isNull(recipPhnno2)) {
  587. mcxDialog.alert("휴대전화를 입력하세요."); return;
  588. }
  589. if (gagajf.isNull(recipPhnno3)) {
  590. mcxDialog.alert("휴대전화를 입력하세요."); return;
  591. }
  592. var recipPhnno = recipPhnno1 + recipPhnno2 + recipPhnno3;
  593. var recipTelno = recipTelno1 + recipTelno2 + recipTelno3;
  594. var recipEmail = orderInfoList[0].ordEmail;
  595. var jsonObj = {
  596. "ordNo" : $('#exchangeRequestFrm input[name=ordNo]').val()
  597. ,"chgReason" : $('#exchangeRequestFrm input[name=chgReason]').val()
  598. ,"chgMemo" : $('#chgMemo').val()
  599. ,"exchangeReqList" : cancelRequestTargetList
  600. ,"isCustomer" : isCustomer
  601. ,"chgerNm" : chgerNm
  602. ,"chgerEmail" : chgerEmail
  603. ,"chgerZipNo" : chgerZipNo
  604. ,"chgerBaseAddr" : chgerBaseAddr
  605. ,"chgerDtlAddr" : chgerDtlAddr
  606. ,"chgerPhnno" : chgerPhnno
  607. ,"chgerTelno" : chgerTelno
  608. ,"recipNm" : recipNm
  609. ,"recipEmail" : recipEmail
  610. ,"recipZipNo" : recipZipNo
  611. ,"recipBaseAddr" : recipBaseAddr
  612. ,"recipDtlAddr" : recipDtlAddr
  613. ,"recipPhnno" : recipPhnno
  614. ,"recipTelno" : recipTelno
  615. }
  616. // 주문번호, 교환사유, 교환메모, (취소, 반품, 교환 신청 정보 목록)
  617. var jsonData = JSON.stringify(jsonObj);
  618. mcxDialog.confirm('교환요청하시겠습니까?', {
  619. cancelBtnText : "반품",
  620. sureBtnClick : function(){
  621. // 교환 실행
  622. gagajf.ajaxJsonSubmit(
  623. '/orderChange/exchangeRequest/'
  624. , jsonData
  625. , function() {
  626. uifnPopupClose('popupOrderDetail');
  627. fnReOpenOrderDetailPopup();
  628. uifnPopupClose('popupReturnRequestForm');
  629. }
  630. );
  631. }
  632. });
  633. }
  634. // 우편번호 DAUM을 이용한 우편번호 팝업 레이어
  635. var fnOpenDaumAddr = function(loc) {
  636. let daumZip = new daum.Postcode({
  637. oncomplete: function(data) {
  638. // 우편번호와 주소 정보를 해당 필드에 넣는다.
  639. if (loc == 'withdraw') {
  640. $('#exchangeRequestFrm input[name=chgerZipNo]').val(data.zonecode);
  641. $('#exchangeRequestFrm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
  642. $('#exchangeRequestFrm input[name=chgerDtlAddr]').focus();
  643. } else if (loc == 'exchange') {
  644. $('#exchangeRequestFrm input[name=recipZipNo]').val(data.zonecode);
  645. $('#exchangeRequestFrm input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
  646. $('#exchangeRequestFrm input[name=recipDtlAddr]').focus();
  647. }
  648. cfnCloseDaumAddr();
  649. },
  650. width: '100%'
  651. });
  652. cfnOpenDaumAddr(daumZip);
  653. }
  654. // 회수지정보 설정
  655. var fnSetChger = function(){
  656. var data = orderDelvAddrInfo[0];
  657. var spRecipPhnno = (data.recipPhnno != null) ? data.recipPhnno.split('-') : null;
  658. var spRecipTelno = (data.recipTelno != null) ? data.recipTelno.split('-') : null;
  659. $("#exchangeRequestFrm input[name=chgerNm]").val(data.recipNm);
  660. $("#exchangeRequestFrm input[name=chgerZipNo]").val(data.recipZipNo);
  661. $("#exchangeRequestFrm input[name=chgerBaseAddr]").val(data.recipBaseAddr);
  662. $("#exchangeRequestFrm input[name=chgerDtlAddr]").val(data.recipDtlAddr);
  663. if (spRecipPhnno) {
  664. $("#exchangeRequestFrm select[name=chgerPhnno1]").val(spRecipPhnno[0]);
  665. $("#exchangeRequestFrm input[name=chgerPhnno2]").val(spRecipPhnno[1]);
  666. $("#exchangeRequestFrm input[name=chgerPhnno3]").val(spRecipPhnno[2]);
  667. }
  668. if (spRecipTelno) {
  669. $("#exchangeRequestFrm select[name=chgerTelno1]").val(spRecipTelno[0]);
  670. $("#exchangeRequestFrm input[name=chgerTelno2]").val(spRecipTelno[1]);
  671. $("#exchangeRequestFrm input[name=chgerTelno3]").val(spRecipTelno[2]);
  672. }
  673. }
  674. // 교환지정보 설정
  675. var fnSetExchangeAddr = function(){
  676. var data = orderDelvAddrInfo[0];
  677. var spRecipPhnno = (data.recipPhnno != null) ? data.recipPhnno.split('-') : null;
  678. var spRecipTelno = (data.recipTelno != null) ? data.recipTelno.split('-') : null;
  679. $("#exchangeRequestFrm input[name=recipNm]").val(data.recipNm);
  680. $("#exchangeRequestFrm input[name=recipZipNo]").val(data.recipZipNo);
  681. $("#exchangeRequestFrm input[name=recipBaseAddr]").val(data.recipBaseAddr);
  682. $("#exchangeRequestFrm input[name=recipDtlAddr]").val(data.recipDtlAddr);
  683. if (spRecipPhnno) {
  684. $("#exchangeRequestFrm select[name=recipPhnno1]").val(spRecipPhnno[0]);
  685. $("#exchangeRequestFrm input[name=recipPhnno2]").val(spRecipPhnno[1]);
  686. $("#exchangeRequestFrm input[name=recipPhnno3]").val(spRecipPhnno[2]);
  687. }
  688. if (spRecipTelno) {
  689. $("#exchangeRequestFrm select[name=recipTelno1]").val(spRecipTelno[0]);
  690. $("#exchangeRequestFrm input[name=recipTelno2]").val(spRecipTelno[1]);
  691. $("#exchangeRequestFrm input[name=recipTelno3]").val(spRecipTelno[2]);
  692. }
  693. }
  694. // 교환옵션 변경 이벤트
  695. var fnChangeOption = function(param) {
  696. var optCd2 = $(param).val();
  697. var ordDtlNo = $(param).attr('ordDtlNo');
  698. var ordDtlItemSq = $(param).attr('ordDtlItemSq');
  699. $.each(cancelRequestTargetList, function(idx, item){
  700. if (item.ordDtlNo == ordDtlNo && item.ordDtlItemSq == ordDtlItemSq) {
  701. var stockQtyArr = item.currStockQtys.split(',');
  702. var sizeCdArr = item.optCd2s.split(',');
  703. var stockIdx = sizeCdArr.indexOf(optCd2);
  704. var stockQty = stockQtyArr[stockIdx];
  705. item.currStockQty = stockQty;
  706. item.ordChgOpt = optCd2;
  707. }
  708. });
  709. gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
  710. }
  711. // 교환수량 변경 이벤트
  712. var fnChangeQty = function(param) {
  713. var ordCanChgQty = $(param).val();
  714. var ordDtlNo = $(param).attr('ordDtlNo');
  715. var exchangeRequestTargetList = [];
  716. $.each(cancelRequestTargetList, function(idx, item){
  717. if (item.ordDtlNo == ordDtlNo) {
  718. if (gagajf.isNull(item.ordChgOpt)) {
  719. mcxDialog.alert('교환옵션을 선택해주세요.');
  720. return false;
  721. }
  722. //var optCd2 = item.ordChgOpt;
  723. //var stockQtyArr = item.currStockQtys.split(',');
  724. //var sizeCdArr = item.optCd2s.split(',');
  725. //var stockIdx = sizeCdArr.indexOf(optCd2);
  726. //var stockQty = stockQtyArr[stockIdx];
  727. //if (stockQty < ordCanChgQty) {
  728. // mcxDialog.alert(item.itemNm + ' ' + optCd2 + '의 재고수량이 부족합니다.');
  729. //} else {
  730. // item.ordCanChgQty = ordCanChgQty;
  731. //}
  732. item.ordCanChgQty = ordCanChgQty;
  733. if (ordCanChgQty > 0) {
  734. exchangeRequestTargetList.push(item);
  735. }
  736. } else if (item.ordCanChgQty > 0) {
  737. exchangeRequestTargetList.push(item);
  738. }
  739. });
  740. // 추가배송비 설정
  741. fnAddDelvFee(exchangeRequestTargetList);
  742. gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
  743. }
  744. // 추가배송비 설정
  745. var fnAddDelvFee = function (exchangeRequestTargetList) {
  746. var delvCdList = [];
  747. var delvFeeList = [];
  748. var delvFee = 0;
  749. // 고객 귀책사유에 한하여 추가배송비 설정
  750. if (isCustomer) {
  751. $.each(exchangeRequestTargetList, function (idx, item) {
  752. if (!delvCdList.includes(item.delvFeeCd)) {
  753. var delvFeeTmp = $('#wdGb').val() == 'W' ? item.excDelvFee : item.rtnDelvFee;
  754. delvFee += delvFeeTmp;
  755. item.addDelvFeeYn = 'Y';
  756. item.addDelvFee = delvFeeTmp;
  757. delvCdList.push(item.delvFeeCd);
  758. delvFeeList.push(item);
  759. }
  760. });
  761. }
  762. addDelvFee = delvFee;
  763. addDelvFeeList = delvFeeList;
  764. gridOptionsDelvCdList.api.setRowData(addDelvFeeList);
  765. $('#addDelvFee').text(addDelvFee);
  766. }
  767. $(document).ready(function() {
  768. // 1. 그리드생성
  769. gagaAgGrid.createGrid('gridOrderCancelRequestList' , gridOptionsExchangeReqList); // 주문정보
  770. //gagaAgGrid.createGrid('gridOrderCancelRequestToBeList' , gridOptionsExchangeReqToBeList); // 취소정보
  771. gagaAgGrid.createGrid('gridDelvCdList' , gridOptionsDelvCdList); // 배송비정보
  772. gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
  773. // 2.1 TOTAL ROWS 없애기
  774. gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
  775. gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
  776. gagaAgGrid.hideStatusBar('gridDelvCdList');
  777. // 3. 회수지정보설정
  778. fnSetChger();
  779. // 4. 교환지정보설정
  780. fnSetExchangeAddr();
  781. });
  782. </script>
  783. </html>