DeliveryLocForm.html 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : DeliveryLocForm.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.14 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="@{'/business/supply/company/delvloc/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
  29. <table class="frmStyle" aria-describedby="검색조건">
  30. <colgroup>
  31. <col style="width:10%;"/>
  32. <col style="width:15%;"/>
  33. <col style="width:10%;"/>
  34. <col/>
  35. </colgroup>
  36. <tr>
  37. <th>공급업체</th>
  38. <td>
  39. <select name="supplyCompCd" disabled="disabled">
  40. <option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  41. </select>
  42. </td>
  43. <th>사용여부</th>
  44. <td>
  45. <select name="useYn">
  46. <option value="Y">Yes</option>
  47. <option value="N">No</option>
  48. </select>
  49. </td>
  50. </tr>
  51. </table>
  52. <ul class="panelBar">
  53. <li class="center">
  54. <button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
  55. <button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
  56. </li>
  57. </ul>
  58. </form>
  59. </div>
  60. <!-- 검색조건 영역 -->
  61. <!-- 리스트 영역 -->
  62. <div class="panelStyle">
  63. <!-- 버튼 배치 영역 -->
  64. <ul class="panelBar">
  65. <li class="right">
  66. <button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
  67. </li>
  68. </ul>
  69. <!-- //버튼 배치 영역 -->
  70. <div id="gridList" style="width: 100%; height: 270px" class="ag-theme-balham"></div>
  71. </div>
  72. <!-- //리스트 영역 -->
  73. <!-- 등록/수정 -->
  74. <div class="panelStyle">
  75. <form id="detailForm" name="detailForm" action="#" th:action="@{'/business/supply/company/delvloc/save'}">
  76. <table class="frmStyle" aria-describedby="등록/수정 폼">
  77. <colgroup>
  78. <col style="width:10%;"/>
  79. <col style="width:15%;"/>
  80. <col style="width:10%;"/>
  81. <col/>
  82. </colgroup>
  83. <tr>
  84. <th>출고처코드</th>
  85. <td colspan="3">
  86. <input type="text" class="w100" name="delvLocCd" maxlength="20" placeholder="자동생성" readonly="readonly"/>
  87. </td>
  88. </tr>
  89. <tr>
  90. <th>출고처명</th>
  91. <td>
  92. <input type="text" class="w200" name="delvLocNm" maxlength="100" placeholder="출고처명"/>
  93. </td>
  94. <th>출고처주소<i class="required" title="필수"></i></th>
  95. <td>
  96. <input type="text" class="w100" name="delvLocZipcode" data-valid-name="출고처 우편번호" readonly="readonly"/>
  97. <button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
  98. <input type="text" class="w300" name="delvLocBaseAddr" required="required" data-valid-name="출고처 기본주소" readonly="readonly"/>
  99. -
  100. <input type="text" class="w300" name="delvLocDtlAddr" maxlength="100" data-valid-name="출고처 상세주소"/>
  101. </td>
  102. </tr>
  103. <tr>
  104. <th>반품처명</th>
  105. <td>
  106. <input type="text" class="w200" name="rtnLocNm" maxlength="100" placeholder="반품처명"/>
  107. </td>
  108. <th>반품처주소<i class="required" title="필수"></i></th>
  109. <td>
  110. <input type="text" class="w100" name="rtnLocZipcode" data-valid-name="반품처 우편번호" readonly="readonly"/>
  111. <button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr('rtnLoc');">우편번호찾기</button>
  112. <input type="text" class="w300" name="rtnLocBaseAddr" required="required" data-valid-name="반품처 기본주소" readonly="readonly"/>
  113. -
  114. <input type="text" class="w300" name="rtnLocDtlAddr" maxlength="100" data-valid-name="반품처 상세주소"/>
  115. </td>
  116. </tr>
  117. </table>
  118. </form>
  119. <!-- 버튼 배치 영역 -->
  120. <ul class="panelBar">
  121. <li class="right">
  122. <button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
  123. <button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
  124. </li>
  125. </ul>
  126. <!-- //버튼 배치 영역 -->
  127. </div>
  128. <!-- 등록/수정 -->
  129. </div>
  130. <script th:inline="javascript">
  131. /*<![CDATA[*/
  132. let columnDefs = [
  133. { headerName: "출고처코드", field: "delvLocCd", width: 100, cellClass: 'text-center' },
  134. {
  135. headerName: "출고처명", field: "delvLocNm", width: 150, cellClass: 'text-center',
  136. cellRenderer: function(params) {
  137. return '<a href="javascript:void(0);">' + params.value + '</a>';
  138. }
  139. },
  140. { headerName: "공급업체", field: "supplyCompNm", width: 150, cellClass: 'text-center' },
  141. { headerName: "출고처우편번호", field: "delvLocZipcode", width: 150, cellClass: 'text-center', hide: true },
  142. { headerName: "출고처기본주소", field: "delvLocBaseAddr", width: 300 },
  143. { headerName: "출고처상세주소", field: "delvLocDtlAddr", width: 200 },
  144. { headerName: "반품처명", field: "rtnLocNm", width: 100, cellClass: 'text-center' },
  145. { headerName: "반품처우편번호", field: "rtnLocZipcode", width: 150, cellClass: 'text-center' },
  146. { headerName: "반품처기본주소", field: "rtnLocBaseAddr", width: 300 },
  147. { headerName: "반품처상세주소", field: "rtnLocDtlAddr", width: 200 },
  148. {
  149. headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center',
  150. valueGetter: function (params) { return params.data.useYn == 'Y' ? 'Yes' : 'No'; }
  151. }
  152. ];
  153. let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
  154. // Cell click
  155. gridOptions.onCellClicked = function(event) {
  156. if (event.colDef.field != 'delvLocNm')
  157. return;
  158. $('#detailForm input[name=delvLocCd]').val(event.data.delvLocCd);
  159. $('#detailForm input[name=delvLocNm]').val(event.data.delvLocNm);
  160. $('#detailForm select[name=supplyCompNm]').val(event.data.supplyCompNm);
  161. $('#detailForm input[name=delvLocZipcode]').val(event.data.delvLocZipcode);
  162. $('#detailForm input[name=delvLocBaseAddr]').val(event.data.delvLocBaseAddr);
  163. $('#detailForm input[name=delvLocDtlAddr]').val(event.data.delvLocDtlAddr);
  164. $('#detailForm input[name=rtnLocZipcode]').val(event.data.rtnLocZipcode);
  165. $('#detailForm input[name=rtnLocBaseAddr]').val(event.data.rtnLocBaseAddr);
  166. $('#detailForm input[name=rtnLocDtlAddr]').val(event.data.rtnLocDtlAddr);
  167. $('#detailForm input[name=rtnLocNm]').val(event.data.rtnLocNm);
  168. $('#detailForm input:radio[name=useYn]:input[value= ' + event.data.useYn + '] ').click();
  169. }
  170. // 검색
  171. $('#btnSearch').on('click', function() {
  172. gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
  173. });
  174. // 신규버튼
  175. $('#btnNew').on('click', function() {
  176. $("#detailForm")[0].reset();
  177. $('#detailForm input[name=delvLocNm]').focus();
  178. });
  179. // 저장
  180. $("#btnSave").on("click", function() {
  181. // 필수값 체크
  182. if (!gagajf.validation('#detailForm'))
  183. return false;
  184. mcxDialog.confirm("저장하시겠습니까?", {
  185. cancelBtnText: "취소",
  186. sureBtnText: "확인",
  187. sureBtnClick: function() {
  188. gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
  189. $('#btnNew').trigger('click');
  190. $('#btnSearch').trigger('click');
  191. });
  192. }
  193. });
  194. });
  195. // 엑셀다운로드
  196. $('#btnExcel').on('click', function() {
  197. gagaAgGrid.exportToExcel('출고처 목록', gridOptions);
  198. });
  199. /**
  200. * DAUM을 이용한 우편번호 팝업 레이어
  201. * @param callbackPosition - 우편번호 정보를 설정할 위치
  202. */
  203. var fnOpenDaumAddr = function(callbackPosition) {
  204. let daumZip = new daum.Postcode({
  205. oncomplete: function(data) {
  206. // 우편번호와 주소 정보를 해당 필드에 넣는다.
  207. if (callbackPosition == 'delvLoc') {
  208. $('#detailForm input[name=delvLocZipcode]').val(data.zonecode);
  209. $('#detailForm input[name=delvLocBaseAddr]').val(cfnGetDaumRoadAddr(data));
  210. $('#detailForm input[name=delvLocDtlAddr]').focus();
  211. } else if (callbackPosition == 'rtnLoc') {
  212. $('#detailForm input[name=rtnLocZipcode]').val(data.zonecode);
  213. $('#detailForm input[name=rtnLocBaseAddr]').val(cfnGetDaumRoadAddr(data));
  214. $('#detailForm input[name=rtnLocDtlAddr]').focus();
  215. }
  216. cfnCloseDaumAddr();
  217. },
  218. width: '100%'
  219. });
  220. cfnOpenDaumAddr(daumZip);
  221. }
  222. $(document).ready(function() {
  223. // Create a agGrid
  224. gagaAgGrid.createGrid('gridList', gridOptions);
  225. });
  226. /*]]>*/
  227. </script>
  228. </html>