CouponPopupForm.html 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : CouponPopupForm.html
  7. * @desc : 쿠폰 등록 팝업 화면
  8. *============================================================================
  9. * ISTYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2020.12.23 xyzp1539 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="1200">
  18. <div class="panelStyle" >
  19. <div class="panelTitle">
  20. <h2 th:text="${'쿠폰 ' + (mode == 'N' ? '등록' : '수정')}">쿠폰등록</h2>
  21. <button type="button" class="close" onclick="uifnPopupClose('CouponRegForm')"><i class="fa fa-times"></i></button>
  22. </div>
  23. <div class="panelContent">
  24. <form id="CouponForm" name="CouponForm" action="#" th:action="@{'/marketing/coupon/save'}" >
  25. <input type="hidden" name="supplyCompList" id="supplyCompList">
  26. <input type="hidden" name="brandList" id="brandList">
  27. <input type="hidden" name="applyGoodsList" id="applyGoodsList">
  28. <input type="hidden" name="exceptGoodsList" id="excepGoodsList">
  29. <input type="hidden" name="burdenList" id="burdenList">
  30. <input type="hidden" name="cateList" id="cateList">
  31. <input type="hidden" name="rdCpnNm" id="rdCpnNm">
  32. <input type="hidden" name="cpnId" id="cpnId" th:if="${cpnDetail}" th:value="${cpnDetail.cpnId}">
  33. <div class="tabs">
  34. <div class="tabsNav">
  35. <ul>
  36. <li class="on"><a href="#coupontab1">기본정보</a></li>
  37. <li><a href="#coupontab2">적용대상</a></li>
  38. <li><a href="#coupontab3">입점업체분담율</a></li>
  39. <li class="randomCpnTab" style="display:none;"><a href="#coupontab4">시리얼및난수</a></li>
  40. </ul>
  41. </div>
  42. <ul class="tabsCont">
  43. <li class="tab on" id="coupontab1">
  44. <div class="panelStyle">
  45. <table class="frmStyle">
  46. <colgroup>
  47. <col style="width:10%">
  48. <col style="width:40%;">
  49. <col style="width:10%">
  50. <col style="width:40%;">
  51. </colgroup>
  52. <tbody>
  53. <tr th:if="${cpnDetail}">
  54. <th>쿠폰번호</th>
  55. <td colspan="5">
  56. <span th:if="${cpnDetail}" th:text="${cpnDetail.cpnId}"></span>
  57. </td>
  58. </tr>
  59. <tr>
  60. <th>쿠폰명<em class="required" title="필수"></em></th>
  61. <td colspan="5">
  62. <input type="text" name="cpnNm" id="cpnNm" style="width: 70%;" required="required" data-valid-name="쿠폰명">
  63. </td>
  64. </tr>
  65. <tr>
  66. <th>쿠폰유형<em class="required" title="필수"></em></th>
  67. <td colspan="5">
  68. <input type="hidden" id="cpnType" name="cpnType" required="required" data-valid-name="쿠폰유형">
  69. <label class="rdoBtn" th:if="${cpnTypeList}" th:each="oneData, status : ${cpnTypeList}"> <input type="radio" name="rdoCpnType" th:text="${oneData.cdNm}" th:value="${oneData.cd}"/></label>
  70. </td>
  71. </tr>
  72. <tr class="dcCdGb" style="display:none;">
  73. <th>할인쿠폰유형<em class="required" title="필수"></em></th>
  74. <td class="normalCol">
  75. <input type="hidden" id="dcCd" required="required" data-valid-name="할인쿠폰유형">
  76. <label class="rdoBtn" th:if="${dcCdList}" th:each="oneData, status : ${dcCdList}"> <input type="radio" name="dcCdGb" th:text="${oneData.cdNm}" th:value="${oneData.cd}"/></label>
  77. </td>
  78. <th class="randomCpnArea">난수생성수량<em class="required" title="필수"></em></th>
  79. <td class="randomCpnArea">
  80. <input type="text" name="randomCpnQty" class="w300" required="required" data-valid-name="랜덤쿠폰발급수량" data-valid-type="numeric">
  81. </td>
  82. </tr>
  83. <tr class="serialCpnArea" style="display:none;">
  84. <th>시리얼명<em class="required" title="필수"></em></th>
  85. <td>
  86. <input type="text" name="serialCpnNm" class="w300" required="required" data-valid-name="시리얼쿠폰키워드">
  87. </td>
  88. <th>쿠폰발급수량<em class="required" title="필수"></em></th>
  89. <td>
  90. <input type="text" name="serialCpnQty" class="w300" required="required" data-valid-name="시리얼쿠폰발급수량" data-valid-type="numeric">
  91. </td>
  92. </tr>
  93. <tr>
  94. <th>사용가능고객구분<em class="required" title="필수"></em></th>
  95. <td>
  96. <select name="usableCustGb" id="usableCustGb" required="required" data-valid-name="사용가능고객구분">
  97. <option th:if="${usableCustGbList}" th:each="oneData , status : ${usableCustGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  98. </select>
  99. </td>
  100. <th>사이트<em class="required" title="필수"></em></th>
  101. <td>
  102. <select name="siteCd" id="siteCd" required="required" data-valid-name="사이트">
  103. <option th:if="${siteCdList}" th:each="oneData , status : ${siteCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  104. </select>
  105. </td>
  106. </tr>
  107. <tr>
  108. <th>사용고객등급구분<em class="required" title="필수"></em></th>
  109. <td>
  110. <select name="usableCustGrade" id="usableCustGrade" required="required" data-valid-name="사용고객등급구분">
  111. <option value="ALL">[전체]</option>
  112. <option th:if="${usableCustGradeList}" th:each="oneData , status : ${usableCustGradeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  113. </select>
  114. </td>
  115. <th>만료알림여부<em class="required" title="필수"></em></th>
  116. <td>
  117. <select name="endAlimYn" id="endAlimYn" required="required" data-valid-name="만료알림여부">
  118. <option value="Y">Y</option>
  119. <option value="N" selected="selected">N</option>
  120. </select>
  121. </td>
  122. </tr>
  123. <tr>
  124. <th>할인방식<em class="required" title="필수"></em></th>
  125. <td>
  126. <input type="hidden" name="dcWay" id="dcWay" required="required" data-valid-name="할인방식">
  127. <label class="rdoBtn" th:if="${dcWayList}" th:each="oneData, status : ${dcWayList}"> <input type="radio" name="rdoDcWay" th:text="${oneData.cdNm}" th:value="${oneData.cd}"/></label>
  128. </td>
  129. <th>구매제한금액<em class="required" title="필수"></em></th>
  130. <td>
  131. <input type="text" id="buyLimitAmt" name="buyLimitAmt" class="w200" required="required" value="0" style="text-align: right;" data-valid-name="구매제한금액" data-valid-type="numeric">원
  132. </td>
  133. </tr>
  134. <tr>
  135. <th>할인값(PC)<em class="required" title="필수"></em></th>
  136. <td>
  137. <input type="text" class="w200" id="dcPval" name="dcPval" value="0" required="required" data-valid-name="할인값(PC)" data-valid-type="numeric" style="text-align: right"><span id="dcPvalSpan">원</span>
  138. </td>
  139. <th>할인값(모바일웹)<em class="required" title="필수"></em></th>
  140. <td>
  141. <input type="text" class="w200" id="dcMval" name="dcMval" value="0" required="required" data-valid-name="할인값(모바일웹)" data-valid-type="numeric" style="text-align: right"><span id="dcMvalSpan">원</span>
  142. </td>
  143. </tr>
  144. <tr>
  145. <th>할인값(모바일앱)<em class="required" title="필수"></em></th>
  146. <td>
  147. <input type="text" class="w200" id="dcAval" name="dcAval" value="0" required="required" data-valid-name="할인값(모바일앱)" data-valid-type="numeric" style="text-align: right"><span id="dcAvalSpan">원</span>
  148. </td>
  149. <th>최대할인금액<em class="required" title="필수"></em></th>
  150. <td>
  151. <input type="text" class="w200" id="maxDcAmt" name="maxDcAmt" value="0" required="required" data-valid-name="최대할인금액" data-valid-type="numeric" style="text-align: right;"><span id="maxDcAmtSpan">원</span>
  152. </td>
  153. </tr>
  154. <tr>
  155. <th>다운로드시작일시<em class="required" title="필수"></em></th>
  156. <td>
  157. <input type="hidden" name="downStdt" id="downStdt" required="required" data-valid-name="다운로드시작일시">
  158. <input type="text" class="schDate w100" name="downStDay" id="downStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  159. <select name="downStHH" id="downStHH">
  160. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  161. </select>
  162. <select name="downStMM" id="downStMM">
  163. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  164. </select>
  165. <th>다운로드종료일시<em class="required" title="필수"></em></th>
  166. <td>
  167. <input type="hidden" id="downEddt" name="downEddt" required="required" data-valid-name="다운로드종료일시">
  168. <input type="text" class="schDate w100" name="downEdDay" id="downEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  169. <select name="downEdHH" id="downEdHH">
  170. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  171. </select>
  172. <select name="downEdMM" id="downEdMM">
  173. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  174. </select>
  175. </td>
  176. </tr>
  177. <tr>
  178. <th>기간/일수구분<em class="required" title="필수"></em></th>
  179. <td>
  180. <select name="pdGb" id="pdGb" onchange="pdGbChange(this)" required="required" data-valid-name="기간/일수구분">
  181. <option value="P">기간</option>
  182. <option value="D">일수</option>
  183. </select>
  184. </td>
  185. <th>적용범위<em class="required" title="필수"></em></th>
  186. <td>
  187. <input type="hidden" name="applyScope" id="applyScope" required="required" data-valid-name="적용범위">
  188. <label class="rdoBtn"> <input type="radio" name="rdoApplyScope" value="A"/>전체</label>
  189. <label class="rdoBtn"> <input type="radio" name="rdoApplyScope" value="I"/>개별</label>
  190. </td>
  191. </tr>
  192. <tr class="availDayTr" style="display: none;">
  193. <th>유효기간일수<em class="required" title="필수"></em></th>
  194. <td>
  195. <input type="text" name="availDays" id="availDays" class="w200" data-valid-name="유효기간일수">
  196. </td>
  197. </tr>
  198. <tr>
  199. <th class="availDateTr">유효기간시작일시<em class="required" title="필수"></em></th>
  200. <td class="availDateTr">
  201. <input type="hidden" name="availStdt" id="availStdt" data-valid-name="유효기간시작일시">
  202. <input type="text" class="schDate w100" name="availStDay" id="availStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  203. <select name="availStHH" id="availStHH">
  204. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  205. </select>
  206. <select name="availStMM" id="availStMM">
  207. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  208. </select>
  209. <th class="availDateTr">유효기간종료일시<em class="required" title="필수"></em></th>
  210. <td class="availDateTr">
  211. <input type="hidden" id="availEddt" name="availEddt" data-valid-name="유효기간종료일시">
  212. <input type="text" class="schDate w100" name="availEdDay" id="availEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  213. <select name="availEdHH" id="availEdHH">
  214. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  215. </select>
  216. <select name="availEdMM" id="availEdMM">
  217. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  218. </select>
  219. </td>
  220. </tr>
  221. <tr>
  222. <th>첫구매여부<em class="required" title="필수"></em></th>
  223. <td>
  224. <select name="firstYn" id="firstYn" onchange="firstYnChange(this)" required="required" data-valid-name="첫구매여부">
  225. <option value="Y">Y</option>
  226. <option value="N" selected="selected">N</option>
  227. </select>
  228. </td>
  229. <th>다운로드가능여부<em class="required" title="필수"></em></th>
  230. <td>
  231. <select name="downYn" id="downYn" required="required" data-valid-name="다운로드가능여부">
  232. <option value="Y">Y</option>
  233. <option value="Y" selected="selected">N</option>
  234. </select>
  235. </td>
  236. </tr>
  237. <tr>
  238. <th class="buyDateTr">첫구매기간시작일시<em class="required" title="필수"></em></th>
  239. <td class="buyDateTr">
  240. <input type="hidden" id="buyEddt" name="buyEddt" data-valid-name="첫구매기간종료일시">
  241. <input type="text" class="schDate w100" name="buyStDay" id="buyStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  242. <select name="buyStHH" id="buyStHH">
  243. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  244. </select>
  245. <select name="buyStMM" id="buyStMM">
  246. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  247. </select>
  248. <th class="buyDateTr">첫구매기간종료일시<em class="required" title="필수"></em></th>
  249. <td class="buyDateTr">
  250. <input type="hidden" name="buyStdt" id="buyStdt" data-valid-name="첫구매기간시작일시">
  251. <input type="text" class="schDate w100" name="buyEdDay" id="buyEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  252. <select name="buyEdHH" id="buyEdHH">
  253. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  254. </select>
  255. <select name="buyEdMM" id="buyEdMM">
  256. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  257. </select>
  258. </td>
  259. </tr>
  260. <tr>
  261. <th>신규회원여부<em class="required" title="필수"></em></th>
  262. <td>
  263. <select name="custJoinYn" id="custJoinYn" onchange="custJoinYnChange(this)" required="required" data-valid-name="신규회원여부">
  264. <option value="Y">Y</option>
  265. <option value="N" selected="selected">N</option>
  266. </select>
  267. </td>
  268. <th class="dcCdCheck">총발행제한수량<em class="required" title="필수"></em></th>
  269. <td class="dcCdCheck">
  270. <input type="text" class="w200" name="totPubLimitQty" id="totPubLimitQty" value="0" required="required" data-valid-name="총발행제한수량" data-valid-type="numeric" style="text-align: right;">개<span class="cRed" id="totPubLimitQtySpan"> *제한없음</span>
  271. </td>
  272. </tr>
  273. <tr>
  274. <th class="custJoinDateTr">신규회원기간시작일시<em class="required" title="필수"></em></th>
  275. <td class="custJoinDateTr">
  276. <input type="hidden" name="custJoinStdt" id="custJoinStdt" data-valid-name="신규회원기간시작일시">
  277. <input type="text" class="schDate w100" name="custJoinStDay" id="custJoinStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  278. <select name="custJoinStHH" id="custJoinStHH">
  279. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  280. </select>
  281. <select name="custJoinStMM" id="custJoinStMM">
  282. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  283. </select>
  284. <th class="custJoinDateTr">신규회원기간종료일시<em class="required" title="필수"></em></th>
  285. <td class="custJoinDateTr">
  286. <input type="hidden" id="custJoinEddt" name="custJoinEddt" data-valid-name="신규회원기간종료일시">
  287. <input type="text" class="schDate w100" name="custJoinEdDay" id="custJoinEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  288. <select name="custJoinEdHH" id="custJoinEdHH">
  289. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  290. </select>
  291. <select name="custJoinEdMM" id="custJoinEdMM">
  292. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  293. </select>
  294. </td>
  295. </tr>
  296. <tr class="dcCdCheck">
  297. <th>1인당발행제한수량<em class="required" title="필수"></em></th>
  298. <td>
  299. <input type="text" class="w200" name="custPubLimitQty" id="custPubLimitQty" value="0" required="required" data-valid-name="1인당발행제한수량" data-valid-type="numeric" style="text-align: right;">개<span class="cRed" id="custPubLimitQtySpan"> *제한없음</span>
  300. </td>
  301. <th>1회발행수량<em class="required" title="필수"></em></th>
  302. <td><input type="text" class="w200" name="onePubQty" id="onePubQty" value="1" required="required" data-valid-name="1회발행수량" data-valid-type="numeric" style="text-align: right;">개</td>
  303. </tr>
  304. <tr>
  305. <th>재발급여부<em class="required" title="필수"></em></th>
  306. <td>
  307. <select name="reissuance" id="reissuance" required="required" data-valid-name="재발급여부" >
  308. <option th:if="${reissuanceList}" th:each="oneData , status : ${reissuanceList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  309. </select>
  310. </td>
  311. <th>다운로드구분<em class="required" title="필수"></em></th>
  312. <td>
  313. <select name="dnGb" id="dnGb" required="required" data-valid-name="다운로드구분">
  314. <option th:if="${dnGbList}" th:each="oneData , status:${dnGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  315. </select>
  316. </td>
  317. </tr>
  318. <tr class="payTypeTr" style="display: none;">
  319. <th>결제수단<em class="required" title="필수"></em></th>
  320. <td colspan="5">
  321. <select name="payType" id="payType" data-valid-name="결제수단">
  322. <option value="">[전체]</option>
  323. <option th:if="${payTypeList}" th:each="oneData , status : ${payTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  324. </select>
  325. </td>
  326. </tr>
  327. <tr>
  328. <th>쿠폰상태<em class="required" title="필수"></em></th>
  329. <td>
  330. <select name="cpnStat" id="cpnStat" data-valid-name="쿠폰상태" required="required">
  331. <option th:if="${cpnStatList}" th:each="oneData , status : ${cpnStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  332. </select>
  333. </td>
  334. <th>제휴링크코드<em class="required" title="필수"></em></th>
  335. <td>
  336. <select name="afChannel" id="afChannel" onchange="fnChangeAfLinkCdList()" data-valid-name="제휴링크코드" required="required">
  337. <option th:if="${upperAfLinkCdList}" th:each="oneData , status : ${upperAfLinkCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  338. </select>
  339. <select name="afLinkCd" id="afLinkCd">
  340. </select>
  341. </td>
  342. </tr>
  343. </tbody>
  344. </table>
  345. <div class="mdPopBtnB aR">
  346. <button type="button" class="btn btn-info btn-lg" onclick="fnCustomerIssuePopUp();" th:if="${mode == 'U' && cpnDetail.dcCdGb == 'G233_00'}">쿠폰발행</button> <!-- 난수유형과 시리얼 유형에서는 쿠폰발행기능 X -->
  347. <button type="button" class="btn btn-info btn-lg" onclick="fnCouponCreate();" th:if="${mode == 'N'}">등록</button>
  348. <button type="button" class="btn btn-info btn-lg" onclick="fnCouponUpdate();" th:if="${mode == 'U'}">수정</button>
  349. </div>
  350. </div>
  351. </li>
  352. <!-- 쿠폰적용대상-->
  353. <li class="tab" id="coupontab2" >
  354. <div class="panelStyle">
  355. <div class="inner-panelContent">
  356. <div class="panelContent">
  357. <div class="panelBar">
  358. <h4>적용 대상 상품 등록</h4>
  359. </div>
  360. <table class="frmStyle">
  361. <colgroup>
  362. <col style="width:15%;">
  363. <col style="width:85%;">
  364. </colgroup>
  365. <tbody>
  366. <tr>
  367. <th>공급처</th>
  368. <td>
  369. <div class="padding10 inner-tb-solid">
  370. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSupplyAdd">공급처 추가</button>
  371. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSupplyDel">선택삭제</button>
  372. <br/>
  373. <div id="supplyGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  374. </div>
  375. </td>
  376. </tr>
  377. <tr>
  378. <th>브랜드</th>
  379. <td>
  380. <div class="padding10 inner-tb-solid">
  381. <button type="button" class="btn btnRight btn-success btn-lg" id="btnBrandAdd">브랜드 추가</button>
  382. <button type="button" class="btn btnRight btn-success btn-lg" id="btnBrandDel">선택삭제</button>
  383. <br/>
  384. <div id="brandGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  385. </div>
  386. </td>
  387. </tr>
  388. <tr>
  389. <th>카테고리</th>
  390. <td>
  391. <div class="padding10 inner-tb-solid">
  392. <button type="button" class="btn btnRight btn-success btn-lg" id="btnCateAdd">카테고리 추가</button>
  393. <button type="button" class="btn btnRight btn-success btn-lg" id="btnCateDel">선택삭제</button>
  394. <br/>
  395. <div id="cateGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  396. </div>
  397. </td>
  398. </tr>
  399. <tr>
  400. <th>적용상품</th>
  401. <td>
  402. <div class="padding10 inner-tb-solid">
  403. <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsAdd">상품 추가</button>
  404. <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDel">선택삭제</button>
  405. <br/>
  406. <div id="goodsGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  407. </div>
  408. </td>
  409. </tr>
  410. </tbody>
  411. </table>
  412. </div>
  413. </div>
  414. <div class="inner-panelContent">
  415. <div class="panelContent">
  416. <div class="panelBar">
  417. <h4>적용 대상 상품 등록</h4>
  418. </div>
  419. <table class="frmStyle">
  420. <colgroup>
  421. <col style="width:15%;">
  422. <col style="width:85%;">
  423. </colgroup>
  424. <tbody>
  425. <tr>
  426. <th>제외상품</th>
  427. <td>
  428. <div class="padding10 inner-tb-solid">
  429. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExcepGoodsAdd">제외상품 추가</button>
  430. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExcepGoodsDel">선택삭제</button>
  431. <br/>
  432. <div id="excepGoodsGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  433. </div>
  434. </td>
  435. </tr>
  436. </tbody>
  437. </table>
  438. </div>
  439. </div>
  440. </div>
  441. </li>
  442. <!-- 쿠폰적용대상끝-->
  443. <!-- 입점업체분담율-->
  444. <li class="tab" id="coupontab3">
  445. <div class="panelStyle">
  446. <ul class="panelBar">
  447. <li class="left">
  448. <button type="button" class="btn btn-warning btn-lg" id="btnAddRow">행추가</button>
  449. <button type="button" class="btn btn-danger btn-lg" id="btnDelRow">행삭제</button>
  450. </li>
  451. </ul>
  452. <div id="inComGridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
  453. </div>
  454. </li>
  455. <!-- 입점업체분담끝-->
  456. <!-- 난수 및 네임쿠폰 설정 -->
  457. <li class="tab" id="coupontab4">
  458. <div class="panelStyle">
  459. <span>
  460. <div id="randomCpnList" style="width: 100%; height: 500px" class="ag-theme-balham"></div>
  461. </span>
  462. </div>
  463. </li>
  464. <!-- 난수 및 네임쿠폰 설정-->
  465. </ul>
  466. </div>
  467. </form>
  468. </div>
  469. </div>
  470. </div>
  471. <script th:inline="javascript">
  472. /*<![CDATA[*/
  473. // 상세조회 리스트
  474. var mode = [[${mode}]];
  475. var cpnDetail = [[${cpnDetail}]];
  476. var cpnDtlRefvalSupplyCompList = [[${cpnDtlRefvalSupplyCompList}]];
  477. var cpnDtlRefvalApplyGoodsList = [[${cpnDtlRefvalApplyGoodsList}]];
  478. var cpnDtlRefvalCateList = [[${cpnDtlRefvalCateList}]];
  479. var cpnDtlRefvalBrandList = [[${cpnDtlRefvalBrandList}]];
  480. var cpnDtlRefvalExceptGoodsList = [[${cpnDtlRefvalExceptGoodsList}]];
  481. var cpnDtlBurdenList = [[${cpnDtlBurdenList}]];
  482. var randomCpnList = [[${randomCpnList}]];
  483. var issueCnt = [[${issueCnt}]];
  484. // 공통코드 리스트
  485. var ibSupplyComList = gagajf.convertToArray([[${ibSupplyCompList}]]);
  486. var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
  487. var cateGbList = gagajf.convertToArray([[${cateGbList}]]);
  488. var delYnList = { "Y":"Yes", "N":"No" };
  489. var siteCdList = gagajf.convertToArray([[${siteCdList}]]);
  490. var selfBrandList = gagajf.convertToArray([[${selfBrandList}]]);
  491. // ag-grid 입점업체분담율 컬럼
  492. var columnDefs = [
  493. { headerName: "입점업체" , field:"supplyCompCd" , width:150, cellClass:"text-center" ,
  494. cellEditor: 'agRichSelectCellEditor',
  495. cellEditorParams: { values: gagaAgGrid.extractValues(ibSupplyComList) },
  496. valueFormatter: function (params) { return gagaAgGrid.lookupValue(ibSupplyComList, params.value); },
  497. valueParser: function (params) { return gagaAgGrid.lookupKey(ibSupplyComList, params.newValue);}
  498. } ,
  499. { headerName: "쿠폰분담율(%)", field:"burdenRate" , width:150, cellClass: "text-center" ,
  500. cellEditorParams: { maxlength: 10, required: true }
  501. } ,
  502. { headerName: "삭제여부" , field: "delYn" , width:150, cellClass: "text-center" ,
  503. cellEditor: 'agRichSelectCellEditor',
  504. cellEditorParams: { values: gagaAgGrid.extractValues(delYnList) },
  505. valueFormatter: function (params) { return gagaAgGrid.lookupValue(delYnList, params.value); },
  506. valueParser: function (params) { return gagaAgGrid.lookupKey(delYnList, params.newValue); }
  507. } ,
  508. { headerName: "쿠폰번호" , field: "cpnId" , width: 120 , cellClass: 'text-center' , hide:true}
  509. ];
  510. // ag-grid 공급처 컬럼
  511. var supplyColumnDefs = [
  512. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  513. { headerName : "공급업체코드" , field: "supplyCompCd" , width:150, cellClass: 'text-center'} ,
  514. { headerName: "공급업체명" , field: "supplyCompNm" , width:150, cellClass: 'text-center'},
  515. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  516. ];
  517. // ag-grid 브랜드 컬럼
  518. var brandSelColumnDefs = [
  519. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  520. { headerName : "브랜드ID" , field: "brandCd" , width: 120, cellClass : 'text-center'} ,
  521. { headerName : "브랜드명" , field: "brandEnm" , width: 120, cellClass: 'text-center'} ,
  522. { headerName : "공급업체명", field: "supplyCompNm" , width: 150, cellClass: 'text-center' } ,
  523. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  524. ];
  525. // ag-grid 적용상품 컬럼
  526. var goodsSelColumnDefs = [
  527. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  528. { headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
  529. { headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
  530. { headerName: "상품명" , field: "goodsNm" , width: 250 , cellClass: 'text-center'} ,
  531. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  532. ];
  533. // ag-grid 카테고리 컬럼
  534. var cateSelColumnDefs = [
  535. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  536. { headerName: "사이트" , field: "siteCd" , width: 100 , cellClass: 'text-center' ,
  537. cellEditor: 'agRichSelectCellEditor',
  538. cellEditorParams: { values: gagaAgGrid.extractValues(siteCdList) },
  539. valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteCdList, params.value); },
  540. valueParser: function (params) { return gagaAgGrid.lookupKey(siteCdList, params.newValue); }
  541. },
  542. { headerName: "카테고리구분" , field: "cateGb" , width: 100 , cellClass: 'text-center' ,
  543. cellEditor: 'agRichSelectCellEditor',
  544. cellEditorParams: { values: gagaAgGrid.extractValues(cateGbList) },
  545. valueFormatter: function (params) { return gagaAgGrid.lookupValue(cateGbList, params.value); },
  546. valueParser: function (params) { return gagaAgGrid.lookupKey(cateGbList, params.newValue); }
  547. },
  548. { headerName: "카테고리코드" , field: "cateNo" , width: 100 , cellClass: 'text-center'} ,
  549. { headerName: "카테고리명" , field: "cateNm" , width: 120 , cellClass: 'text-center'},
  550. { headerName: "이월/정상구분" , field: "formalGb" , width: 120 , cellClass: 'text-center',
  551. cellEditor: 'agRichSelectCellEditor',
  552. cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
  553. valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
  554. valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
  555. },
  556. { headerName: "브랜드명" , field:"brandCd" , width:150, cellClass: "text-center", required: true ,
  557. editable: true, cellEditor: 'agRichSelectCellEditor',
  558. cellEditorParams: { values: gagaAgGrid.extractValues(selfBrandList) },
  559. valueFormatter: function (params) { return gagaAgGrid.lookupValue(selfBrandList, params.value); },
  560. valueParser: function (params) { return gagaAgGrid.lookupKey(selfBrandList, params.newValue); }
  561. },
  562. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  563. ];
  564. // ag-grid 제외상품 컬럼
  565. var excepGoodsColumnDefs = [
  566. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  567. { headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
  568. { headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
  569. { headerName: "상품명" , field: "goodsNm" , width: 250 , cellClass: 'text-center'} ,
  570. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  571. ];
  572. // ag-grid 시리얼 및 난수 리스트
  573. var randomCouponDefs = [
  574. { headerName : "생성쿠폰키워드" , field: "rdCpnNm" , width:150, cellClass: 'text-center'} ,
  575. { headerName: "지급고객번호" , field: "custNm" , width:150, cellClass: 'text-center'},
  576. { headerName: "고객아이디" , field: "custId" , width:150, cellClass: 'text-center'},
  577. { headerName: "고객명" , field: "custNm" , width:150, cellClass: 'text-center'},
  578. { headerName: "지급일" , field: "regDt" , width:150, cellClass: 'text-center'},
  579. { headerName: "쿠폰사용일" , field: "usedDt" , width:150, cellClass: 'text-center'}
  580. ];
  581. var inComGridOptions = gagaAgGrid.getGridOptions(columnDefs);
  582. var cateGridOptions = gagaAgGrid.getGridOptions(cateSelColumnDefs);
  583. var goodsGridOptions = gagaAgGrid.getGridOptions(goodsSelColumnDefs);
  584. var brandGridOptions = gagaAgGrid.getGridOptions(brandSelColumnDefs);
  585. var supplyGridOptions = gagaAgGrid.getGridOptions(supplyColumnDefs);
  586. var excepGoodsGridOptions = gagaAgGrid.getGridOptions(excepGoodsColumnDefs);
  587. var randomCouponGridOptions = gagaAgGrid.getGridOptions(randomCouponDefs);
  588. inComGridOptions.defaultColDef.editable = true;
  589. inComGridOptions.rowSelection = "multiple";
  590. goodsGridOptions.rowSelection = "multiple";
  591. supplyGridOptions.rowSelection = "multiple";
  592. excepGoodsGridOptions.rowSelection = "multiple";
  593. cateGridOptions.rowSelection = "multiple";
  594. brandGridOptions.rowSelection = "multiple";
  595. inComGridOptions.stopEditingWhenGridLosesFocus = true;
  596. // 쿠폰 등록 버튼 클릭시
  597. function fnCouponCreate(){
  598. mcxDialog.confirm('저장하시겠습니까?' , {
  599. cancelBtnText:"취소",
  600. sureBtnText:"확인",
  601. sureBtnClick: function () {
  602. gagajf.removeCommaAtNumberFormattedInput('#CouponForm');
  603. // 필수값들 셋팅
  604. setReqValue();
  605. // 필수값 validation 체크
  606. if (!gagajf.validation('#CouponForm')) {
  607. return false;
  608. }
  609. checkValidation();
  610. gagajf.ajaxFormSubmit($('#CouponForm').prop('action'), '#CouponForm', function() {
  611. uifnPopupClose('CouponRegForm');
  612. $('#btnSearch').trigger('click');
  613. });
  614. }
  615. });
  616. }
  617. // 쿠폰 수정 시
  618. function fnCouponUpdate(){
  619. mcxDialog.confirm('수정하시겠습니까?' , {
  620. cancelBtnText:"취소",
  621. sureBtnText:"확인",
  622. sureBtnClick: function () {
  623. gagajf.removeCommaAtNumberFormattedInput('#CouponForm');
  624. // disabled 해제
  625. $("#CouponForm * ").attr("readonly" , false);
  626. $("#CouponForm * ").prop("disabled" , false);
  627. // 필수값들 셋팅
  628. setReqValue();
  629. // 필수값 validation 체크
  630. if (!gagajf.validation('#CouponForm')) {
  631. return false;
  632. }
  633. checkValidation();
  634. gagajf.ajaxFormSubmit($('#CouponForm').prop('action'), '#CouponForm', function() {
  635. uifnPopupClose('CouponRegForm');
  636. $('#btnSearch').trigger('click');
  637. });
  638. }
  639. });
  640. }
  641. // disabled 해제
  642. function setDisabledFalse(){ debugger;
  643. }
  644. function checkValidation(){
  645. //신규가입 지급한다면 validation 체크
  646. if( $('#custJoinYn option:selected').val() == "Y" ){
  647. var fromDate = $('#CouponForm input[name=custJoinStdt]').val();
  648. var toDate = $('#CouponForm input[name=custJoinEddt]').val();
  649. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  650. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  651. sureBtnText: "확인",
  652. sureBtnClick: function() {
  653. $('#CouponForm input[name=custJoinStdt]').focus();
  654. }
  655. });
  656. return false;
  657. }
  658. if (fromDate > toDate) {
  659. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  660. sureBtnText: "확인",
  661. sureBtnClick: function() {
  662. $('#CouponForm input[name=custJoinEddt]').focus();
  663. }
  664. });
  665. return false;
  666. }
  667. }
  668. // 첫구매 지급하면 validation 체크
  669. if( $('#firstYn option:selected').val() == "Y" ){
  670. var fromDate = $('#CouponForm input[name=buyStdt]').val();
  671. var toDate = $('#CouponForm input[name=buyEddt]').val();
  672. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  673. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  674. sureBtnText: "확인",
  675. sureBtnClick: function() {
  676. $('#CouponForm input[name=buyStdt]').focus();
  677. }
  678. });
  679. return false;
  680. }
  681. if (fromDate > toDate) {
  682. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  683. sureBtnText: "확인",
  684. sureBtnClick: function() {
  685. $('#CouponForm input[name=buyEddt]').focus();
  686. }
  687. });
  688. return false;
  689. }
  690. }
  691. // 할인율 validation 체크 (100을 넘길수없음)
  692. if($('#dcWay').val() == 'G240_11') {
  693. if($('#dcPval').val() > 100) {
  694. mcxDialog.alert('PC할인율은 100을 초과할수없습니다.');
  695. $('#dcPval').focus();
  696. return false;
  697. } else if( $('#dcMval').val() > 100) {
  698. mcxDialog.alert('모바일(웹)할인율은 100을 초과할수없습니다.');
  699. $('#dcMval').focus();
  700. return false;
  701. } else if( $('#dcAval').val() > 100) {
  702. mcxDialog.alert('모바일(앱)할인율은 100을 초과할수없습니다.');
  703. $('#dcAval').focus();
  704. return false;
  705. }
  706. }
  707. }
  708. // 할인방식 변경
  709. $("#CouponForm input[name=rdoDcWay]").bind('click change', function () {
  710. var radioValue = $(this).val();
  711. //발급이력이있으면 수정안됨
  712. if(issueCnt > 0 ) {
  713. return false;
  714. }
  715. if(radioValue == 'G240_10') {
  716. $('#dcPvalSpan').text("원");
  717. $('#dcMvalSpan').text("원");
  718. $('#dcAvalSpan').text("원");
  719. } else {
  720. $('#dcPvalSpan').text("%");
  721. $('#dcMvalSpan').text("%");
  722. $('#dcAvalSpan').text("%");
  723. }
  724. });
  725. // 쿠폰 상태 변경
  726. $("#CouponForm input[name=rdoCpnType]").bind('click change', function () {
  727. var radioValue = $(this).val();
  728. if(mode == "U") {
  729. radioValue = cpnDetail.cpnType;
  730. }
  731. // 상품쿠폰 선택시 적용범위 개별로 변경 나머진 전체
  732. if(radioValue == 'G230_11') {
  733. $("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
  734. } else {
  735. $("input:radio[name='rdoApplyScope']:radio[value='A']").prop('checked', true);
  736. }
  737. // 주문서 쿠폰 선택시 결제수단 노출
  738. if(radioValue == 'G230_20') {
  739. $('#CouponForm .payTypeTr').show();
  740. $('#CouponForm #payType').attr('required' , true);
  741. $("#CouponForm .dcCdGb").show(); // 할인쿠폰유형 노출
  742. } else {
  743. $('#CouponForm .payTypeTr').hide();
  744. $('#CouponForm #payType').attr('required' , false );
  745. $("#CouponForm .dcCdGb").hide(); // 할인쿠폰유형 숨김
  746. $("#CouponForm input:radio[name='dcCdGb']:radio[value='G233_00']").prop('checked', true); // 주문서 쿠폰이 아닐 경우 일반 쿠폰으로 설정
  747. }
  748. $('#CouponForm #cpnType').val(radioValue);
  749. });
  750. // 할인 쿠폰 유형 변경
  751. $("#CouponForm input[name=dcCdGb]").bind('click change', function () {
  752. if(this.value == "G233_00") { // 일반 유형
  753. $("#CouponForm .dcCdCheck").show();
  754. $("#CouponForm .serialCpnArea").hide();
  755. $("#CouponForm .randomCpnArea").hide();
  756. $("#CouponForm #custJoinYn").parent().attr("colspan", "");
  757. $("#CouponForm .normalCol").attr("colspan", "5");
  758. } else {
  759. if(this.value == "G233_10") { // 시리얼 유형
  760. $("#CouponForm .serialCpnArea").show();
  761. $("#CouponForm .randomCpnArea").hide();
  762. $("#CouponForm .normalCol").attr("colspan", "5");
  763. } else { // 난수 유형
  764. $("#CouponForm .serialCpnArea").hide();
  765. $("#CouponForm .randomCpnArea").show();
  766. $("#CouponForm .normalCol").attr("colspan", "");
  767. }
  768. $("#CouponForm .dcCdCheck").hide(); // 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
  769. $("#CouponForm #custJoinYn").parent().attr("colspan", "5"); // 총발행제한 수량을 없애면서 신규회원여부 colspan 수정
  770. }
  771. });
  772. // 적용대상 - 브랜드 추가 버튼시
  773. $('#btnBrandAdd').on('click' , function(){
  774. cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
  775. });
  776. // 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
  777. var fnSetPopupBrandInfo = function(result) {
  778. for(let i = 0 ; i < result.length ; i++) {
  779. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(brandGridOptions); // 받아온 모든 데이터
  780. // 받아온 data for
  781. for(let j = 0 ; j < gridListValue.length ; j++) {
  782. if(gridListValue[j].brandCd == result[i].brandCd) { addChk = false; } // 중복체크
  783. }
  784. // 중복되지 않은 데이터 리스트에 추가
  785. if(addChk) {
  786. gagaAgGrid.addRowData(brandGridOptions, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "supplyCompNm" : result[i].supplyCompNm});
  787. }
  788. }
  789. };
  790. // 적용대상 - 브랜드 삭제 버튼시
  791. $('#btnBrandDel').on('click' , function(){
  792. var selectVal = brandGridOptions.api.getSelectedRows();
  793. if(selectVal.length == 0) {
  794. mcxDialog.alert("선택된 행이 없습니다");
  795. return;
  796. }
  797. if(cpnDetail != null ) {
  798. mcxDialog.confirm('삭제하시겠습니까?', {
  799. cancelBtnText: "취소",
  800. sureBtnText: "확인",
  801. sureBtnClick: function(){
  802. gagaAgGrid.removeRowData(brandGridOptions , false);
  803. var cpnRefvalSqArr = [];
  804. $.each(selectVal , function(idx , item){
  805. cpnRefvalSqArr.push(item.cpnRefvalSq);
  806. });
  807. var data = { cpnRefvalSqArr : cpnRefvalSqArr
  808. ,cpnId : cpnDetail.cpnId
  809. };
  810. var jsonData = JSON.stringify(data);
  811. gagajf.ajaxJsonSubmit('/marketing/coupon/refval/update', jsonData);
  812. }
  813. });
  814. } else {
  815. // 신규화면이면 그리드상 삭제
  816. brandGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(brandGridOptions)});
  817. }
  818. });
  819. // 적용대상 - 공급처 추가 버튼시
  820. $('#btnSupplyAdd').on('click' , function (){
  821. cfnOpenCompanyListPopup("fnSetPopupComapnyInfo" , "M");
  822. });
  823. // 공급업체 설정 / 업체 추가 콜백함수
  824. var fnSetPopupComapnyInfo = function(result) {
  825. // 기존 리스트 데이터 for
  826. for(let i = 0 ; i < result.length ; i++) {
  827. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(supplyGridOptions); // 받아온 모든 데이터
  828. // 받아온 data for
  829. for(let j = 0 ; j < gridListValue.length ; j++) {
  830. // 동일한 data는 추가하지 않음
  831. if(gridListValue[j].supplyCompCd == result[i].supplyCompCd) { addChk = false; } // 중복체크
  832. }
  833. // 중복되지 않은 데이터 리스트에 추가
  834. if(addChk) {
  835. gagaAgGrid.addRowData(supplyGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm});
  836. }
  837. }
  838. };
  839. // 적용대상 - 공급처 삭제시시
  840. $('#btnSupplyDel').on('click' , function () {
  841. var selectVal = supplyGridOptions.api.getSelectedRows();
  842. if(selectVal.length == 0) {
  843. mcxDialog.alert("선택된 행이 없습니다");
  844. return;
  845. }
  846. if(cpnDetail != null ) {
  847. mcxDialog.confirm('삭제하시겠습니까?', {
  848. cancelBtnText: "취소",
  849. sureBtnText: "확인",
  850. sureBtnClick: function(){
  851. gagaAgGrid.removeRowData(supplyGridOptions , false);
  852. var cpnRefvalSqArr = [];
  853. $.each(selectVal , function(idx , item){
  854. cpnRefvalSqArr.push(item.cpnRefvalSq);
  855. });
  856. var data = { cpnRefvalSqArr : cpnRefvalSqArr
  857. ,cpnId : $('#CouponForm #cpnId').val()
  858. };
  859. var jsonData = JSON.stringify(data);
  860. gagajf.ajaxJsonSubmit('/marketing/coupon/refval/update', jsonData);
  861. }
  862. });
  863. } else {
  864. // 신규화면이면 그리드상 삭제
  865. supplyGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(supplyGridOptions)});
  866. }
  867. });
  868. // 적용대상 - 카테고리 추가시
  869. $('#btnCateAdd').on('click' , function () {
  870. cfnOpenCategoryPopup("fnSetPopupCategoryInfo");
  871. });
  872. // 카테고리 추가 콜백 함수
  873. var fnSetPopupCategoryInfo = function (result) {
  874. // 기존 리스트 데이터 for
  875. for(let i = 0 ; i < result.length ; i++) {
  876. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(cateGridOptions); // 받아온 모든 데이터
  877. // 받아온 data for
  878. for(let j = 0 ; j < gridListValue.length ; j++) {
  879. // 동일한 data는 추가하지 않음
  880. if(gridListValue[j].cateNo == result[i].cateNo) { addChk = false; } // 중복체크
  881. }
  882. // 중복되지 않은 데이터 리스트에 추가
  883. if(addChk) {
  884. gagaAgGrid.addRowData(cateGridOptions, {"siteCd":result[i].siteCd , "cateGb":result[i].cateGb , "cateNo":result[i].cateNo, "cateNm":result[i].cateNm , "formalGb":result[i].formalGb , "brandEnm":null});
  885. }
  886. }
  887. }
  888. // 적용대상 - 카테고리 삭제시
  889. $('#btnCateDel').on('click' , function () {
  890. var selectVal = cateGridOptions.api.getSelectedRows();
  891. if(selectVal.length == 0) {
  892. mcxDialog.alert("선택된 행이 없습니다");
  893. return;
  894. }
  895. if(cpnDetail != null) {
  896. mcxDialog.confirm('삭제하시겠습니까?', {
  897. cancelBtnText: "취소",
  898. sureBtnText: "확인",
  899. sureBtnClick: function(){
  900. gagaAgGrid.removeRowData(cateGridOptions , false);
  901. var cpnRefvalSqArr = [];
  902. $.each(selectVal , function(idx , item){
  903. cpnRefvalSqArr.push(item.cpnRefvalSq);
  904. });
  905. var data = { cpnRefvalSqArr : cpnRefvalSqArr
  906. ,cpnId : $('#CouponForm #cpnId').val()
  907. };
  908. var jsonData = JSON.stringify(data);
  909. gagajf.ajaxJsonSubmit('/marketing/coupon/refval/update', jsonData);
  910. }
  911. });
  912. } else {
  913. cateGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(cateGridOptions)});
  914. }
  915. });
  916. // 적용대상 - 상품 추가시
  917. $('#btnGoodsAdd').on('click' , function () {
  918. cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
  919. });
  920. // 적용 상품 리스트 콜백함수
  921. var fnSetPopupApplyGoodsInfo = function(result) {
  922. gridAddGoodsList(goodsGridOptions, result , "apply");
  923. };
  924. // 적용대상 - 상품 삭제 시
  925. $('#btnGoodsDel').on('click' , function () {
  926. var selectVal = goodsGridOptions.api.getSelectedRows();
  927. if(selectVal.length == 0) {
  928. mcxDialog.alert("선택된 행이 없습니다");
  929. return;
  930. }
  931. if(cpnDetail != null ) {
  932. mcxDialog.confirm('삭제하시겠습니까?', {
  933. cancelBtnText: "취소",
  934. sureBtnText: "확인",
  935. sureBtnClick: function(){
  936. gagaAgGrid.removeRowData(goodsGridOptions , false);
  937. var cpnRefvalSqArr = [];
  938. $.each(selectVal , function(idx , item){
  939. cpnRefvalSqArr.push(item.cpnRefvalSq);
  940. });
  941. var data = { cpnRefvalSqArr : cpnRefvalSqArr
  942. ,cpnId : $('#CouponForm #cpnId').val()
  943. };
  944. var jsonData = JSON.stringify(data);
  945. gagajf.ajaxJsonSubmit('/marketing/coupon/refval/update', jsonData);
  946. }
  947. });
  948. } else {
  949. goodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(goodsGridOptions)});
  950. }
  951. });
  952. // 적용대상 - 제외상품 추가시
  953. $('#btnExcepGoodsAdd').on('click' , function(){
  954. cfnOpenGoodsPopup("fnSetPopupExceptGoodsInfo");
  955. });
  956. // 적용 상품 리스트 콜백함수
  957. var fnSetPopupExceptGoodsInfo = function(result) {
  958. gridAddGoodsList(excepGoodsGridOptions, result , "except");
  959. };
  960. // 적용대상 - 제외상품 삭제시
  961. $('#btnExcepGoodsDel').on('click' , function () {
  962. var selectVal = excepGoodsGridOptions.api.getSelectedRows();
  963. if(selectVal.length == 0) {
  964. mcxDialog.alert("선택된 행이 없습니다");
  965. return;
  966. }
  967. if(cpnDetail != null ) {
  968. mcxDialog.confirm('삭제하시겠습니까?', {
  969. cancelBtnText: "취소",
  970. sureBtnText: "확인",
  971. sureBtnClick: function(){
  972. gagaAgGrid.removeRowData(excepGoodsGridOptions , false);
  973. var cpnRefvalSqArr = [];
  974. $.each(selectVal , function(idx , item){
  975. cpnRefvalSqArr.push(item.cpnRefvalSq);
  976. });
  977. var data = { cpnRefvalSqArr : cpnRefvalSqArr
  978. ,cpnId : $('#CouponForm #cpnId').val()
  979. };
  980. var jsonData = JSON.stringify(data);
  981. gagajf.ajaxJsonSubmit('/marketing/coupon/refval/update', jsonData);
  982. }
  983. });
  984. } else {
  985. excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(excepGoodsGridOptions)});
  986. }
  987. });
  988. // ag-grid 상품관련 list 콜백함수
  989. function gridAddGoodsList(OriginGridListOption, result, gubun) {
  990. var goodsGbVal = "G800_10";
  991. if(gubun == 'except'){
  992. goodsGbVal = "G800_30";
  993. }
  994. for(let i = 0 ; i < result.length ; i++) {
  995. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(OriginGridListOption); // 받아온 모든 데이터
  996. // 받아온 data for
  997. for(let j = 0 ; j < gridListValue.length ; j++) {
  998. if(gridListValue[j].goodsCd == result[i].goodsCd) { addChk = false; } // 중복체크
  999. }
  1000. // 중복되지 않은 데이터 리스트에 추가
  1001. if(addChk) {
  1002. gagaAgGrid.addRowData(OriginGridListOption, {"goodsGb": goodsGbVal, "goodsCd" : result[i].goodsCd, "goodsNm" : result[i].goodsNm});
  1003. }
  1004. }
  1005. }
  1006. // 기간 일수 변경시
  1007. function pdGbChange(pThis){
  1008. var selectVal = $(pThis).val();
  1009. if(typeof selectVal == "undefined") {
  1010. if(mode == "U") {
  1011. selectVal = cpnDetail.pdGb;
  1012. } else {
  1013. selectVal = "P";
  1014. }
  1015. }
  1016. if(selectVal == "P") {
  1017. $('.availDateTr').css('display' , '');
  1018. $('.availDayTr').css('display' , 'none');
  1019. $('#CouponForm #availDays').attr('required' , false);
  1020. $('#CouponForm #availStDay').attr('required' , true);
  1021. $('#CouponForm #availEdDay').attr('required' , true);
  1022. $('#CouponForm #availStdt').attr('required' , true);
  1023. $('#CouponForm #availEddt').attr('required' , true);
  1024. } else {
  1025. $('.availDateTr').css('display' , 'none');
  1026. $('.availDayTr').css('display' , '');
  1027. $('#CouponForm #availDays').attr('required' , true);
  1028. $('#CouponForm #availStDay').attr('required' , false);
  1029. $('#CouponForm #availEdDay').attr('required' , false);
  1030. $('#CouponForm #availStdt').attr('required' , false);
  1031. $('#CouponForm #availEddt').attr('required' , false);
  1032. }
  1033. }
  1034. // 첫구매여부 변경시
  1035. function firstYnChange(pThis){
  1036. var selectVal = $(pThis).val();
  1037. if(typeof selectVal == "undefined") {
  1038. if(mode == "U") {
  1039. selectVal = cpnDetail.firstYn;
  1040. } else {
  1041. selectVal = "N";
  1042. }
  1043. }
  1044. if(selectVal == "Y" ) {
  1045. $('.buyDateTr').css('display' , '');
  1046. $('#buyStdt').attr('required' , true);
  1047. $('#buyEddt').attr('required' , true);
  1048. } else {
  1049. $('.buyDateTr').css('display' , 'none');
  1050. $('#buyStdt').attr('required' , false);
  1051. $('#buyEddt').attr('required' , false);
  1052. }
  1053. }
  1054. // 신규회원여부 변경시
  1055. function custJoinYnChange(pThis){
  1056. var selectVal = $(pThis).val();
  1057. if(typeof selectVal == "undefined") {
  1058. if(mode == "U") {
  1059. selectVal = cpnDetail.custJoinYn;
  1060. } else {
  1061. selectVal = "N";
  1062. }
  1063. }
  1064. if(selectVal == "Y" ) {
  1065. $('.custJoinDateTr').css('display' , '');
  1066. $('#custJoinStdt').attr('required' , true);
  1067. $('#custJoinEddt').attr('required' , true);
  1068. } else {
  1069. $('.custJoinDateTr').css('display' , 'none');
  1070. $('#custJoinStdt').attr('required' , false);
  1071. $('#custJoinEddt').attr('required' , false);
  1072. }
  1073. }
  1074. // 행추가시
  1075. $('#btnAddRow').on('click' , function(){
  1076. var data = { supplyCompCd: null , burdenRate : null , delYn : null};
  1077. gagaAgGrid.addRowData(inComGridOptions , data , "supplyCompCd" );
  1078. });
  1079. // 행삭제시
  1080. $('#btnDelRow').on('click' , function(){
  1081. inComGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(inComGridOptions)});
  1082. });
  1083. // 제휴링크채널 수정 (제휴링크가 꼭필요한지 확인필요)
  1084. function fnChangeAfLinkCdList(){
  1085. var actionUrl = "/business/aflink/list" + '?' + $('#afChannel').serialize();
  1086. var tag = "";
  1087. $("#CouponForm #afLinkCd").children('option').remove();
  1088. gagajf.ajaxJsonSubmit(actionUrl, '', function(data) {
  1089. for (let i = 0; i < data.length; i++) {
  1090. if (data[i].useYn == 'Y') {
  1091. tag += '<option value="' + data[i].afLinkCd + '">[' + data[i].afLinkCd + '] ' + data[i].afLinkNm + '</option>';
  1092. }
  1093. }
  1094. $("#CouponForm #afLinkCd").append(tag);
  1095. $("#CouponForm #afLinkCd option:first").attr("selected" , "selected");
  1096. });
  1097. }
  1098. // 쿠폰발행팝업
  1099. function fnCustomerIssuePopUp(){
  1100. cfnCpnPubForCustPopup();
  1101. };
  1102. // 전송시 값 세팅
  1103. function setReqValue(){
  1104. // 쿠폰유형값 세팅
  1105. $('#CouponForm #cpnType').val($('#CouponForm input:radio[name="rdoCpnType"]:checked').val());
  1106. // 할인방식값 세팅
  1107. $('#CouponForm #dcWay').val($('#CouponForm input:radio[name="rdoDcWay"]:checked').val());
  1108. // 적용범위값 세팅
  1109. $('#CouponForm #applyScope').val($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val());
  1110. // 다운로드기간 세팅
  1111. $('#CouponForm #downStdt').val($('#CouponForm #downStDay').val() + " " + $('#CouponForm #downStHH').val() + ":" + $('#CouponForm #downStMM').val() + ":00");
  1112. $('#CouponForm #downEddt').val($('#CouponForm #downEdDay').val() + " " + $('#CouponForm #downEdHH').val() + ":" + $('#CouponForm #downEdMM').val() + ":59");
  1113. // 유효기간 세팅
  1114. if($("#CouponForm #pdGb").val() == 'P') {
  1115. $('#CouponForm #availStdt').val($('#CouponForm #availStDay').val() + " " + $('#CouponForm #availStHH').val() + ":" + $('#CouponForm #availStMM').val() + ":00");
  1116. $('#CouponForm #availEddt').val($('#CouponForm #availEdDay').val() + " " + $('#CouponForm #availEdHH').val() + ":" + $('#CouponForm #availEdMM').val() + ":59");
  1117. $('#CouponForm #availDays').val('');
  1118. } else {
  1119. $('#CouponForm #availStdt').val('');
  1120. $('#CouponForm #availEddt').val('');
  1121. }
  1122. // 첫구매기간세팅
  1123. $('#CouponForm #buyStdt').val($('#CouponForm #buyStDay').val() + " " + $('#CouponForm #buyStHH').val() + ":" + $('#CouponForm #buyStMM').val() + ":00");
  1124. $('#CouponForm #buyEddt').val($('#CouponForm #buyEdDay').val() + " " + $('#CouponForm #buyEdHH').val() + ":" + $('#CouponForm #buyEdMM').val() + ":59");
  1125. // 신규회원기간 세팅
  1126. $('#CouponForm #custJoinStdt').val($('#CouponForm #custJoinStDay').val() + " " + $('#CouponForm #custJoinStHH').val() + ":" + $('#CouponForm #custJoinStMM').val() + ":00");
  1127. $('#CouponForm #custJoinEddt').val($('#CouponForm #custJoinEdDay').val() + " " + $('#CouponForm #custJoinEdHH').val() + ":" + $('#CouponForm #custJoinEdMM').val() + ":59");
  1128. // 할인쿠폰 유형에 따른 총 발행수량 수정 (주문서 쿠폰이고 난수쿠폰일 경우)
  1129. if($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_20") {
  1130. $('#CouponForm input[name="totPubLimitQty"]').val($('#CouponForm input[name="randomCpnQty"]').val()); // 총 발행수량 난수 생성수량으로 변경
  1131. $('#CouponForm input[name="custPubLimitQty"]').val(1); // 1인당 발행제한수량 1개 고정
  1132. $('#CouponForm input[name="onePubQty"]').val(1); // 1회발행수량 1개 고정
  1133. } else if ($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_10") { // 주문서 쿠폰이고 시리얼 유형일 경우
  1134. $('#CouponForm input[name="rdCpnNm"]').val($('#CouponForm input[name="serialCpnNm"]').val()); // 시리얼유형쿠폰명 저장
  1135. $('#CouponForm input[name="totPubLimitQty"]').val($('#CouponForm input[name="serialCpnQty"]').val()); // 총 발행수량 랜덤쿠폰발급수량으로 변경
  1136. $('#CouponForm input[name="custPubLimitQty"]').val(1); // 1인당 발행제한수량 1개 고정
  1137. $('#CouponForm input[name="onePubQty"]').val(1); // 1회발행수량 1개 고정
  1138. }
  1139. // 적용대상 - 공급처 그리드 전체값 세팅
  1140. var supplyAllData = gagaAgGrid.getAllRowData(supplyGridOptions);
  1141. var jsonSupplyCompData = JSON.stringify(supplyAllData);
  1142. $('#CouponForm #supplyCompList').val(jsonSupplyCompData);
  1143. // 적용대상 - 브랜드 그리드 전체값 세팅
  1144. var brandAllData = gagaAgGrid.getAllRowData(brandGridOptions);
  1145. var jsonBrandData = JSON.stringify(brandAllData);
  1146. $('#CouponForm #brandList').val(jsonBrandData);
  1147. // // 적용대상 - 카테고리 그리드 전체값 세팅
  1148. var cateAllData = gagaAgGrid.getAllRowData(cateGridOptions);
  1149. var jsonCateData = JSON.stringify(cateAllData);
  1150. $('#CouponForm #cateList').val(jsonCateData);
  1151. // 적용대상 - 적용상품 그리드 전체값 세팅
  1152. var goodsAllData = gagaAgGrid.getAllRowData(goodsGridOptions);
  1153. var jsonGoodsData = JSON.stringify(goodsAllData);
  1154. $('#CouponForm #applyGoodsList').val(jsonGoodsData);
  1155. // 적용대상 - 제외상품 그리드 전체값 세팅
  1156. var exceptGoodsAllData = gagaAgGrid.getAllRowData(excepGoodsGridOptions);
  1157. var jsonExceptGoodsData = JSON.stringify(exceptGoodsAllData);
  1158. $('#CouponForm #excepGoodsList').val(jsonExceptGoodsData);
  1159. // 입점업체분담율 그리드 전체값 세팅
  1160. var inCompBurdenAllData = gagaAgGrid.getAllRowData(inComGridOptions);
  1161. var jsonInCompBurdenData = JSON.stringify(inCompBurdenAllData);
  1162. $('#CouponForm #burdenList').val(jsonInCompBurdenData);
  1163. }
  1164. $(document).ready(function() {
  1165. gagaAgGrid.createGrid('inComGridList', inComGridOptions);
  1166. gagaAgGrid.createGrid('brandGridList', brandGridOptions);
  1167. gagaAgGrid.createGrid('cateGridList', cateGridOptions);
  1168. gagaAgGrid.createGrid('supplyGridList', supplyGridOptions);
  1169. gagaAgGrid.createGrid('goodsGridList', goodsGridOptions);
  1170. gagaAgGrid.createGrid('excepGoodsGridList', excepGoodsGridOptions);
  1171. gagaAgGrid.createGrid('randomCpnList', randomCouponGridOptions);
  1172. // 초기화시 데이터 세팅
  1173. if (mode == "N") {
  1174. $('input[name=rdoCpnType]').eq(0).attr("checked", true);
  1175. $('input[name=dcCdGb]').eq(0).attr("checked", true);
  1176. $('input[name=rdoDcWay]').eq(0).attr("checked", true);
  1177. $('input[name=rdoApplyScope]').eq(0).attr("checked", true)
  1178. $('#CouponForm #availEdHH option:last').attr("selected", "selected");
  1179. $('#CouponForm #availEdMM option:last').attr("selected", "selected");
  1180. $('#downEdHH option:last').attr("selected", "selected");
  1181. $('#downEdMM option:last').attr("selected", "selected");
  1182. $('#custJoinEdHH option:last').attr("selected", "selected");
  1183. $('#custJoinEdMM option:last').attr("selected", "selected");
  1184. $('#buyEdHH option:last').attr("selected", "selected");
  1185. $('#buyEdMM option:last').attr("selected", "selected");
  1186. $("#CouponForm #afChannel option:first").attr("selected" , "selected");
  1187. $("#CouponForm .normalCol").attr("colspan", "5");
  1188. $("#CouponForm .randomCpnArea").hide();
  1189. } else {
  1190. // 수정모드시 그리드 세팅
  1191. inComGridOptions.api.setRowData(cpnDtlBurdenList);
  1192. supplyGridOptions.api.setRowData(cpnDtlRefvalSupplyCompList);
  1193. goodsGridOptions.api.setRowData(cpnDtlRefvalApplyGoodsList);
  1194. excepGoodsGridOptions.api.setRowData(cpnDtlRefvalExceptGoodsList);
  1195. brandGridOptions.api.setRowData(cpnDtlRefvalBrandList);
  1196. cateGridOptions.api.setRowData(cpnDtlRefvalCateList);
  1197. randomCouponGridOptions.api.setRowData(randomCpnList);
  1198. // 기본정보 세팅
  1199. $("#CouponForm input:radio[name='rdoDcWay']:radio[value=" + cpnDetail.dcWay + "]").prop('checked', true);
  1200. $("#CouponForm input:radio[name='rdoCpnType']:radio[value=" + cpnDetail.cpnType + "]").prop('checked', true);
  1201. $("#CouponForm input:radio[name='rdoApplyScope']:radio[value=" + cpnDetail.applyScope + "]").prop('checked', true);
  1202. $("#CouponForm #dcPval").val(cpnDetail.dcPval);
  1203. $("#CouponForm #dcMval").val(cpnDetail.dcMval);
  1204. $("#CouponForm #dcAval").val(cpnDetail.dcAval);
  1205. $("#CouponForm #maxDcAmt").val(cpnDetail.maxDcAmt);
  1206. $("#CouponForm #totPubLimitQty").val(cpnDetail.totPubLimitQty);
  1207. $("#CouponForm #custPubLimitQty").val(cpnDetail.custPubLimitQty);
  1208. $("#CouponForm #onePubQty").val(cpnDetail.onePubQty);
  1209. $("#CouponForm #usableCustGb").val(cpnDetail.usableCustGb).prop("selected", true);
  1210. $("#CouponForm #usableCustGrade").val(cpnDetail.usableCustGrade).prop("selected", true);
  1211. $("#CouponForm #endAlimYn").val(cpnDetail.endAlimYn).prop("selected", true);
  1212. $("#CouponForm #firstYn").val(cpnDetail.firstYn).prop("selected", true);
  1213. $("#CouponForm #reissuance").val(cpnDetail.reissuance).prop("selected", true);
  1214. $("#CouponForm #dnGb").val(cpnDetail.dnGb).prop("selected", true);
  1215. $("#CouponForm #cpnStat").val(cpnDetail.cpnStat).prop("selected", true);
  1216. $("#CouponForm #custJoinYn").val(cpnDetail.custJoinYn).prop("selected", true);
  1217. $("#CouponForm #pdGb").val(cpnDetail.pdGb).prop("selected", true);
  1218. $("#CouponForm #siteCd").val(cpnDetail.siteCd).prop("selected", true);
  1219. $("#CouponForm #afChannel").val(cpnDetail.afChannel).prop("selected", true);
  1220. $("#CouponForm #cpnNm").val(cpnDetail.cpnNm);
  1221. $("#CouponForm #downYn").val(cpnDetail.downYn);
  1222. $("#CouponForm #buyLimitAmt").val(cpnDetail.buyLimitAmt);
  1223. $("#CouponForm #cpnId").val(cpnDetail.cpnId);
  1224. // 한번 저장되면 쿠폰유형, 할인쿠폰유형, 난수 생성수량, 시리얼명, 시리얼쿠폰발급수량 수정 불가 처리
  1225. $("#CouponForm input:radio[name='rdoCpnType']").attr('readonly', true);
  1226. $("#CouponForm input:radio[name='rdoCpnType']").prop('disabled', true);
  1227. $("#CouponForm input:radio[name='rdoCpnType']").parent().prop('disabled', true);
  1228. $("#CouponForm input:radio[name='dcCdGb']").attr('readonly', true);
  1229. $("#CouponForm input:radio[name='dcCdGb']").prop('disabled', true);
  1230. $("#CouponForm input:radio[name='dcCdGb']").parent().prop('disabled', true);
  1231. $("#CouponForm input:radio[name='dcCdGb']:radio[value=" + cpnDetail.dcCdGb + "]").prop('checked', true);
  1232. $("#CouponForm input[name='serialCpnNm']").prop("disabled", true);
  1233. $("#CouponForm input[name='serialCpnQty']").prop("disabled", true);
  1234. $("#CouponForm input[name='randomCpnQty']").prop("disabled", true);
  1235. // 주문서 쿠폰이면 할인쿠폰유형 노출
  1236. if(cpnDetail.cpnType == "G230_20") {
  1237. $("#CouponForm .dcCdGb").show();
  1238. }
  1239. // 할인코드유형이 일반유형이 아니면
  1240. if(cpnDetail.dcCdGb != "G233_00" ) {
  1241. $("#CouponForm .randomCpnTab").show(); // 시리얼 및 난수 TAB 노출
  1242. $("#CouponForm .dcCdCheck").hide(); // 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
  1243. if(cpnDetail.dcCdGb == "G233_10") { // 시리얼 유형
  1244. $("#CouponForm input[name='serialCpnQty']").val(cpnDetail.totPubLimitQty);
  1245. $("#CouponForm input[name='serialCpnNm']").val(cpnDetail.rdCpnNm);
  1246. $("#CouponForm .normalCol").attr("colspan", "5");
  1247. $("#CouponForm .serialCpnArea").show();
  1248. $("#CouponForm .randomCpnArea").hide();
  1249. } else if (cpnDetail.dcCdGb == "G233_20") {
  1250. $("#CouponForm input[name='randomCpnQty']").val(cpnDetail.totPubLimitQty);
  1251. $("#CouponForm .normalCol").attr("colspan", "");
  1252. $("#CouponForm .randomCpnArea").show();
  1253. $("#CouponForm .serialCpnArea").hide();
  1254. }
  1255. }
  1256. /*
  1257. $("#CouponForm input:checkbox[name='cpnCreateType']").parent("label").addClass("formControl");
  1258. $("#CouponForm input:checkbox[name='cpnCreateType']").parent("label").prop('disabled', true);
  1259. $("#CouponForm input:checkbox[name='cpnCreateType']").addClass("formControl");
  1260. $("#CouponForm input:checkbox[name='cpnCreateType']").prop('disabled', true);
  1261. */
  1262. // 만약 쿠폰 발급한 내역이 있으면 쿠폰수정못하게 readonly , disabled 속성 추가
  1263. if (issueCnt > 0) {
  1264. $("#CouponForm #usableCustGb").attr('readonly', true);
  1265. $("#CouponForm #usableCustGb").attr('disabled', true);
  1266. $("#CouponForm #afChannel").attr('readonly', true);
  1267. $("#CouponForm #afChannel").attr('disabled', true);
  1268. $("#CouponForm #usableCustGrade").attr('readonly', true);
  1269. $("#CouponForm #usableCustGrade").attr('disabled', true);
  1270. $("#CouponForm #endAlimYn").attr('readonly', true);
  1271. $("#CouponForm #endAlimYn").attr('disabled', true);
  1272. $("#CouponForm #firstYn").attr('readonly', true);
  1273. $("#CouponForm #firstYn").attr('disabled', true);
  1274. $("#CouponForm #reissuance").attr('readonly', true);
  1275. $("#CouponForm #reissuance").attr('disabled', true);
  1276. $("#CouponForm #dnGb").attr('readonly', true);
  1277. $("#CouponForm #dnGb").attr('disabled', true);
  1278. $("#CouponForm #custJoinYn").attr('readonly', true);
  1279. $("#CouponForm #custJoinYn").attr('disabled', true);
  1280. $("#CouponForm #pdGb").attr('readonly', true);
  1281. $("#CouponForm #pdGb").attr('disabled', true);
  1282. $("#CouponForm #downYn").attr('readonly', true);
  1283. $("#CouponForm #downYn").attr('disabled', true);
  1284. $("#CouponForm #siteCd").attr('readonly', true);
  1285. $("#CouponForm #siteCd").attr('disabled', true);
  1286. $("#CouponForm #cpnNm").attr('readonly', true);
  1287. $("#CouponForm #cpnNm").attr('disabled', true);
  1288. $("#CouponForm #dcPval").attr('readonly', true);
  1289. $("#CouponForm #dcPval").attr('disabled', true);
  1290. $("#CouponForm #dcMval").attr('readonly', true);
  1291. $("#CouponForm #dcMval").attr('disabled', true);
  1292. $("#CouponForm #dcAval").attr('readonly', true);
  1293. $("#CouponForm #dcAval").attr('disabled', true);
  1294. $("#CouponForm #maxDcAmt").attr('readonly', true);
  1295. $("#CouponForm #maxDcAmt").attr('disabled', true);
  1296. $("#CouponForm #totPubLimitQty").attr('readonly', true);
  1297. $("#CouponForm #totPubLimitQty").attr('disabled', true);
  1298. $("#CouponForm #custPubLimitQty").attr('readonly', true);
  1299. $("#CouponForm #custPubLimitQty").attr('disabled', true);
  1300. $("#CouponForm #onePubQty").attr('readonly', true);
  1301. $("#CouponForm #onePubQty").attr('disabled', true);
  1302. $("#CouponForm #downStDay").attr('readonly', true);
  1303. $("#CouponForm #downStDay").attr('disabled', true);
  1304. $("#CouponForm #downStHH").attr('readonly', true);
  1305. $("#CouponForm #downStHH").attr('disabled', true);
  1306. $("#CouponForm #downStMM").attr('readonly', true);
  1307. $("#CouponForm #downStMM").attr('disabled', true);
  1308. $("#CouponForm #buyLimitAmt").attr('readonly', true);
  1309. $("#CouponForm input:radio[name='rdoDcWay']").attr('readonly', true);
  1310. $("#CouponForm input:radio[name='rdoApplyScope']").attr('readonly', true);
  1311. $("#CouponForm .rdoBtn").css('cursor', 'auto');
  1312. $("#CouponForm #cpnId").attr('readonly', true);
  1313. $("#CouponForm #cpnId").attr('disabled', true);
  1314. $("#CouponForm input:checkbox[name='cpnCreateType']").attr('readonly', true);
  1315. $("#CouponForm input:checkbox[name='cpnCreateType']").attr('disabled', true);
  1316. $("#CouponForm input:checkbox[name=cpnCreateType]").attr('checked', true);
  1317. $("#CouponForm input:checkbox[name=cpnCreateType]").parent().addClass('checked');
  1318. }
  1319. // 다운로드기간 세팅
  1320. splitDate("start", cpnDetail.downStdt, "down");
  1321. splitDate("end", cpnDetail.downEddt, "down");
  1322. // 유효기간이 날짜인경우 날짜 세팅
  1323. if (cpnDetail.pdGb == "P") {
  1324. splitDate("start", cpnDetail.availStdt, "avail");
  1325. splitDate("end", cpnDetail.availEddt, "avail");
  1326. if(issueCnt > 0) {
  1327. $("#CouponForm #availStDay").attr('readonly', true);
  1328. $("#CouponForm #availStDay").attr('disabled', true);
  1329. $("#CouponForm #availStHH").attr('readonly', true);
  1330. $("#CouponForm #availStHH").attr('disabled', true);
  1331. $("#CouponForm #availStMM").attr('readonly', true);
  1332. $("#CouponForm #availStMM").attr('disabled', true);
  1333. }
  1334. } else {
  1335. $("#CouponForm #availDays").val(cpnDetail.availDays);
  1336. $('#CouponForm #availEdHH option:last').attr("selected", "selected");
  1337. $('#CouponForm #availEdMM option:last').attr("selected", "selected");
  1338. }
  1339. // 첫구매여부 적용하는 경우 날짜 세팅
  1340. if (cpnDetail.firstYn == "Y") {
  1341. splitDate("start", cpnDetail.buyStdt, "buy");
  1342. splitDate("end", cpnDetail.buyEddt, "buy");
  1343. if(issueCnt > 0) {
  1344. $("#CouponForm #buyStDay").attr('readonly', true);
  1345. $("#CouponForm #buyStDay").attr('disabled', true);
  1346. $("#CouponForm #buyStHH").attr('readonly', true);
  1347. $("#CouponForm #buyStHH").attr('disabled', true);
  1348. $("#CouponForm #buyStMM").attr('readonly', true);
  1349. $("#CouponForm #buyStMM").attr('disabled', true);
  1350. }
  1351. }
  1352. // 신규회원여부 적용하는 경우 날짜 세팅
  1353. if (cpnDetail.custJoinYn == "Y") {
  1354. splitDate("start", cpnDetail.custJoinStdt, "custJoin");
  1355. splitDate("end", cpnDetail.custJoinEddt, "custJoin");
  1356. if(issueCnt > 0) {
  1357. $("#CouponForm #custJoinStDay").attr('readonly', true);
  1358. $("#CouponForm #custJoinStDay").attr('disabled', true);
  1359. $("#CouponForm #custJoinStHH").attr('readonly', true);
  1360. $("#CouponForm #custJoinStHH").attr('disabled', true);
  1361. $("#CouponForm #custJoinStMM").attr('readonly', true);
  1362. $("#CouponForm #custJoinStMM").attr('disabled', true);
  1363. }
  1364. }
  1365. }
  1366. // 기본세팅
  1367. pdGbChange();
  1368. firstYnChange();
  1369. custJoinYnChange();
  1370. fnChangeAfLinkCdList();
  1371. // 제휴채널2뎁스 기본세팅
  1372. if(cpnDetail != null ) {
  1373. $("#CouponForm #afLinkCd").val(cpnDetail.afLinkCd).prop("selected", true);
  1374. if(issueCnt > 0 ) {
  1375. $("#CouponForm #afLinkCd").attr('readonly', true);
  1376. $("#CouponForm #afLinkCd").attr('disabled', true);
  1377. }
  1378. }
  1379. });
  1380. // 날짜분리 ( 시작/종료날짜구분(start , end) , 날짜String , 적용타겟대상 )
  1381. function splitDate(stedGb , date , targetGb ){
  1382. var str = date;
  1383. var dateStr = str.split(' ');
  1384. var timeArr = dateStr[1].split(':');
  1385. if(stedGb == "start") {
  1386. $("#CouponForm #"+targetGb+"StDay").val(dateStr[0]);
  1387. $("#CouponForm #"+targetGb+"StHH").val(timeArr[0]);
  1388. $("#CouponForm #"+targetGb+"StMM").val(timeArr[1]);
  1389. } else {
  1390. $("#CouponForm #"+targetGb+"EdDay").val(dateStr[0]);
  1391. $("#CouponForm #"+targetGb+"EdHH").val(timeArr[0]);
  1392. $("#CouponForm #"+targetGb+"EdMM").val(timeArr[1]);
  1393. }
  1394. }
  1395. // 제한없음 문구 변경
  1396. $("input[name=totPubLimitQty],input[name=custPubLimitQty],input[name=buyLimitAmt],input[name=onePubQty]").change(function(){
  1397. if($(this).val() == "0"){
  1398. $("#"+$(this).attr("name")+"Span").html("*제한없음");
  1399. }else{
  1400. $("#"+$(this).attr("name")+"Span").html("");
  1401. }
  1402. $("#"+$(this).attr("name")+"Span").css("color", "red");
  1403. });
  1404. setTimeout(function(){
  1405. $("input[name=totPubLimitQty],input[name=custPubLimitQty],input[name=buyLimitAmt],input[name=onePubQty]").change();
  1406. }, 1);
  1407. // 콤마 찍어주기
  1408. $(function(){
  1409. setComma("CouponForm" , true);
  1410. });
  1411. function setComma(formId, pBoolean){
  1412. setTimeout(function(){
  1413. //숫자타입 콤마 찍어주기
  1414. $("#"+formId+" [data-valid-type=numeric]").each(function(){
  1415. $(this).change(function(){
  1416. if(pBoolean){
  1417. $(this).val($(this).val().addComma());
  1418. }else{
  1419. $(this).val($(this).val().removeComma());
  1420. }
  1421. });
  1422. if(pBoolean){
  1423. $(this).val($(this).val().addComma());
  1424. }else{
  1425. $(this).val($(this).val().removeComma());
  1426. }
  1427. });
  1428. }, 300);
  1429. }
  1430. /*]]>*/
  1431. </script>
  1432. </html>