SubPaymentForm.html 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : SubPaymentForm.html
  7. * @desc : 부결제수단별통계 Page
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2021.09.28 swkim 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div id="main">
  18. <!-- 메인타이틀 영역 -->
  19. <div class="main-title">
  20. </div>
  21. <!-- //메인타이틀 영역 -->
  22. <!-- 메뉴 설명 -->
  23. <div class="infoBox menu-desc">
  24. </div>
  25. <!-- //메뉴 설명 -->
  26. <!-- 검색조건 영역 -->
  27. <div class="panelStyle">
  28. <form id="searchForm" name="searchForm" action="#" th:action="@{'/statistics/payment/sub/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  29. <input type="hidden" name="dayGb" value="D"/>
  30. <table class="frmStyle" aria-describedby="검색조건">
  31. <colgroup>
  32. <col style="width:10%;"/>
  33. <col style="width:25%;"/>
  34. <col style="width:10%;"/>
  35. <col style="width:25%;"/>
  36. <col style="width:10%;"/>
  37. <col style="width:20%;"/>
  38. </colgroup>
  39. <tr>
  40. <th>기간<i class="required" title="필수" aria-hidden="true"></i></th>
  41. <td colspan="5" id="terms">
  42. </td>
  43. </tr>
  44. <tr>
  45. <th>포인트 유형</th>
  46. <td>
  47. <select name="pointGb">
  48. <option value="">[전체]</option>
  49. <option th:if="${pointGbList}" th:each="oneData, status : ${pointGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  50. </select>
  51. </td>
  52. <th>상품권 유형</th>
  53. <td colspan="3">
  54. <select name="giftCardGb">
  55. <option value="">[전체]</option>
  56. <option th:if="${giftCardGbList}" th:each="oneData, status : ${giftCardGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  57. </select>
  58. </td>
  59. </tr>
  60. </table>
  61. <ul class="panelBar">
  62. <li class="center">
  63. <button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
  64. <button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
  65. </li>
  66. </ul>
  67. </form>
  68. </div>
  69. <!-- 검색조건 영역 -->
  70. <!-- 리스트 영역 -->
  71. <div class="panelStyle">
  72. <!-- 버튼 배치 영역 -->
  73. <ul class="panelBar">
  74. <li class="left">
  75. <button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
  76. </li>
  77. <li class="right">
  78. <span class="btnGroup marR10">
  79. <button type="button" class="btn btn-default btn-lg active" id="dayGbD" onclick="fnSetDayGb('D');">일별</button>
  80. <button type="button" class="btn btn-default btn-lg" id="dayGbW" onclick="fnSetDayGb('W');">주별</button>
  81. <button type="button" class="btn btn-default btn-lg" id="dayGbM" onclick="fnSetDayGb('M');">월별</button>
  82. </span>
  83. </li>
  84. </ul>
  85. <!-- //버튼 배치 영역 -->
  86. <div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
  87. </div>
  88. <!-- //리스트 영역 -->
  89. <div class="panelStyle">
  90. <table class="frmStyle" aria-describedby="잔액">
  91. <colgroup>
  92. <col style="width:30%;"/>
  93. <col style="width:35%;"/>
  94. <col style="width:35%;"/>
  95. </colgroup>
  96. <tr>
  97. <th rowspan="2">현 잔액</th>
  98. <th>포인트</th>
  99. <th>상품권</th>
  100. </tr>
  101. <tr>
  102. <td style="text-align: center;" th:text="${#numbers.formatInteger(remainPoint, 0,'COMMA')}"></td>
  103. <td style="text-align: center;" th:text="${#numbers.formatInteger(remainGiftCard, 0,'COMMA')}"></td>
  104. </tr>
  105. </table>
  106. </div>
  107. </div>
  108. <script th:inline="javascript">
  109. /*<![CDATA[*/
  110. let columnDefs = [
  111. { headerName: "기간", field: "day", width: 100, cellClass: 'text-center' },
  112. {
  113. headerName: "포인트", field: "", width: 600, cellClass: 'text-center',
  114. children: [
  115. {headerName: "적립액", field: "pntGive", width: 200, cellClass: 'text-center',
  116. cellRenderer: function(params) {
  117. return gagaAgGrid.toAddComma(params.value);
  118. }
  119. },
  120. {headerName: "사용주문수", field: "pntOrdCnt", width: 200, cellClass: 'text-center',
  121. cellRenderer: function(params) {
  122. return gagaAgGrid.toAddComma(params.value);
  123. }
  124. },
  125. {headerName: "사용액", field: "pntUse", width: 200, cellClass: 'text-center',
  126. cellRenderer: function(params) {
  127. return gagaAgGrid.toAddComma(params.value);
  128. }
  129. }
  130. ]
  131. },
  132. {
  133. headerName: "상품권", field: "", width: 600, cellClass: 'text-center',
  134. children: [
  135. {headerName: "등록매수", field: "giftRegCnt", width: 200, cellClass: 'text-center',
  136. cellRenderer: function(params) {
  137. return gagaAgGrid.toAddComma(params.value);
  138. }
  139. },
  140. {headerName: "사용주문수", field: "giftOrdCnt", width: 200, cellClass: 'text-center',
  141. cellRenderer: function(params) {
  142. return gagaAgGrid.toAddComma(params.value);
  143. }
  144. },
  145. {headerName: "사용액", field: "giftUse", width: 200, cellClass: 'text-center',
  146. cellRenderer: function(params) {
  147. return gagaAgGrid.toAddComma(params.value);
  148. }
  149. }
  150. ]
  151. }
  152. ];
  153. let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  154. gridOptions.autoGroupColumnDef = {
  155. headerName: "일자",
  156. field: "grouping",
  157. width: 200,
  158. cellRendererParams: {
  159. suppressCount: true
  160. }
  161. };
  162. // for expand everything
  163. gridOptions.groupDefaultExpanded = -1;
  164. // 검색
  165. $('#btnSearch').on('click', function() {
  166. // 입력 값 체크
  167. if (!gagajf.validation($('#searchForm')))
  168. return false;
  169. gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm', fnCreateTotal);
  170. });
  171. // 합계 생성
  172. let fnCreateTotal = function() {
  173. // Draw chart
  174. let pntGive = 0;
  175. let pntOrdCnt = 0;
  176. let pntUse = 0;
  177. let giftRegCnt = 0;
  178. let giftOrdCnt = 0;
  179. let giftUse = 0;
  180. gridOptions.api.forEachNode(function(rowNode, index) {
  181. if (!rowNode.group) {
  182. if (typeof rowNode.data.pntGive == 'number') { pntGive += rowNode.data.pntGive; }
  183. if (typeof rowNode.data.pntOrdCnt == 'number') { pntOrdCnt += rowNode.data.pntOrdCnt; }
  184. if (typeof rowNode.data.pntUse == 'number') { pntUse += rowNode.data.pntUse; }
  185. if (typeof rowNode.data.giftRegCnt == 'number') { giftRegCnt += rowNode.data.giftRegCnt; }
  186. if (typeof rowNode.data.giftOrdCnt == 'number') { giftOrdCnt += rowNode.data.giftOrdCnt; }
  187. if (typeof rowNode.data.giftUse == 'number') { giftUse += rowNode.data.giftUse; }
  188. }
  189. });
  190. let data = {
  191. day: 'TOTAL',
  192. pntGive: pntGive, pntOrdCnt: pntOrdCnt, pntUse: pntUse,
  193. giftRegCnt: giftRegCnt, giftOrdCnt: giftOrdCnt, giftUse: giftUse
  194. };
  195. gagaAgGrid.setPinnedRowData(gridOptions, data, 'top');
  196. }
  197. // 초기화 클릭시
  198. $('#btnInit').on('click', function() {
  199. $('#searchForm')[0].reset();
  200. $('#cardIdTxt').html('');
  201. $('#searchForm input[name=cardIdList]').val('');
  202. });
  203. // 엑셀다운로드
  204. $('#btnExcel').on('click', function() {
  205. gagaAgGrid.exportToExcel('부결제수단별통계 목록', gridOptions);
  206. });
  207. // 일자구분 변경 시
  208. var fnSetDayGb = function(dayGb) {
  209. $('#searchForm input[name=dayGb]').val(dayGb);
  210. $('#dayGbD').removeClass('active');
  211. $('#dayGbW').removeClass('active');
  212. $('#dayGbM').removeClass('active');
  213. $('#dayGb' + dayGb).addClass('active');
  214. $('#btnSearch').trigger('click');
  215. }
  216. $(document).ready(function() {
  217. cfnCreateCalendar('#terms', 'startDt', 'endDt', true, '주문', undefined, ['btnToday']);
  218. $('.btnRecentWeek').trigger('click');
  219. // Create a agGrid
  220. gagaAgGrid.createGrid('gridList', gridOptions);
  221. });
  222. /*]]>*/
  223. </script>
  224. </html>