MailHeaderFooterForm.html 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : MailHeaderFooter.html
  7. * @desc : MailHeaderFooter 관리 화면
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2021. 02. 01 csh9191 최초 작성
  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="@{'/marketing/mailtemplate/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  29. <table class="frmStyle" aria-describedby="검색조건">
  30. <colgroup>
  31. <col style="width:10%;"/>
  32. <col style="width:20%;"/>
  33. <col style="width:10%;"/>
  34. <col style="width:20%;"/>
  35. <col style="width:10%;"/>
  36. <col style="width:20%;"/>
  37. <col/>
  38. </colgroup>
  39. <tr>
  40. <th>구분</th>
  41. <td>
  42. <select name="mailhfGb">
  43. <option value="">[전체]</option>
  44. <option value="H">헤더</option>
  45. <option value="F">푸터</option>
  46. </select>
  47. </td>
  48. <th>타이틀 명</th>
  49. <td>
  50. <input type="text" name="mailhfNm" class="w200"/>
  51. </td>
  52. <th>등록자</th>
  53. <td>
  54. <input type="text" name="searchTxt" class="w200"/>
  55. </td>
  56. </tr>
  57. </table>
  58. <ul class="panelBar">
  59. <li class="center">
  60. <button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
  61. <button type="button" class="btn btn-info btn-lg" id="btnSearch">조회</button>
  62. </li>
  63. </ul>
  64. </form>
  65. </div>
  66. <!-- 검색조건 영역 -->
  67. <!-- 리스트 영역 -->
  68. <div class="panelStyle">
  69. <!-- 버튼 배치 영역 -->
  70. <ul class="panelBar">
  71. <li class="left">
  72. <button type="button" class="btn btn-danger btn-lg" id="btnDeleteRow">선택삭제</button>
  73. </li>
  74. <li class="right">
  75. <button type="button" class="btn btn-info btn-lg" onclick="fnOpenMailHFPopup('N');">메일헤더푸터 등록</button>
  76. </li>
  77. </ul>
  78. <!-- //버튼 배치 영역 -->
  79. <div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
  80. </div>
  81. <!-- //리스트 영역 -->
  82. </div>
  83. <script th:inline="javascript">
  84. /*<![CDATA[*/
  85. //헤더 푸터 구분 표시
  86. let mailhfGb = { "H":"헤더", "F":"푸터" };
  87. // specify the columns
  88. let columnDefs = [
  89. {
  90. width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false
  91. },
  92. {
  93. headerName: "구분", field: "mailhfGb", width: 100, cellClass: 'text-center',
  94. valueFormatter: function (params) { return gagaAgGrid.lookupValue(mailhfGb, params.value); }
  95. },
  96. { headerName: "타이틀", field: "mailhfNm", width: 300, cellClass: 'text-center',
  97. cellRenderer: function(params) {
  98. return '<a href="javascript:void(0);">' + params.value + '</a>';
  99. }
  100. },
  101. {
  102. headerName: "등록자", field: "regNm", width: 150, cellClass: 'text-center'},
  103. {
  104. headerName: "등록일시", field: "regDt", width: 200, cellClass: 'text-center',
  105. cellRenderer: function(params) { return gagaAgGrid.toDateTimeFormat(params.value); }
  106. },
  107. {
  108. headerName: "수정자", field: "updNm", width: 150, cellClass: 'text-center'},
  109. {
  110. headerName: "수정일시", field: "updDt", width: 200, cellClass: 'text-center',
  111. cellRenderer: function(params) { return gagaAgGrid.toDateTimeFormat(params.value); }
  112. }
  113. ];
  114. // Get GridOptions
  115. let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  116. // Add on options
  117. gridOptions.rowSelection = 'multiple'; //셀렉박스 다중 선택
  118. // 셀 클릭 이벤트
  119. gridOptions.onCellClicked = function(event) {
  120. if (event.colDef.field != 'mailhfNm')
  121. return;
  122. fnOpenMailHFPopup('U', event.data.mailhfSq);
  123. }
  124. // 조회버튼 - 검색
  125. $('#btnSearch').on('click', function() {
  126. var formId = "#searchForm";
  127. gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
  128. });
  129. // 선택삭제
  130. $('#btnDeleteRow').on('click', function() {
  131. var removedData = gagaAgGrid.removeRowData(gridOptions);
  132. if (removedData.length == 0) {
  133. mcxDialog.alert('선택된 행이 없습니다.');
  134. return;
  135. }
  136. mcxDialog.confirm("삭제하시겠습니까?", {
  137. sureBtnText: "확인",
  138. cancelBtnText: "취소",
  139. sureBtnClick: function() {
  140. // delete 대신 update 처리해야 하므로 다음과 같이 useYn 값으로 처리
  141. var updatedData = [];
  142. $.each(removedData, function(idx, item) {
  143. item.useYn = 'N';
  144. updatedData.push(item);
  145. });
  146. var jsonData = JSON.stringify(updatedData);
  147. gagajf.ajaxJsonSubmit('/marketing/mailtemplate/delete', jsonData, function() {
  148. $('#btnSearch').trigger('click');
  149. });
  150. }
  151. });
  152. });
  153. // 등록/상세 팝업
  154. var fnOpenMailHFPopup = function(mode, mailhfSq) {
  155. var actionUrl = '/marketing/mailtemplate/detail/form' + '?mode=' + mode;
  156. if (!gagajf.isNull(mailhfSq)) actionUrl += '&mailhfSq=' + mailhfSq;
  157. cfnOpenModalPopup(actionUrl, 'popupMailHF');
  158. }
  159. $(document).ready(function() {
  160. // Create a agGrid
  161. gagaAgGrid.createGrid('gridList', gridOptions);
  162. gagaAgGrid.hideStatusBar('gridList');
  163. });
  164. /*]]>*/
  165. </script>
  166. </html>