GiftcardSettleForm.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : GiftcardSettleForm.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 2020.10.26 gagamel 최초 작성
  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="@{'/settle/giftcard/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  29. <table class="frmStyle" aria-describedby="검색조건">
  30. <colgroup>
  31. <col style="width:10%;"/>
  32. <col/>
  33. <col style="width:10%;"/>
  34. <col style="width:10%;"/>
  35. </colgroup>
  36. <tr>
  37. <th>구분<i class="required" title="필수" aria-hidden="true"></i></th>
  38. <td>
  39. <select name="termGb">
  40. <option value="SETTLE_YM">정산월</option>
  41. <option value="REG_DT">등록일</option>
  42. <option value="EXPIRE_DT">사용만료일</option>
  43. </select>
  44. <span id="spanSettle">
  45. <input type="text" class="schMonth w60" name="settleYm" id="settleYm" maxlength="7"/>
  46. <button type="button" class="btn icn schBtn" data-id="settleYm"><i class="fa fa-calendar" aria-hidden="true"></i></button>
  47. </span>
  48. <span id="terms" style="display: none;">
  49. <span class="nowrap">
  50. <input name="startDt" id="startDt" type="text" class="w80 schDate" maxlength="8"/>
  51. ~
  52. <input name="endDt" id="endDt" type="text" class="w80 schDate" maxlength="8"/>
  53. </span>
  54. <button type="button" class="btn btn-default btn-sm btnToday" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', 't');">오늘</button>
  55. <button type="button" class="btn btn-default btn-sm btnYesterday" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', 'y');">어제</button>
  56. <button type="button" class="btn btn-default btn-sm" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', '7d');">최근한주</button>
  57. <button type="button" class="btn btn-default btn-sm" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', 'tw');">이번주</button>
  58. <button type="button" class="btn btn-default btn-sm" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', 'pw');">지난주</button>
  59. <button type="button" class="btn btn-default btn-sm" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', '1m');">최근한달</button>
  60. <button type="button" class="btn btn-default btn-sm" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', 'tm');">이번달</button>
  61. <button type="button" class="btn btn-default btn-sm btnYesterMonth" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', 'pm');">지난달</button>
  62. <button type="button" class="btn btn-default btn-sm" onclick="gagajf.setDate('#terms', 'startDt', 'endDt', '3m');">최근3개월</button>
  63. </span>
  64. </td>
  65. <th>유효상품권</th>
  66. <td>
  67. <select name="availYn">
  68. <option value="">[전체]</option>
  69. <option value="Y">Yes</option>
  70. <option value="N">No</option>
  71. </select>
  72. </td>
  73. </tr>
  74. </table>
  75. <ul class="panelBar">
  76. <li class="center">
  77. <button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
  78. <button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
  79. </li>
  80. </ul>
  81. </form>
  82. </div>
  83. <!-- 검색조건 영역 -->
  84. <!-- 리스트 영역 -->
  85. <div class="panelStyle">
  86. <!-- 버튼 배치 영역 -->
  87. <ul class="panelBar">
  88. <li class="right">
  89. <button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
  90. </li>
  91. </ul>
  92. <!-- //버튼 배치 영역 -->
  93. <div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
  94. </div>
  95. <!-- //리스트 영역 -->
  96. </div>
  97. <script th:inline="javascript">
  98. /*<![CDATA[*/
  99. let columnDefs = [
  100. { headerName: "상품권번호", field: "gfcdNo", width: 200, cellClass: 'text-center' },
  101. { headerName: "등록일", field: "regDt", width: 120, cellClass: 'text-center' },
  102. { headerName: "사용만료일", field: "useExpDate", width: 120, cellClass: 'text-center' },
  103. { headerName: "유효여부", field: "availYn", width: 100, cellClass: 'text-center' },
  104. { headerName: "회원ID", field: "custId", width: 100, cellClass: 'text-center' },
  105. {
  106. headerName: "최초등록금액", field: "chgGfcdAmt", width: 150, cellClass: 'text-right',
  107. cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
  108. },
  109. {
  110. headerName: "누적사용금액", field: "usGfcdAmt", width: 150, cellClass: 'text-right', hide: true,
  111. cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
  112. },
  113. {
  114. headerName: "정산월 사용금액", field: "useGfcdAmt", width: 150, cellClass: 'text-right',
  115. cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
  116. },
  117. {
  118. headerName: "정산월 취소금액", field: "cnclGfcdAmt", width: 150, cellClass: 'text-right',
  119. cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
  120. },
  121. {
  122. headerName: "잔액", field: "rmGfcdAmt", width: 150, cellClass: 'text-right', hide: true,
  123. cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
  124. }
  125. ];
  126. let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  127. let gb = 'SETTLE_YM';
  128. // 검색
  129. $('#btnSearch').on('click', function() {
  130. if (gb == 'SETTLE_YM') { // 정산월
  131. if (gagajf.isNull($('#searchForm input[name=settleYm]').val())) {
  132. mcxDialog.alertC('정산월을 입력해 주세요.', {
  133. sureBtnText: "확인",
  134. sureBtnClick: function() {
  135. $('#searchForm input[name=settleYm]').focus();
  136. }
  137. });
  138. return false;
  139. }
  140. } else {
  141. if (gagajf.isNull($('#searchForm input[name=startDt]').val())) {
  142. mcxDialog.alertC('시작일자를 입력해 주세요.', {
  143. sureBtnText: "확인",
  144. sureBtnClick: function() {
  145. $('#searchForm input[name=startDt]').focus();
  146. }
  147. });
  148. return false;
  149. }
  150. if (gagajf.isNull($('#searchForm input[name=endDt]').val())) {
  151. mcxDialog.alertC('종료일자를 입력해 주세요.', {
  152. sureBtnText: "확인",
  153. sureBtnClick: function() {
  154. $('#searchForm input[name=endDt]').focus();
  155. }
  156. });
  157. return false;
  158. }
  159. var fromDate = $('#searchForm input[name=startDt]').val().toDate('YYYY-MM-DD');
  160. var toDate = $('#searchForm input[name=endDt]').val().toDate('YYYY-MM-DD');
  161. if (fromDate > toDate) {
  162. mcxDialog.alert("시작일자는 종료일자 보다 클 수 없습니다.");
  163. $('#searchForm input[name=endDt]').focus();
  164. return false;
  165. }
  166. }
  167. gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm', function() {
  168. fnShowOrHideColumn();
  169. });
  170. });
  171. // 초기화 클릭시
  172. $('#btnInit').on('click', function() {
  173. $('#searchForm')[0].reset();
  174. $('#settleYm').val((new Date()).before(0, 1, 0).format("YYYY-MM"));
  175. $('.btnYesterMonth').trigger('click');
  176. $('#searchForm select[name=termGb]').trigger('change');
  177. });
  178. // 엑셀다운로드
  179. $('#btnExcel').on('click', function() {
  180. gagaAgGrid.exportToExcel('상품권 목록', gridOptions);
  181. });
  182. // 구분 선택 시
  183. $('#searchForm select[name=termGb]').on('change', function() {
  184. gb = $('#searchForm select[name=termGb]').val();
  185. if (gb == 'SETTLE_YM') { // 정산월
  186. $('#spanSettle').show();
  187. $('#terms').hide();
  188. } else {
  189. $('#spanSettle').hide();
  190. $('#terms').show();
  191. }
  192. fnShowOrHideColumn();
  193. gridOptions.api.setRowData();
  194. });
  195. var fnShowOrHideColumn = function() {
  196. if (gb == 'SETTLE_YM') { // 정산월
  197. gagaAgGrid.showOrHideColumn(gridOptions, 'usGfcdAmt', false);
  198. gagaAgGrid.showOrHideColumn(gridOptions, 'useGfcdAmt', true);
  199. gagaAgGrid.showOrHideColumn(gridOptions, 'cnclGfcdAmt', true);
  200. gagaAgGrid.showOrHideColumn(gridOptions, 'rmGfcdAmt', false);
  201. } else {
  202. gagaAgGrid.showOrHideColumn(gridOptions, 'usGfcdAmt', true);
  203. gagaAgGrid.showOrHideColumn(gridOptions, 'useGfcdAmt', false);
  204. gagaAgGrid.showOrHideColumn(gridOptions, 'cnclGfcdAmt', false);
  205. gagaAgGrid.showOrHideColumn(gridOptions, 'rmGfcdAmt', true);
  206. }
  207. }
  208. $(document).ready(function() {
  209. $('#settleYm').val((new Date()).before(0, 1, 0).format("YYYY-MM"));
  210. $('.btnYesterMonth').trigger('click');
  211. // Create a agGrid
  212. gagaAgGrid.createGrid('gridList', gridOptions);
  213. });
  214. /*]]>*/
  215. </script>
  216. </html>