CardInterestPopupForm.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : CardInterestPopupForm.html
  7. * @desc : 카드무이자할부 팝업 화면
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2019 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2021.02.01 eskim 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="1000"> <!-- data-width="850" -->
  18. <div class="panelStyle">
  19. <div class="panelTitle">
  20. <h2>프로모션<th:block th:text="${cardPrmtSq > 0 }?'상세':'등록'"></th:block> </h2>
  21. <button type="button" class="close" onclick="uifnPopupClose('popupCardInterest')"><i class="fa fa-times"></i></button>
  22. </div>
  23. <form id="cardInterestForm" name="cardInterestForm" >
  24. <input type="hidden" name="prmtGb" value="B"/> <!-- 무이자 -->
  25. <input type="hidden" name="delCardPrmtCdtSq" /> <!-- 삭제할 프로모션조건 -->
  26. <div class="panelContent">
  27. <table class="frmStyle">
  28. <colgroup>
  29. <col style="width:10%;"/>
  30. <col style="width:50%;"/>
  31. <col style="width:10%;"/>
  32. <col/>
  33. </colgroup>
  34. <tr>
  35. <th>프로모션명<em class="required" title="필수"></em></th>
  36. <td><input type="text" class="w500" id="prmtNm" name="prmtNm" maxlength="30" required="required" data-valid-name="프로모션명" th:value="${cardPrmt.prmtNm}"/></td>
  37. <th>프로모션ID</th>
  38. <td><input type="text" class="w100 formControl" id="cardPrmtSq" name="cardPrmtSq" readonly th:value="${cardPrmt.cardPrmtSq}"/></td>
  39. </tr>
  40. <tr>
  41. <th>행사기간<em class="required" title="필수"></em></th>
  42. <td >
  43. <input name="prmtStd" id="prmtStd" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="행사시작일" th:value="${cardPrmt.prmtStd}"/>
  44. ~
  45. <input name="prmtEdd" id="prmtEdd" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="행사종료일" th:value="${cardPrmt.prmtEdd}"/>
  46. </td>
  47. <th>노출여부<em class="required" title="필수"></em></th>
  48. <td >
  49. <label class="rdoBtn"><input type="radio" name="dispYn" value="Y" th:checked="${cardPrmt.dispYn =='Y' or #strings.isEmpty(cardPrmt.dispYn)}"/>Y</label>
  50. <label class="rdoBtn"><input type="radio" name="dispYn" value="N" th:checked="${cardPrmt.dispYn =='N'}"/>N</label>
  51. <input type="hidden" id="dispYnOrg" name="dispYnOrg" th:value="${cardPrmt.dispYn}"/>
  52. </td>
  53. </tr>
  54. <tr>
  55. <th>행사조건<em class="required" title="필수"></em><br/>
  56. <button type="button" class="btn btn-base btn-sm" id="btnCardContionAdd"><i class="fa fa-plus"></i></button>
  57. </th>
  58. <td colspan="3" >
  59. <div style="overflow-y:scroll; height:230px;">
  60. <table class="frmStyle">
  61. <colgroup>
  62. <col style="width:7%;"/>
  63. <col/>
  64. </colgroup>
  65. <tbody id="cardContionList">
  66. <tr th:if="${#lists.isEmpty(cardPrmt.cardPrmtCdtList)}" >
  67. <td style="height:100px;"></td>
  68. <td><p class="dot">무이자개월 <input type="text" class="w100" name="arrMinNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" />개월 ~
  69. <input type="text" class="w100" name="arrMaxNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" />개월</p>
  70. <p class="dot">구매금액기준 <input type="text" class="w100" name="arrMinPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준" />원 이상 구매시</p>
  71. <p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" onClick="fnCardAdd(1);">선택</button><br/>
  72. <span id="arrCardNm1" class="cRed"></span></p>
  73. <input type="hidden" name="arrCardCd"/>
  74. <input type="hidden" name="cardPrmtCdtSq" />
  75. <input type="hidden" name="cardIdx" id="cardIdx"/>
  76. </td>
  77. </tr>
  78. <tr th:if="${cardPrmt.cardPrmtCdtList}" th:each="cardPrmtCdt, sizeStatus : ${cardPrmt.cardPrmtCdtList}">
  79. <td style="height:100px;" th:if="${sizeStatus.first}"></td>
  80. <td style="height:100px;" th:unless="${sizeStatus.first}"><button type="button" class="btn icn"><i class="fa fa-times" aria-hidden="true" th:onclick="fnDeleteCardPrmtCdt([[${cardPrmtCdt.cardPrmtCdtSq}]]);$(this).parent().parent().parent().remove();return false;"></i></button></td>
  81. <td>
  82. <p class="dot">무이자개월 <input type="text" class="w100" name="arrMinNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" th:value="${cardPrmtCdt.minNoItrt}"/>개월 ~
  83. <input type="text" class="w100" name="arrMaxNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월" th:value="${cardPrmtCdt.maxNoItrt}"/>개월</p>
  84. <p class="dot">구매금액기준 <input type="text" class="w100" name="arrMinPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준" th:value="${cardPrmtCdt.minPayAmt}"/>원 이상 구매시</p>
  85. <p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" th:onClick="fnCardAdd([[${sizeStatus.count}]]);">선택</button><br/>
  86. <span th:id="${'arrCardNm'+ sizeStatus.count}" class="cRed" th:text="${cardPrmtCdt.arrCardNm}"></span>
  87. </p>
  88. <input type="hidden" name="arrCardCd" th:value="${cardPrmtCdt.arrCardCd}"/>
  89. <input type="hidden" name="cardPrmtCdtSq" th:value="${cardPrmtCdt.cardPrmtCdtSq}"/>
  90. <input type="hidden" name="cardIdx" id="cardIdx" th:if="${sizeStatus.first}"/>
  91. </td>
  92. </tr>
  93. </tbody>
  94. </table>
  95. </div>
  96. </td>
  97. </tr>
  98. <tr>
  99. <th>부분무이자안내</th>
  100. <td colspan="3">
  101. <textarea class="textareaR2" name="note" id="note" th:field="${cardPrmt.note}"></textarea>
  102. </td>
  103. </tr>
  104. </table>
  105. </div>
  106. <ul class="panelBar">
  107. <li class="left">
  108. <button type="button" class="btn btn-danger btn-lg" id="btnCardInterestDelete" th:if="${cardPrmtSq}">삭제</button>
  109. </li>
  110. <li class="right">
  111. <button type="button" class="btnRight btn btn-success btn-lg" id="btnCardInterestSave">적용</button>
  112. </li>
  113. </ul>
  114. </form>
  115. </div>
  116. </div>
  117. <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
  118. <script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2020103001"></script>
  119. <script th:inline="javascript">
  120. /*<![CDATA[*/
  121. //카드행사조건 추가
  122. $('#btnCardContionAdd').on('click', function() {
  123. var len = $('#cardInterestForm').find('#cardContionList tr').length;
  124. if(len >= 3) {
  125. mcxDialog.alert("최대 3개까지 가능합니다.");
  126. return false;
  127. }
  128. var cardHtml = "";
  129. cardHtml +='<tr>';
  130. cardHtml +=' <td style="height:100px;"><button type="button" class="btn icn"><i class="fa fa-times" aria-hidden="true" onclick="$(this).parent().parent().parent().remove();return false;"></i></button></td>';
  131. cardHtml +=' <td><p class="dot">무이자개월 <input type="text" class="w100" name="arrMinNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월"/>개월 ~';
  132. cardHtml +=' <input type="text" class="w100" name="arrMaxNoItrt" data-valid-type="numeric" required="required" data-valid-name="무이자개월"/>개월</p>';
  133. cardHtml +=' <p class="dot">구매금액기준 <input type="text" class="w100" name="arrMinPayAmt" data-valid-type="numeric" required="required" data-valid-name="구매금액기준"/>원 이상 구매시</p>';
  134. cardHtml +=' <p class="dot">대상카드 <button type="button" class="btn btn-base btn-sm" onClick="fnCardAdd('+ (len+1) +');">선택</button><br/><span id="arrCardNm'+(len+1)+'" class="cRed"></span></p>';
  135. cardHtml +=' <input type="hidden" name="arrCardCd"/>';
  136. cardHtml +=' <input type="hidden" name="cardPrmtCdtSq" />';
  137. cardHtml +=' </td>';
  138. cardHtml +='</tr>';
  139. $('#cardInterestForm').find('#cardContionList').append(cardHtml);
  140. });
  141. //카드조회팝업
  142. var fnCardAdd = function(idx){
  143. $('#cardInterestForm').find('#cardIdx').val(idx);
  144. var arrCardCd = $('#cardInterestForm').find("input[name=arrCardCd]").eq(idx-1).val();
  145. cfnOpenCardListPopup('fnCardAddCallBakup', arrCardCd); // /로 구분
  146. }
  147. // 카드추가/삭제
  148. var fnCardAddCallBakup = function(arrCardCd, arrCardNm) {
  149. var index = $('#cardInterestForm').find('#cardIdx').val();
  150. $('#cardInterestForm').find("#arrCardNm" + (index)).html(arrCardNm);
  151. $('#cardInterestForm input[name=arrCardCd]').eq(index-1).val(arrCardCd);
  152. }
  153. // 카드프로모션 조건 삭제항목 설정
  154. var fnDeleteCardPrmtCdt = function(cardPrmtCdtSq){
  155. var delCardPrmtCdtSq = $('#cardInterestForm input[name=delCardPrmtCdtSq]').val();
  156. delCardPrmtCdtSq += "/" + cardPrmtCdtSq;
  157. $('#cardInterestForm input[name=delCardPrmtCdtSq]').val(delCardPrmtCdtSq);
  158. }
  159. //카드 프로모션 삭제
  160. $('#btnCardInterestDelete').click(function(e) {
  161. var arrCardPrmtSq = [];
  162. var toDateStr = new Date().format("YYYYMMDD");
  163. var prmtEdd = $('#cardInterestForm input[name=prmtEdd]').val();
  164. if (toDateStr > prmtEdd.replace(/-/gi,'') ){
  165. chkFlag = true;
  166. mcxDialog.alertC("종료된 무이자할부정보는 삭제할 수 없습니다.", {
  167. sureBtnText: "확인",
  168. sureBtnClick: function() {
  169. $('#cardInterestForm input[name=prmtEdd]').focus();
  170. }
  171. });
  172. return false;
  173. }
  174. arrCardPrmtSq.push($('#cardInterestForm input[name=cardPrmtSq]').val());
  175. mcxDialog.confirm('삭제하시겠습니까? <br/> 삭제한 프로모션은 복구할수 없습니다.', {
  176. cancelBtnText: "취소",
  177. sureBtnText: "확인",
  178. sureBtnClick: function(){
  179. var data = {arrCardPrmtSq : arrCardPrmtSq};
  180. var jsonData = JSON.stringify(data);
  181. gagajf.ajaxJsonSubmit('/marketing/card/promotion/delete', jsonData, fnSaveCardInterestCallBack);
  182. }
  183. });
  184. });
  185. // 저장 클릭 시
  186. $('#btnCardInterestSave').on('click', function() {
  187. var optCheck = false;
  188. // 입력 값 체크
  189. if (!gagajf.validation('#cardInterestForm'))
  190. return false;
  191. var idx = 0;
  192. $('#cardInterestForm').find('#cardContionList tr').each(function() {
  193. var minNoItrt = $(this).find("input[name=arrMinNoItrt]").val();
  194. var maxNoItrt = $(this).find("input[name=arrMaxNoItrt]").val();
  195. var minPayAmt = $(this).find("input[name=arrMinPayAmt]").val();
  196. var arrCardCd = $(this).find("input[name=arrCardCd]").val();
  197. if (Number(minNoItrt) > Number(maxNoItrt)){
  198. optCheck = true;
  199. mcxDialog.alertC("무이자개월수를 확인해주세요", {
  200. sureBtnText: "확인",
  201. sureBtnClick: function() {
  202. $('#cardInterestForm').find('#cardContionList tr').find("input[name=arrMaxNoItrt]").eq(idx).focus();
  203. }
  204. });
  205. return false;
  206. }
  207. if (Number(minPayAmt) < 10000){
  208. optCheck = true;
  209. mcxDialog.alertC("구매기준금액을 확인해주세요", {
  210. sureBtnText: "확인",
  211. sureBtnClick: function() {
  212. $('#cardInterestForm').find('#cardContionList tr').find("input[name=arrMinPayAmt]").eq(idx).focus();
  213. }
  214. });
  215. return false;
  216. }
  217. if (gagajf.isNull(arrCardCd)){
  218. optCheck = true;
  219. mcxDialog.alert((idx+1)+"번째 행사조건의 대상카드를 선택해주세요")
  220. return false;
  221. }
  222. idx++;
  223. });
  224. if (optCheck){
  225. return false;
  226. }
  227. mcxDialog.confirm('저장하시겠습니까?', {
  228. cancelBtnText: "취소",
  229. sureBtnText: "확인",
  230. sureBtnClick: function(){
  231. gagajf.ajaxFormSubmit("/marketing/card/interest/save", "#cardInterestForm", fnSaveCardInterestCallBack);
  232. }
  233. });
  234. });
  235. //창종료
  236. var fnSaveCardInterestCallBack = function(){
  237. fnCardPromotionListSearch(); //본창 호출
  238. uifnPopupClose('popupCardInterest');
  239. }
  240. $(document).ready(function() {
  241. // Create a summernote
  242. var snOptions = gagaSn.getToolbarOptions('media');
  243. gagaSn.createSummernote(snOptions, '#note');
  244. });
  245. /*]]>*/
  246. </script>
  247. </html>