OrderDetailForm.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. <!DOCTYPE html>
  2. <html lang="ko" xmlns:th="http://www.thymeleaf.org">
  3. <!--
  4. *******************************************************************************
  5. * @source : OrderListForm.html
  6. * @desc : 주문목록 Page
  7. *============================================================================
  8. * SISUN
  9. * Copyright(C) 2020 TSIT, All rights reserved.
  10. *============================================================================
  11. * VER DATE AUTHOR DESCRIPTION
  12. * === =========== ========== =============================================
  13. * 1.0 2020.11.16 jsh77b 최초 작성
  14. *******************************************************************************
  15. -->
  16. <div class="modalPopup" data-width="1500"> <!-- data-width="1500" data-height="870" -->
  17. <div class="panelStyle">
  18. <div class="panelTitle">
  19. <h2>주문상세내역</h2>
  20. <button type="button" class="close" onclick="fnOrderDetailClose()"><i class="fa fa-times"></i></button>
  21. <div class="panelContent">
  22. <form id="orderDetailInfo" name="orderDetailInfo" action="#" th:method="post">
  23. <input type="hidden" name="custNo"/>
  24. <input type="hidden" name="orderNm"/>
  25. <input type="hidden" name="orderPhnno"/>
  26. <input type="hidden" name="orderEmail"/>
  27. <h4>기본정보</h4>
  28. <div id="gridOrderInfo" style="width:100%; height:200px;" class="ag-theme-balham lh60"></div>
  29. <h4>주문상품정보</h4>
  30. <div id="gridOrderGoodsInfo" style="width:100%; height:200px;" class="ag-theme-balham lh60"></div>
  31. </form>
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <!-- data -->
  37. <script th:inline="javascript">
  38. var ordNo = [[${ordNo}]]; // 주문번호
  39. var orderInfo = [[${orderInfo}]]; // 기본정보
  40. var orderGoodsInfo = [[${orderGoodsInfo}]]; // 주문상세정보
  41. //var orderPaymentInfo = [[${orderPaymentInfo}]]; // 결제정보
  42. //var orderDeliveryFeeInfo = [[${orderDeliveryFeeInfo}]]; // 배송비정보
  43. //var orderChangeInfo = [[${orderChangeInfo}]]; // 취소/반품/교환요청 정보
  44. //var orderRefundInfo = [[${orderRefundInfo}]]; // 환불정보
  45. //var orderCounselInfo = [[${orderCounselInfo}]]; // 상담내역
  46. //var orderAdminMemoInfo = [[${orderAdminMemoInfo}]]; // 관리자메모
  47. //var orderRfAccountInfo = [[${orderRfAccountInfo}]]; // 환불계좌정보
  48. //var siteCdList = cfnConvertToArray([[${siteCdList}]]);
  49. //var bankList = cfnConvertToArray([[${bankList}]]); // 은행코드
  50. // 쿠폰,포인트,적립금 컬럼배경색설정
  51. //var goodsCpnDcAmtClass = (orderGoodsInfo[0].goodsCpnDcAmt > 0) ? 'bgPink' : 'text-right';
  52. //var cartCpnDcAmtClass = (orderGoodsInfo[0].cartCpnDcAmt > 0) ? 'bgPink' : 'text-right';
  53. //var plusCpnDcAmtClass = (orderGoodsInfo[0].plusCpnDcAmt > 0) ? 'bgPink' : 'text-right';
  54. //var pntDcAmtClass = (orderGoodsInfo[0].pntDcAmt > 0) ? 'bgPink' : 'text-right';
  55. //var prePntDcAmtClass = (orderGoodsInfo[0].prePntDcAmt > 0) ? 'bgPink' : 'text-right';
  56. //var savePntAmtClass = (orderGoodsInfo[0].savePntAmt > 0) ? 'bgSky' : 'text-right';
  57. //var custNo = orderInfo[0].custNo;
  58. //var payMeans = orderInfo[0].payMeans;
  59. //var mallGb = orderInfo[0].mallGb;
  60. </script>
  61. <!-- AgGrid 컬럼 세팅 -->
  62. <script>
  63. // 1.주문기본정보 그리드 바인딩
  64. var columnDefsOrderInfo = [
  65. {
  66. headerName : "사이트"
  67. , field : "siteCd"
  68. , width : 100
  69. , cellClass : 'text-center'
  70. , valueFormatter: function (params) {
  71. return gagaAgGrid.lookupValue(siteCdList, params.value);
  72. }
  73. },
  74. {headerName: "몰구분" , field: "mallGbNm" , width: 80 , cellClass: 'text-center'},
  75. {headerName: "웹구분" , field: "frontGbNm" , width: 80 , cellClass: 'text-center'},
  76. {headerName: "외부몰" , field: "extmallNm" , width: 80 , cellClass: 'text-center'},
  77. {headerName: "주문일시" , field: "ordDt" , width: 140 , cellClass: 'text-center'},
  78. {headerName: "주문상태" , field: "ordStatNm" , width: 110 , cellClass: 'text-center'},
  79. {headerName: "주문자" , field: "orderNm" , width: 80 , cellClass: 'text-center'},
  80. {
  81. headerName : "고객번호"
  82. , field : "custNo"
  83. , width : 100
  84. , cellClass : 'text-center'
  85. , valueFormatter : function (params) {
  86. return (params.data.mallGb == '20') ? '' : params.value;
  87. }
  88. },
  89. {headerName: "주문번호", field: "ordNo", width: 100, cellClass: 'text-center'},
  90. {
  91. headerName : "이메일"
  92. , field : "orderEmail"
  93. , width : 240
  94. , cellClass : 'text-center'
  95. , cellRenderer : function (params) {
  96. return params.value ? params.value + '&nbsp&nbsp<button type="button" class="btn btn-success" onclick="fnOpenEmailForm(\'' + params.data.orderEmail + '\',\'' + params.data.orderNm + '\',\'' + params.data.custNo + '\');"> 메일발송 </button>' : '';
  97. }
  98. },
  99. {
  100. headerName : "핸드폰번호"
  101. , field : "orderPhnno"
  102. , width : 220
  103. , cellClass : 'text-center'
  104. , cellRenderer : function (params) {
  105. return params.value + '&nbsp&nbsp<button type="button" class="btn btn-success" onclick="fnOpenLmsForm(\'' + params.data.orderPhnno + '\',\'' + params.data.custNo + '\');"> LMS발송 </button>';
  106. }
  107. },
  108. {headerName: "회원구분" , field: "custGbNm" , width: 80 , cellClass: 'text-center'},
  109. {headerName: "관리대상" , field: "managedRsn" , width: 80 , cellClass: 'text-center'},
  110. {headerName: "등급" , field: "custGradeNm" , width: 80 , cellClass: 'text-center'}
  111. ];
  112. var gridOptionsOrderInfo = gagaAgGrid.getGridOptions(columnDefsOrderInfo);
  113. var gridOptionsOrderInfo = {
  114. columnDefs : columnDefsOrderList
  115. , detailCellRendererParams : {
  116. detailGridOptions : {
  117. columnDefs : []
  118. , defaultColDef : {
  119. resizable: true
  120. }
  121. , suppressLoadingOverlay: false
  122. , onGridReady : function (params) {
  123. params.api.setDomLayout('autoHeight');
  124. }
  125. , onFirstDataRendered : function (params) {
  126. params.api.sizeColumnsToFit();
  127. }
  128. }
  129. , getDetailRowData: function (params) {
  130. params.successCallback(params.data.orderDetailList);
  131. }
  132. }
  133. , defaultColDef: {
  134. resizable: true
  135. }
  136. , isRowMaster: function (dataItem) {
  137. return dataItem ? dataItem.orderDetailList.length > 1 : false;
  138. }
  139. , suppressRowTransform: true
  140. , enableRangeSelection: true
  141. };
  142. // 2.상품별 상세정보
  143. var columnDefsGoodsInfo = [
  144. {
  145. headerName : "상품정보",
  146. children : [
  147. {headerName: "상품코드" , field: "goodsCd" , width: 130, cellClass: 'text-center'},
  148. {
  149. headerName : "상품명"
  150. , field : "goodsNm"
  151. , width : 180
  152. , cellClass : 'text-left'
  153. , cellRenderer: function (params) {
  154. return '<a href="javascript:void(0);" onclick="cfnOpenFrontGoodsPopup(\'' + params.data.goodsCd + '\',\'' + params.data.siteCd + '\');">' + params.value + '</a>';
  155. }
  156. },
  157. {headerName: "사이즈" , field: "sizeCd" , width: 60, cellClass: 'text-center'},
  158. {headerName: "칼라" , field: "goodsColorNm" , width: 90, cellClass: 'text-center'}
  159. ]
  160. },
  161. {
  162. headerName : "수량",
  163. children : [
  164. {headerName: "주문" , field: "ordQty" , width: 40, cellClass: 'text-center'},
  165. {headerName: "취소" , field: "cnclRtnQty" , width: 40, cellClass: 'text-center'}
  166. ]
  167. },
  168. {
  169. headerName : "쿠폰",
  170. children : [
  171. {
  172. headerName : "상품"
  173. , field : "goodsCpnDcAmt"
  174. , width : 70
  175. , cellClass : 'text-right' //goodsCpnDcAmtClass
  176. , cellRenderer: function (params) {
  177. return "<a href=\"javascript:void(0);\" onclick=\"fnOrderCouponHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
  178. }
  179. },
  180. {
  181. headerName : "장바구니"
  182. , field : "cartCpnDcAmt"
  183. , width : 70
  184. , cellClass : 'text-right' //cartCpnDcAmtClass
  185. , cellRenderer : function (params) {
  186. return "<a href=\"javascript:void(0);\" onclick=\"fnOrderCouponHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
  187. }
  188. }
  189. ]
  190. },
  191. {
  192. headerName : "포인트",
  193. children : [
  194. {
  195. headerName : "사용"
  196. , field : "pntDcAmt"
  197. , width : 60
  198. , cellClass : 'text-right' //pntDcAmtClass
  199. , cellRenderer : function (params) {
  200. return "<a href=\"javascript:void(0);\" onclick=\"fnOrderPointHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
  201. }
  202. },
  203. {
  204. headerName : "즉시사용"
  205. , field : "prePntDcAmt"
  206. , width : 60
  207. , cellClass : 'text-right' //prePntDcAmtClass
  208. , cellRenderer : function (params) {
  209. return "<a href=\"javascript:void(0);\" onclick=\"fnOrderPointHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
  210. }
  211. },
  212. {
  213. headerName : "적립"
  214. , field : "savePntAmt"
  215. , width : 60
  216. , cellClass : 'text-right' //savePntAmtClass
  217. , cellRenderer : function (params) {
  218. return "<a href=\"javascript:void(0);\" onclick=\"fnOrderPointHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
  219. }
  220. }
  221. ]
  222. },
  223. {
  224. headerName : "금액(원/단위)",
  225. children : [
  226. {
  227. headerName : "판매"
  228. , field : "ordAmt"
  229. , width : 70
  230. , cellClass : 'text-right'
  231. , valueFormatter: function (params) {
  232. return params.value.addComma();
  233. }
  234. },
  235. {
  236. headerName : "실결제"
  237. , field : "realOrdAmt"
  238. , width : 70
  239. , cellClass : 'text-right'
  240. , valueFormatter: function (params) {
  241. return params.value.addComma();
  242. }
  243. },
  244. {
  245. headerName : "취소"
  246. , field : "cnclRtnAmt"
  247. , width : 70
  248. , cellClass : 'text-right'
  249. , valueFormatter: function (params) {
  250. return params.value.addComma();
  251. }
  252. },
  253. ]
  254. },
  255. {
  256. headerName : "주문상세상태"
  257. , field : "ordDtlStatNm"
  258. , width : 150
  259. , cellClass : 'text-left'
  260. , cellRenderer : function (params) {
  261. var retVal = "";
  262. retVal += (params.data.cancelRequestQty > 0) ? " 취" + params.data.cancelRequestQty : "";
  263. retVal += (params.data.returnRequestQty > 0) ? " 반" + params.data.returnRequestQty : "";
  264. retVal += (params.data.exchangeRequestQty > 0) ? " 교" + params.data.exchangeRequestQty : "";
  265. if (!gagajf.isNull(retVal)) retVal = "-" + retVal;
  266. return "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailChangeHst('" + params.data.ordDtlNo + "');\">" + params.value + retVal + "</a>";
  267. }
  268. },
  269. {headerName: "결품", field: "soldoutYn", width: 60, cellClass: 'text-center'},
  270. {
  271. headerName : "배송",
  272. children : [
  273. {
  274. headerName : "송장번호"
  275. , field : "invoiceNo"
  276. , width : 100
  277. , cellClass : 'text-center'
  278. , cellRenderer : function (params) {
  279. var retStr = '';
  280. if (!gagajf.isNull(params.value)) retStr = '<a href="javascript:void(0);" onclick="fnSearchDelivery(\'' + params.data.trackingUrl + '\',\'' + params.data.invoiceNo + '\');">' + params.value + '</a>';
  281. return retStr;
  282. }
  283. },
  284. {headerName: "출고처", field: "delvLocNm", width: 120, cellClass: 'text-center'},
  285. {
  286. headerName : "배송지번호"
  287. , field : "delvAddrSq"
  288. , width : 70
  289. , cellClass : 'text-center'
  290. , cellRenderer : function (params) {
  291. return "<a href=\"javascript:void(0);\" onclick=\"fnBindDeliveryAddr('" + params.value + "');\">" + params.value + "</a>";
  292. }
  293. },
  294. {headerName: "물류비고", field: "dstrbtNote", width: 180, cellClass: 'text-center'},
  295. {
  296. headerName: "구매확정철회"
  297. , field: "ordDtlNo"
  298. , width: 180
  299. , cellClass: 'text-center'
  300. , cellRenderer: function (params) {
  301. var retVal = "";
  302. if ('70' === params.data.ordDtlStat) {
  303. retVal = '<button type=\"button\" class=\"btn btn-danger\" onclick=\"fnChangedCompleteDelivery(\'' + params.data.ordNo + '\',\'' + params.data.ordDtlNo + '\',\'' + params.data.ordDtlStat + '\');\">구매확정철회</button>';
  304. }
  305. return retVal;
  306. }
  307. }
  308. ]
  309. }
  310. ];
  311. var gridOptionsGoodsInfo = gagaAgGrid.getGridOptions(columnDefsGoodsInfo);
  312. </script>
  313. <script>
  314. var fnSetGridHeightInit = function () {
  315. if (_windowWidth < 1780) {
  316. _girdRowH1 = 33 + _scrollH;
  317. _girdRowH2 = 80 + _scrollH;
  318. } else {
  319. _girdRowH1 = 33
  320. _girdRowH2 = 80;
  321. }
  322. $('#gridOrderInfo').css('height', _girdRowH1 + _girdRowH); //기본정보
  323. //$('#gridDeliveryInfo').css('height', _girdRowH1 + _girdRowH); //배송정보
  324. //if (orderGoodsInfo != null && orderGoodsInfo.length > 0) $('#gridOrderGoodsInfo').css('height', _girdRowH2 + _girdRowH * orderGoodsInfo.length);
  325. //if (orderPaymentInfo != null && orderPaymentInfo.length > 0) $('#gridPaymentInfo').css('height', _girdRowH1 + _girdRowH * orderPaymentInfo.length);
  326. //if (orderDeliveryFeeInfo != null && orderDeliveryFeeInfo.length > 0) $('#gridDeliveryFeeInfo').css('height', _girdRowH1 + _girdRowH * orderDeliveryFeeInfo.length);
  327. //if (orderChangeInfo != null && orderChangeInfo.length > 0) $('#gridOrderChangeInfo').css('height', _girdRowH1 + _girdRowH * orderChangeInfo.length);
  328. //if (orderRefundInfo != null && orderRefundInfo.length > 0) $('#gridOrderRefundInfo').css('height', _girdRowH1 + _girdRowH * orderRefundInfo.length);
  329. //if (orderCounselInfo != null && orderCounselInfo.length > 0) $('#gridOrderCounselInfo').css('height', _girdRowH1 + _girdRowH * orderCounselInfo.length);
  330. //if (orderAdminMemoInfo != null && orderAdminMemoInfo.length > 0) $('#gridOrderMemoInfo').css('height', _girdRowH1 + _girdRowH * orderAdminMemoInfo.length);
  331. //if (orderRfAccountInfo != null && orderRfAccountInfo.length > 0) $('#gridOptionsRefundAccountInfo').css('height', _girdRowH1 + _girdRowH * orderRfAccountInfo.length);
  332. }
  333. </script>
  334. <!-- 버튼 이벤트 바인딩 -->
  335. <script>
  336. var _windowWidth = $(window).width(); /* 위도우창 넓이 */
  337. var _girdRowH = 33; /* 그리드 Row 줄 높이 */
  338. var _girdRowH1 = 33; /* 그리드 타이틀 1줄 짜리 높이*/
  339. var _girdRowH2 = 62; /* 그리드 타이틀 2줄 짜리 높이*/
  340. var _scrollH = 27; /* 가로스크롤bar 높이 */
  341. $(window).resize(function () {
  342. _windowWidth = $(window).width();
  343. fnSetGridHeightInit();
  344. });
  345. </script>
  346. <!-- AgGrid 생성 -->
  347. <script>
  348. $(document).ready(function () {
  349. gagaAgGrid.createGrid('gridOrderInfo' , gridOptionsOrderInfo);
  350. gagaAgGrid.createGrid('gridOrderGoodsInfo' , gridOptionsGoodsInfo);
  351. // 그리드 데이터 바인딩
  352. gridOptionsOrderInfo.api.setRowData(orderInfo); // 기본정보
  353. gridOptionsGoodsInfo.api.setRowData(orderGoodsInfo); // 상품정보
  354. //gridOptionsPaymentInfo.api.setRowData(orderPaymentInfo); // 결제정보
  355. //gridOptionsDeliveryFeeInfo.api.setRowData(orderDeliveryFeeInfo); // 배송비정보
  356. //gridOptionsOrderChangeInfo.api.setRowData(orderChangeInfo); // 취소/반품/교환요청 정보
  357. //gridOptionsRefundInfo.api.setRowData(orderRefundInfo); // 환불정보
  358. //gridOptionsOrderCounselInfo.api.setRowData(orderCounselInfo); // 상담내역
  359. //gridOptionsOrderMemoInfo.api.setRowData(orderAdminMemoInfo); // 관리자메모
  360. //gridOptionsRefundAccountInfo.api.setRowData(orderRfAccountInfo); // 환불계좌정보
  361. // 그리드 높이 설정
  362. fnSetGridHeightInit();
  363. });
  364. $(document).ready(function () {
  365. $('#orderDetailContents').css("width", "97%").css("height", "96%");
  366. });
  367. </script>
  368. </html>