GoodsNoticeForm.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : GoodsDetailNoticeForm.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.11.05 eskim 최초 작성
  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. <!-- TITLE -->
  29. <div class="panelTitle">
  30. <h3><i class="fa fa-info-circle"></i>아래 검색조건 중 하나를 꼭 입력해 주세요.</h3>
  31. </div>
  32. <!-- //TITLE -->
  33. <form id="searchForm" name="searchForm" action="#" th:action="@{'/goods/notice/list'}" >
  34. <input type="hidden" name="noticeType" value="G047_30"/>
  35. <input type="hidden" id="searchGb" name="searchGb" />
  36. <div class="panelContent">
  37. <table class="frmStyle" aria-describedby="검색조건">
  38. <colgroup>
  39. <col width="10%"/>
  40. <col width="23%"/>
  41. <col width="10%"/>
  42. <col width="23%"/>
  43. <col width="10%"/>
  44. <col/>
  45. </colgroup>
  46. <tr>
  47. <th>업체</th>
  48. <td>
  49. <input type="text" class="w100" name="supplyCompSearchTxt" id="supplyCompSearchTxt" maxlength="20" />
  50. <button type="button" class="btn icn" id="btnSearchSupplyComp"><i class="fa fa-search"></i></button>
  51. <span id="supplyCompText"></span>
  52. <input type="hidden" name="supplyCompList"/>
  53. </td>
  54. <th>브랜드</th>
  55. <td>
  56. <input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
  57. <button type="button" class="btn icn" id="btnSearchBrand"><i class="fa fa-search"></i></button>
  58. <span id="brandText"></span>
  59. <input type="hidden" name="brandList"/>
  60. </td>
  61. <th rowspan="2">키워드</th>
  62. <td rowspan="2">
  63. <select name="search" id="search">
  64. <option value="searchGoodsCd">상품코드</option>
  65. <option value="searchGoodsNm">상품명</option>
  66. <option value="searchGoodsNum">품번</option>
  67. <option value="searchSupplyGoodsCd">업체상품코드</option>
  68. </select>
  69. <textarea class="textareaR2 w50p" name="condition" id="condition"></textarea>
  70. </td>
  71. </tr>
  72. <tr>
  73. <th>공지제목</th>
  74. <td>
  75. <input name="noticeTitle" type="text" maxlength="200"/>
  76. </td>
  77. <th>사용여부</th>
  78. <td>
  79. <select name="useYn">
  80. <option value="">[전체]</option>
  81. <option value="Y">[Y] Yes</option>
  82. <option value="N">[N] No</option>
  83. </select>
  84. </td>
  85. </tr>
  86. <tr>
  87. <th>공지기간</th>
  88. <td colspan="5" id="sellTerms">
  89. </td>
  90. </tr>
  91. </table>
  92. <ul class="panelBar">
  93. <li class="center">
  94. <button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
  95. <button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
  96. </li>
  97. </ul>
  98. </div>
  99. </form>
  100. </div>
  101. <!-- 검색조건 영역 -->
  102. <!-- 리스트 영역 -->
  103. <div class="panelStyle">
  104. <div id="gridNoticeList" style="width: 100%; height: 400px" class="ag-theme-balham"></div>
  105. </div>
  106. <!-- //리스트 영역 -->
  107. <form id="goodsNoticeForm" name="goodsNoticeForm" action="#" th:action="@{'/goods/notice/save'}">
  108. <input type="hidden" name="urgentYn" value="N"/> <!-- 긴급공지여부 -->
  109. <input type="hidden" name="noticeType" value="G047_30"/>
  110. <input type="hidden" name="goodsList" />
  111. <!-- 등록/수정 -->
  112. <div class="panelStyle" >
  113. <ul>
  114. <li>
  115. <table class="w100p">
  116. <colgroup>
  117. <col style="width:65%;"/>
  118. <col style="width:1%;"/>
  119. <col/>
  120. </colgroup>
  121. <tr>
  122. <td>
  123. <table class="frmStyle" aria-describedby="등록/수정 폼">
  124. <colgroup>
  125. <col style="width:10%;"/>
  126. <col style="width:15%;"/>
  127. <col style="width:10%;"/>
  128. <col style="width:15%;"/>
  129. <col style="width:10%;"/>
  130. <col/>
  131. </colgroup>
  132. <tr>
  133. <th>공지번호</th>
  134. <td>
  135. <input type="text" class="w100" name="noticeSq" placeholder="자동부여" readonly="readonly"/>
  136. </td>
  137. <th>사용여부</th>
  138. <td>
  139. <input type="hidden" name="useYn"/>
  140. <label class="chkBox"><input type="checkbox" name="chkUseYn" checked="checked" value="Y"/>사용</label>
  141. </td>
  142. <th>공지기간<i class="required" title="필수"></i></th>
  143. <td>
  144. <input type="text" class="schDate w100" name="noticeStdt" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  145. ~
  146. <input type="text" class="schDate w100" name="noticeEddt" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  147. </td>
  148. </tr>
  149. <tr>
  150. <th>제목<i class="required" title="필수"></i></th>
  151. <td colspan="5">
  152. <input type="text" name="noticeTitle" required="required" data-valid-name="제목"/>
  153. </td>
  154. </tr>
  155. <tr>
  156. <th>공지내용<i class="required" title="필수"></i></th>
  157. <td colspan="5">
  158. <textarea class="textareaR4" name="noticeContent" id="noticeContent"></textarea>
  159. </td>
  160. </tr>
  161. </table>
  162. </td>
  163. <td>&nbsp;</td>
  164. <td>
  165. <ul class="panelBar">
  166. <li class="left">
  167. <button type="button" class="btn btn-danger btn-lg" id="btnDeleteNoticeGoods">삭제</button>
  168. </li>
  169. <li class="right">
  170. <button type="button" class="btn btn-base btn-lg" id="btnSearchExcel">엑셀조회</button>
  171. <button type="button" class="btn btn-info btn-lg" id="btnSearchGoods">상품조회</button>
  172. </li>
  173. </ul>
  174. <ul>
  175. <li id="gridNoticeGoodsList" style="width: 100%; height: 450px;" class="ag-theme-balham"></li>
  176. </ul>
  177. </td>
  178. </tr>
  179. </table>
  180. </li>
  181. </ul>
  182. <!-- 버튼 배치 영역 -->
  183. <ul class="panelBar">
  184. <li class="right">
  185. <button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
  186. <button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
  187. </li>
  188. </ul>
  189. <!-- //버튼 배치 영역 -->
  190. </div>
  191. <!-- 등록/수정 -->
  192. </form>
  193. </div>
  194. <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
  195. <script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2021072201"></script>
  196. <script th:inline="javascript">
  197. /*<![CDATA[*/
  198. var columnNoticeDefs = [
  199. {headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
  200. {headerName: "공지번호", field: "noticeSq", width: 90, cellClass: 'text-center'},
  201. {headerName: "공지제목", field: "noticeTitle", width: 500,
  202. cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
  203. },
  204. {headerName: "공지시작일", field: "noticeStdt", width:150, cellClass: 'text-center',
  205. cellRenderer: function(params) { return gagaAgGrid.toDateFormat(params.value); }
  206. },
  207. {headerName: "공지종료일", field: "noticeEddt", width:150, cellClass: 'text-center',
  208. cellRenderer: function(params) { return gagaAgGrid.toDateFormat(params.value); }
  209. },
  210. {headerName: "사용여부", field: "useYn", width:90, cellClass: 'text-center'},
  211. {headerName: "등록자", field: "regNm", width:90, cellClass: 'text-center'},
  212. {headerName: "등록일자", field: "regDt", width:150, cellClass: 'text-center',
  213. cellRenderer: function(params) { return gagaAgGrid.toDateFormat(params.value); }
  214. }
  215. ];
  216. var columnNoticeGoodsDefs = [
  217. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  218. {headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
  219. {headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
  220. {headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
  221. {headerName: "상품명", field: "goodsNm", width: 260, cellClass: 'text-left'}
  222. ];
  223. var gridNoticeOptions = gagaAgGrid.getGridOptions(columnNoticeDefs);
  224. var gridNoticeGoodsOptions = gagaAgGrid.getGridOptions(columnNoticeGoodsDefs);
  225. gridNoticeGoodsOptions.rowSelection = 'multiple';
  226. gridNoticeGoodsOptions.suppressRowClickSelection = true;
  227. // Cell click
  228. gridNoticeOptions.onCellClicked = function(event) {
  229. if (event.colDef.field != 'noticeTitle')
  230. return;
  231. $('#goodsNoticeForm input[name=noticeSq]').val(event.data.noticeSq);
  232. if (event.data.useYn == 'Y') {
  233. $('#goodsNoticeForm input:checkbox[name=chkUseYn]').prop('checked', true);
  234. $('#goodsNoticeForm input:checkbox[name=chkUseYn]').parent("label").addClass("checked");
  235. } else {
  236. $('#goodsNoticeForm input:checkbox[name=chkUseYn]').prop('checked', false);
  237. $('#goodsNoticeForm input:checkbox[name=chkUseYn]').parent("label").removeClass("checked");
  238. }
  239. $('#goodsNoticeForm input[name=noticeStdt]').val(event.data.noticeStdt);
  240. $('#goodsNoticeForm input[name=noticeEddt]').val(event.data.noticeEddt);
  241. $('#goodsNoticeForm input[name=noticeTitle]').val(event.data.noticeTitle);
  242. // 공지내용. Summernote에 값 세팅
  243. gagaSn.setContents('#noticeContent', event.data.noticeContent);
  244. // 상품 목록
  245. fnGetNoticeGoodsList(event.data.noticeSq);
  246. }
  247. // 초기화 클릭시
  248. $('#btnInit').on('click', function() {
  249. $('#searchForm')[0].reset();
  250. //$("#searchForm input[type=radio]").removeClass("checked");
  251. $("#searchForm input[type=checkbox]").removeClass("checked");
  252. //$("#searchForm input[type=radio]").parent("label").removeClass("checked");
  253. $("#searchForm input[type=checkbox]").parent("label").removeClass("checked");
  254. $("#searchForm input[type=radio][checked]").parent("label").addClass("checked");
  255. $("#multiBrand").empty();
  256. $('#searchForm input[name=brandList]').val('');
  257. $('#searchForm').find('#brandText').html('');
  258. $('#searchForm input[name=supplyCompList]').val('');
  259. $('#searchForm').find('#supplyCompText').html('');
  260. $(document).find('#searchForm').find(".multiCheckBox").each(function(i, e){
  261. let btnNm = $(this).find(".sltBtn").attr("data-name");
  262. $(this).find(".sltBtn").text(btnNm);
  263. });
  264. });
  265. // 검색
  266. $('#btnSearch').on('click', function() {
  267. if(!fnConditionCheck()) return;
  268. gagaAgGrid.fetch($('#searchForm').prop('action'), gridNoticeOptions, '#searchForm');
  269. });
  270. //검색 조건 확인
  271. var fnConditionCheck = function(){
  272. var formId = '#searchForm';
  273. var form = document.searchForm;
  274. var searchFlag = false;
  275. var cnt = 0;
  276. if( !gagajf.isNull($("#searchForm input[name=supplyCompList]").val())
  277. || !gagajf.isNull($("#searchForm textarea[name=condition]").val())
  278. || (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
  279. || !gagajf.isNull($("#searchForm input[name=brandList]").val())
  280. ){
  281. searchFlag = true;
  282. }else{
  283. for (i = 0; i < form.elements.length; i++ ) {
  284. var el = form.elements[i];
  285. if ($(el).prop("type") == "text" || ($(el).prop("type") == "select-one" && el.name != "search" && el.name != "pageSize")) {
  286. if (!(el.value == null || el.value == "")) {
  287. cnt++;
  288. }
  289. }
  290. }
  291. }
  292. if(cnt > 0) searchFlag = true;
  293. if(searchFlag == false){
  294. mcxDialog.alert("검색조건을 입력하세요.");
  295. return false;
  296. }
  297. var fromDate = $('#searchForm input[name=stDate]').val();
  298. var toDate = $('#searchForm input[name=edDate]').val();
  299. if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
  300. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  301. mcxDialog.alertC("공지기간 조회시 시작일자와 종료일자를 입력하세요.", {
  302. sureBtnText: "확인",
  303. sureBtnClick: function(){
  304. $('#searchForm input[name=stDate]').focus();
  305. }
  306. });
  307. return false;
  308. }
  309. if (fromDate > toDate) {
  310. mcxDialog.alertC("공지기간 시작일자는 종료일자 보다 클 수 없습니다.", {
  311. sureBtnText: "확인",
  312. sureBtnClick: function(){
  313. $('#goodsNoticeForm input[name=stDate]').focus();
  314. }
  315. });
  316. return false;
  317. }
  318. }
  319. return true;
  320. }
  321. // 상품 목록 조회
  322. var fnGetNoticeGoodsList = function(noticeSq) {
  323. var actionUrl = '/goods/notice/goods/list/' + noticeSq;
  324. gagaAgGrid.fetch(actionUrl, gridNoticeGoodsOptions);
  325. }
  326. // 업체 조회 선택시
  327. $('#btnSearchSupplyComp').on('click', function() {
  328. cfnOpenCompanyListPopup('fnSetSupplyCompInfo', 'M');
  329. });
  330. // 업체 조회 팝업에서 호출
  331. var fnSetSupplyCompInfo = function(result) {
  332. var arrSupplyComp = [];
  333. var supplyCompText = "";
  334. var sIndex = 0;
  335. $('#searchForm').find('#supplyCompText').html('');
  336. $('#searchForm input[name=supplyCompSearchTxt]').val('');
  337. result.forEach(function(supplyComp){
  338. sIndex++;
  339. arrSupplyComp.push(supplyComp.supplyCompCd);
  340. });
  341. // 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리
  342. if (sIndex == 1) {
  343. $('#searchForm input[name=supplyCompSearchTxt]').val(arrSupplyComp[0]);
  344. }else{
  345. supplyCompText = sIndex + " 개";
  346. $('#searchForm').find('#supplyCompText').html(supplyCompText);
  347. }
  348. var jsonData = JSON.stringify(arrSupplyComp);
  349. $("#searchForm input[name=supplyCompList]").val(jsonData);
  350. }
  351. // 브랜드 조회 팝업에서 호출
  352. var fnSetBrandInfo = function(result) {
  353. var arrbrandCd = [];
  354. var brandText = "";
  355. var bIndex = 0;
  356. $('#searchForm').find('#brandText').html('');
  357. $('#searchForm input[name=searchTxt]').val('');
  358. result.forEach(function(brand){
  359. bIndex++;
  360. arrbrandCd.push(brand.brandCd);
  361. });
  362. // 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리
  363. if (bIndex == 1) {
  364. $('#searchForm input[name=searchTxt]').val(arrbrandCd[0]);
  365. }else{
  366. brandText = bIndex + " 개";
  367. $('#searchForm').find('#brandText').html(brandText);
  368. }
  369. var jsonData = JSON.stringify(arrbrandCd);
  370. $("#searchForm input[name=brandList]").val(jsonData);
  371. }
  372. // 브랜드 조회 선택시
  373. $('#btnSearchBrand').on('click', function() {
  374. /* if (gagajf.isNull($("#searchForm input[name=searchTxt]").val())){
  375. mcxDialog.alert('브랜드 검색어를 입력하세요.');
  376. return false;
  377. } */
  378. cfnOpenBrandListPopup('fnSetBrandInfo', 'M');
  379. });
  380. //엑셀 상품 조회
  381. $('#btnSearchExcel').on('click', function() {
  382. cfnExcelUploadPopup('goodsNoticeExcelUpload', 'goodsNoticeExcelUpload');
  383. });
  384. var goodsNoticeExcelUpload = function(result){
  385. var data = {procJob : result.procJob
  386. ,excelFileNm : result.excelFileNm
  387. };
  388. var jsonData = JSON.stringify(data);
  389. gagajf.ajaxJsonSubmit('/goods/search/excelupload/save', jsonData, fnGoodsNoticeExcelUploadCallBack);
  390. }
  391. var fnGoodsNoticeExcelUploadCallBack = function(result){
  392. gagajf.ajaxJsonSubmit('/goods/excel/upload/goods/list', '', fnExcelSearchCallBack);
  393. }
  394. // 상품 엑셀 조회 콜백함수
  395. var fnExcelSearchCallBack = function(result) {
  396. if (result.goodsExcelList.length < 1) return;
  397. var oldData = gagaAgGrid.getAllRowData(gridNoticeGoodsOptions);
  398. $.each(result.goodsExcelList, function(idx, item) {
  399. var isInvalid = false;
  400. if (oldData != null && oldData.length != 0){
  401. oldData.forEach(function(oneData){
  402. if(oneData.goodsCd == item.goodsCd){
  403. isInvalid = true;
  404. return true;
  405. }
  406. });
  407. if(isInvalid){
  408. return isInvalid;
  409. }
  410. }
  411. gagaAgGrid.addRowData(gridNoticeGoodsOptions, {"goodsCd" : item.goodsCd, "goodsNm" : item.goodsNm, "crud" : "C"});
  412. });
  413. return;
  414. };
  415. // 상품 조회 클릭 시
  416. $('#btnSearchGoods').on('click', function() {
  417. cfnOpenGoodsPopup('fnSearchCallBack');
  418. });
  419. // 상품 조회 콜백함수
  420. var fnSearchCallBack = function(result) {
  421. if (result.length < 1) return;
  422. var oldData = gagaAgGrid.getAllRowData(gridNoticeGoodsOptions);
  423. $.each(result, function(idx, item) {
  424. var isInvalid = false;
  425. if (oldData != null && oldData.length != 0){
  426. oldData.forEach(function(oneData){
  427. if(oneData.goodsCd == item.goodsCd){
  428. isInvalid = true;
  429. return true;
  430. }
  431. });
  432. if(isInvalid){
  433. return isInvalid;
  434. }
  435. }
  436. gagaAgGrid.addRowData(gridNoticeGoodsOptions, {"goodsCd" : item.goodsCd, "goodsNm" : item.goodsNm, "crud" : "C"});
  437. });
  438. uifnPopupClose('popupGoods');
  439. return;
  440. };
  441. // 상품 삭제
  442. $('#btnDeleteNoticeGoods').on('click', function() {
  443. var selectedData = gridNoticeGoodsOptions.api.getSelectedRows();
  444. if (selectedData.length == 0) {
  445. mcxDialog.alert('선택된 행이 없습니다.');
  446. return;
  447. }
  448. // 신규 상세 공지일경우 화면에서만 삭제
  449. if (gagajf.isNull($('#goodsNoticeForm input[name=noticeSq]').val())){
  450. var removedData = gagaAgGrid.removeRowData(gridNoticeGoodsOptions, false);
  451. return;
  452. }
  453. mcxDialog.confirm('삭제하시겠습니까?', {
  454. cancelBtnText: "취소",
  455. sureBtnText: "확인",
  456. sureBtnClick: function(){
  457. var removedData = gagaAgGrid.removeRowData(gridNoticeGoodsOptions, false);
  458. var arrGoodsCd = [];
  459. $.each(selectedData, function(idx, item) {
  460. arrGoodsCd.push(item.goodsCd);
  461. });
  462. var data = {arrGoodsCd : arrGoodsCd
  463. ,noticeSq : $('#goodsNoticeForm input[name=noticeSq]').val()
  464. };
  465. var jsonData = JSON.stringify(data);
  466. gagajf.ajaxJsonSubmit('/goods/notice/goods/delete', jsonData);
  467. }
  468. });
  469. });
  470. // 신규 버튼 클릭
  471. $("#btnNew").on("click", function(){
  472. $('#goodsNoticeForm')[0].reset();
  473. // 공지내용. Summernote에 값 세팅
  474. gagaSn.setContents('#noticeContent', "");
  475. // 그리드 초기화
  476. gridNoticeGoodsOptions.api.setRowData(null);
  477. $('#goodsNoticeForm input[name=noticeSq]').val('');
  478. $('#goodsNoticeForm input[name=noticeStdt]').val(_today);
  479. $('#goodsNoticeForm input[name=noticeEddt]').val(_today);
  480. });
  481. // 저장
  482. $("#btnSave").on("click", function() {
  483. // 날짜 체크
  484. if (gagajf.isNull($('#goodsNoticeForm input[name=noticeStdt]').val())) {
  485. mcxDialog.alertC('공지시작일자를 입력해 주세요.', {
  486. sureBtnText: "확인",
  487. sureBtnClick: function() {
  488. $('#goodsNoticeForm input[name=noticeStdt]').focus();
  489. }
  490. });
  491. return;
  492. }
  493. if (gagajf.isNull($('#goodsNoticeForm input[name=noticeEddt]').val())) {
  494. mcxDialog.alertC('공지종료일자를 입력해 주세요.', {
  495. sureBtnText: "확인",
  496. sureBtnClick: function() {
  497. $('#goodsNoticeForm input[name=noticeEddt]').focus();
  498. }
  499. });
  500. return;
  501. }
  502. var stDate = $('#goodsNoticeForm input[name=noticeStdt]').val().toDate('YYYY-MM-DD');
  503. var edDate = $('#goodsNoticeForm input[name=noticeEddt]').val().toDate('YYYY-MM-DD');
  504. if (stDate > edDate) {
  505. mcxDialog.alert("공지기간 종료일자는 시작일자 보다 클 수 없습니다.");
  506. return;
  507. }
  508. // validation
  509. if (!gagajf.validation('#goodsNoticeForm'))
  510. return false;
  511. $('#goodsNoticeForm input[name=useYn]').val($('#goodsNoticeForm input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
  512. mcxDialog.confirm('저장하시겠습니까?', {
  513. cancelBtnText: "취소",
  514. sureBtnText: "확인",
  515. sureBtnClick: function(){
  516. //var goodsAllData = gagaAgGrid.getAllRowData(gridNoticeGoodsOptions);
  517. var goodsAllData = gagaAgGrid.getChangedData(gridNoticeGoodsOptions);
  518. var jsonGoodsData = JSON.stringify(goodsAllData);
  519. $('#goodsNoticeForm input[name=goodsList]').val(jsonGoodsData);
  520. var jsonData = JSON.stringify($('#goodsNoticeForm').serializeObject());
  521. gagajf.ajaxJsonSubmit($('#goodsNoticeForm').prop('action'), jsonData, function() {
  522. $('#btnSearch').trigger('click');
  523. $("#btnNew").trigger('click');
  524. //fnGetNoticeGoodsList($('#goodsNoticeForm input[name=noticeSq]').val());
  525. });
  526. }
  527. });
  528. });
  529. $(document).ready(function() {
  530. cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '공지일', 'X');
  531. // Create a agGrid
  532. gagaAgGrid.createGrid('gridNoticeList', gridNoticeOptions);
  533. gagaAgGrid.createGrid('gridNoticeGoodsList', gridNoticeGoodsOptions);
  534. // Create a summernote
  535. var snOptions = gagaSn.getToolbarOptions('media');
  536. gagaSn.createSummernote(snOptions, '#noticeContent');
  537. });
  538. /*]]>*/
  539. </script>
  540. </html>