CouponPopupForm.html 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : CouponCreatePopup.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('CouponCreatePopup')"><i class="fa fa-times"></i></button>
  22. </div>
  23. <div class="panelContent">
  24. <form id="CouponCreatePopup" name="CouponCreatePopup" 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. <div class="tabs">
  32. <div class="tabsNav">
  33. <ul>
  34. <li class="on"><a href="#coupontab1">기본정보</a></li>
  35. <li><a href="#coupontab2">적용대상</a></li>
  36. <li><a href="#coupontab3">입점업체분담율</a></li>
  37. </ul>
  38. </div>
  39. <ul class="tabsCont">
  40. <li class="tab on" id="coupontab1">
  41. <div class="panelStyle">
  42. <table class="frmStyle">
  43. <colgroup>
  44. <col style="width:10%">
  45. <col style="width:40%;">
  46. <col style="width:10%">
  47. <col style="width:40%;">
  48. </colgroup>
  49. <tr>
  50. <th>쿠폰번호<em class="required" title="필수"></em></th>
  51. <td colspan="5">
  52. <input type="hidden" name="copyCpnId" maxlength="50" value="">
  53. <input type="text" name="cpnId" id="cpnId" maxlength="50" style="width:70%;" disabled="true" readonly="readonly" placeholder="자동생성" data-valid-name="쿠폰번호">
  54. <label class="chkBox checked" onclick="clickCreateChk(this);">
  55. <input type="checkbox" name="cpnCreateType" value="true" class="type-check" checked />쿠폰번호 자동생성
  56. </label>
  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>
  73. <th>사용가능고객구분<em class="required" title="필수"></em></th>
  74. <td>
  75. <select name="usableCustGb" id="usableCustGb" required="required" data-valid-name="사용가능고객구분">
  76. <option th:if="${usableCustGbList}" th:each="oneData , status : ${usableCustGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  77. </select>
  78. </td>
  79. <th>사이트<em class="required" title="필수"></em></th>
  80. <td>
  81. <select name="siteCd" id="siteCd" required="required" data-valid-name="사이트">
  82. <option th:if="${siteCdList}" th:each="oneData , status : ${siteCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  83. </select>
  84. </td>
  85. </tr>
  86. <tr>
  87. <th>사용고객등급구분<em class="required" title="필수"></em></th>
  88. <td>
  89. <select name="usableCustGrade" id="usableCustGrade" required="required" data-valid-name="사용고객등급구분">
  90. <option value="ALL">[전체]</option>
  91. <option th:if="${usableCustGradeList}" th:each="oneData , status : ${usableCustGradeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  92. </select>
  93. </td>
  94. <th>만료알림여부<em class="required" title="필수"></em></th>
  95. <td>
  96. <select name="endAlimYn" id="endAlimYn" required="required" data-valid-name="만료알림여부">
  97. <option value="Y">Y</option>
  98. <option value="N" selected="selected">N</option>
  99. </select>
  100. </td>
  101. </tr>
  102. <tr>
  103. <th>할인방식<em class="required" title="필수"></em></th>
  104. <td>
  105. <input type="hidden" name="dcWay" id="dcWay" required="required" data-valid-name="할인방식">
  106. <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>
  107. </td>
  108. <th>구매제한금액<em class="required" title="필수"></em></th>
  109. <td>
  110. <input type="text" id="buyLimitAmt" name="buyLimitAmt" class="w200" required="required" value="0" style="text-align: right;" data-valid-name="구매제한금액">원
  111. </td>
  112. </tr>
  113. <tr>
  114. <th>할인값(PC)<em class="required" title="필수"></em></th>
  115. <td>
  116. <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>
  117. </td>
  118. <th>할인값(모바일웹)<em class="required" title="필수"></em></th>
  119. <td>
  120. <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>
  121. </td>
  122. </tr>
  123. <tr>
  124. <th>할인값(모바일앱)<em class="required" title="필수"></em></th>
  125. <td>
  126. <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>
  127. </td>
  128. <th>최대할인금액<em class="required" title="필수"></em></th>
  129. <td>
  130. <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>
  131. </td>
  132. </tr>
  133. <tr>
  134. <th>다운로드시작일시<em class="required" title="필수"></em></th>
  135. <td>
  136. <input type="hidden" name="downStdt" id="downStdt" required="required" data-valid-name="다운로드시작일시">
  137. <input type="text" class="schDate w100" name="downStDay" id="downStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  138. <select name="downStHH" id="downStHH">
  139. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  140. </select>
  141. <select name="downStMM" id="downStMM">
  142. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  143. </select>
  144. <th>다운로드종료일시<em class="required" title="필수"></em></th>
  145. <td>
  146. <input type="hidden" id="downEddt" name="downEddt" required="required" data-valid-name="다운로드종료일시">
  147. <input type="text" class="schDate w100" name="downEdDay" id="downEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  148. <select name="downEdHH" id="downEdHH">
  149. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  150. </select>
  151. <select name="downEdMM" id="downEdMM">
  152. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  153. </select>
  154. </td>
  155. </tr>
  156. <tr>
  157. <th>기간/일수구분<em class="required" title="필수"></em></th>
  158. <td>
  159. <select name="pdGb" id="pdGb" onchange="pdGbChange(this)" required="required" data-valid-name="기간/일수구분">
  160. <option value="P">기간</option>
  161. <option value="D">일수</option>
  162. </select>
  163. </td>
  164. <th>적용범위<em class="required" title="필수"></em></th>
  165. <td>
  166. <input type="hidden" name="applyScope" id="applyScope" required="required" data-valid-name="적용범위">
  167. <label class="rdoBtn"> <input type="radio" name="rdoApplyScope" value="A"/>전체</label>
  168. <label class="rdoBtn"> <input type="radio" name="rdoApplyScope" value="I"/>개별</label>
  169. </td>
  170. </tr>
  171. <tr class="availDayTr" style="display: none;">
  172. <th>유효기간일수<em class="required" title="필수"></em></th>
  173. <td>
  174. <input type="text" name="availDays" id="availDays" class="w200" data-valid-name="유효기간일수">
  175. </td>
  176. </tr>
  177. <tr>
  178. <th class="availDateTr">유효기간시작일시<em class="required" title="필수"></em></th>
  179. <td class="availDateTr">
  180. <input type="hidden" name="availStdt" id="availStdt" data-valid-name="유효기간시작일시">
  181. <input type="text" class="schDate w100" name="availStDay" id="availStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  182. <select name="availStHH" id="availStHH">
  183. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  184. </select>
  185. <select name="availStMM" id="availStMM">
  186. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  187. </select>
  188. <th class="availDateTr">유효기간종료일시<em class="required" title="필수"></em></th>
  189. <td class="availDateTr">
  190. <input type="hidden" id="availEddt" name="availEddt" data-valid-name="유효기간종료일시">
  191. <input type="text" class="schDate w100" name="availEdDay" id="availEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  192. <select name="availEdHH" id="availEdHH">
  193. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  194. </select>
  195. <select name="availEdMM" id="availEdMM">
  196. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  197. </select>
  198. </td>
  199. </tr>
  200. <tr>
  201. <th>첫구매여부<em class="required" title="필수"></em></th>
  202. <td>
  203. <select name="firstYn" id="firstYn" onchange="firstYnChange(this)" required="required" data-valid-name="첫구매여부">
  204. <option value="Y">Y</option>
  205. <option value="N" selected="selected">N</option>
  206. </select>
  207. </td>
  208. <th>다운로드가능여부<em class="required" title="필수"></em></th>
  209. <td>
  210. <select name="downYn" id="downYn" required="required" data-valid-name="다운로드가능여부">
  211. <option value="Y">Y</option>
  212. <option value="Y" selected="selected">N</option>
  213. </select>
  214. </td>
  215. </tr>
  216. <tr>
  217. <th class="buyDateTr">첫구매기간시작일시<em class="required" title="필수"></em></th>
  218. <td class="buyDateTr">
  219. <input type="hidden" id="buyEddt" name="buyEddt" data-valid-name="첫구매기간종료일시">
  220. <input type="text" class="schDate w100" name="buyStDay" id="buyStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  221. <select name="buyStHH" id="buyStHH">
  222. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  223. </select>
  224. <select name="buyStMM" id="buyStMM">
  225. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  226. </select>
  227. <th class="buyDateTr">첫구매기간종료일시<em class="required" title="필수"></em></th>
  228. <td class="buyDateTr">
  229. <input type="hidden" name="buyStdt" id="buyStdt" data-valid-name="첫구매기간시작일시">
  230. <input type="text" class="schDate w100" name="buyEdDay" id="buyEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  231. <select name="buyEdHH" id="buyEdHH">
  232. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  233. </select>
  234. <select name="buyEdMM" id="buyEdMM">
  235. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  236. </select>
  237. </td>
  238. </tr>
  239. <tr>
  240. <th>신규회원여부<em class="required" title="필수"></em></th>
  241. <td>
  242. <select name="custJoinYn" id="custJoinYn" onchange="custJoinYnChange(this)" required="required" data-valid-name="신규회원여부">
  243. <option value="Y">Y</option>
  244. <option value="N" selected="selected">N</option>
  245. </select>
  246. </td>
  247. <th>총발행제한수량<em class="required" title="필수"></em></th>
  248. <td>
  249. <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>
  250. </td>
  251. </tr>
  252. <tr>
  253. <th class="custJoinDateTr">신규회원기간시작일시<em class="required" title="필수"></em></th>
  254. <td class="custJoinDateTr">
  255. <input type="hidden" name="custJoinStdt" id="custJoinStdt" data-valid-name="신규회원기간시작일시">
  256. <input type="text" class="schDate w100" name="custJoinStDay" id="custJoinStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  257. <select name="custJoinStHH" id="custJoinStHH">
  258. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  259. </select>
  260. <select name="custJoinStMM" id="custJoinStMM">
  261. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  262. </select>
  263. <th class="custJoinDateTr">신규회원기간종료일시<em class="required" title="필수"></em></th>
  264. <td class="custJoinDateTr">
  265. <input type="hidden" id="custJoinEddt" name="custJoinEddt" data-valid-name="신규회원기간종료일시">
  266. <input type="text" class="schDate w100" name="custJoinEdDay" id="custJoinEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  267. <select name="custJoinEdHH" id="custJoinEdHH">
  268. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  269. </select>
  270. <select name="custJoinEdMM" id="custJoinEdMM">
  271. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  272. </select>
  273. </td>
  274. </tr>
  275. <tr>
  276. <th>1인당발행제한수량<em class="required" title="필수"></em></th>
  277. <td>
  278. <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>
  279. </td>
  280. <th>1회발행수량<em class="required" title="필수"></em></th>
  281. <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>
  282. </tr>
  283. <tr>
  284. <th>재발급여부<em class="required" title="필수"></em></th>
  285. <td>
  286. <select name="reissuance" id="reissuance" required="required" data-valid-name="재발급여부" >
  287. <option th:if="${reissuanceList}" th:each="oneData , status : ${reissuanceList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  288. </select>
  289. </td>
  290. <th>다운로드구분<em class="required" title="필수"></em></th>
  291. <td>
  292. <select name="dnGb" id="dnGb" required="required" data-valid-name="다운로드구분">
  293. <option th:if="${dnGbList}" th:each="oneData , status:${dnGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  294. </select>
  295. </td>
  296. </tr>
  297. <tr>
  298. <th>쿠폰상태<em class="required" title="필수"></em></th>
  299. <td>
  300. <select name="cpnStat" id="cpnStat" ata-valid-name="쿠폰상태" required="required">
  301. <option th:if="${cpnStatList}" th:each="oneData , status : ${cpnStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  302. </select>
  303. </td>
  304. <th class="payTypeTr" style="display: none;">결제수단<em class="required" title="필수"></em></th>
  305. <td class="payTypeTr" style="display: none;">
  306. <select name="payType" id="payType" data-valid-name="결제수단">
  307. <option value="">[전체]</option>
  308. <option th:if="${payTypeList}" th:each="oneData , status : ${payTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  309. </select>
  310. </td>
  311. </tr>
  312. </table>
  313. <div class="mdPopBtnB aR">
  314. <button type="button" class="btn btn-info btn-lg" onclick="fnCouponCreate();" th:if="${mode == 'N'}">등록</button>
  315. <button type="button" class="btn btn-info btn-lg" onclick="fnCouponUpdate();" th:if="${mode == 'U'}">수정</button>
  316. </div>
  317. </div>
  318. </li>
  319. <!-- 쿠폰적용대상-->
  320. <li class="tab" id="coupontab2" >
  321. <div class="panelStyle">
  322. <div class="panelTitle">
  323. <h2 style="position: relative">적용 대상 상품 등록</h2>
  324. </div>
  325. <div class="inner-panelContent">
  326. <div class="panelContent">
  327. <table class="frmStyle">
  328. <colgroup>
  329. <col style="width:15%;">
  330. <col style="width:85%;">
  331. </colgroup>
  332. <tbody>
  333. <tr>
  334. <th>공급처</th>
  335. <td>
  336. <div class="padding10 inner-tb-solid">
  337. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSupplyAdd">공급처 추가</button>
  338. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSupplyDel">선택삭제</button>
  339. <br/>
  340. <div id="supplyGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  341. </div>
  342. </td>
  343. </tr>
  344. <tr>
  345. <th>브랜드</th>
  346. <td>
  347. <div class="padding10 inner-tb-solid">
  348. <button type="button" class="btn btnRight btn-success btn-lg" id="btnBrandAdd">브랜드 추가</button>
  349. <button type="button" class="btn btnRight btn-success btn-lg" id="btnBrandDel">선택삭제</button>
  350. <br/>
  351. <div id="brandGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  352. </div>
  353. </td>
  354. </tr>
  355. <tr>
  356. <th>카테고리</th>
  357. <td>
  358. <div class="padding10 inner-tb-solid">
  359. <button type="button" class="btn btnRight btn-success btn-lg" id="btnCateAdd">카테고리 추가</button>
  360. <button type="button" class="btn btnRight btn-success btn-lg" id="btnCateDel">선택삭제</button>
  361. <br/>
  362. <div id="cateGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  363. </div>
  364. </td>
  365. </tr>
  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="btnGoodsAdd">상품 추가</button>
  371. <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDel">선택삭제</button>
  372. <br/>
  373. <div id="goodsGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  374. </div>
  375. </td>
  376. </tr>
  377. </tbody>
  378. </table>
  379. </div>
  380. </div>
  381. <div class="panelTitle">
  382. <h2 style="position: relative">적용 제외 대상 상품 등록</h2>
  383. </div>
  384. <div class="inner-panelContent">
  385. <div class="panelContent">
  386. <table class="frmStyle">
  387. <colgroup>
  388. <col style="width:15%;">
  389. <col style="width:85%;">
  390. </colgroup>
  391. <tbody>
  392. <tr>
  393. <th>제외상품</th>
  394. <td>
  395. <div class="padding10 inner-tb-solid">
  396. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExcepGoodsAdd">제외상품 추가</button>
  397. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExcepGoodsDel">선택삭제</button>
  398. <br/>
  399. <div id="excepGoodsGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  400. </div>
  401. </td>
  402. </tr>
  403. </tbody>
  404. </table>
  405. </div>
  406. </div>
  407. </div>
  408. </li>
  409. <!-- 쿠폰적용대상끝-->
  410. <!-- 입점업체분담율-->
  411. <li class="tab" id="coupontab3">
  412. <div class="panelStyle">
  413. <ul class="panelBar">
  414. <li class="left">
  415. <button type="button" class="btn btn-warning btn-lg" id="btnAddRow">행추가</button>
  416. <button type="button" class="btn btn-danger btn-lg" id="btnDeleteRow">행삭제</button>
  417. </li>
  418. </ul>
  419. <div id="inComGridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
  420. </div>
  421. </li>
  422. <!-- 입점업체분담끝-->
  423. </ul>
  424. </div>
  425. </form>
  426. </div>
  427. </div>
  428. </div>
  429. <script th:inline="javascript">
  430. /*<![CDATA[*/
  431. // 상세조회 리스트
  432. var mode = [[${mode}]];
  433. var cpnDetail = [[${cpnDetail}]];
  434. var cpnDtlRefvalSupplyCompList = [[${cpnDtlRefvalSupplyCompList}]];
  435. var cpnDtlRefvalApplyGoodsList = [[${cpnDtlRefvalApplyGoodsList}]];
  436. var cpnDtlRefvalCateList = [[${cpnDtlRefvalCateList}]];
  437. var cpnDtlRefvalBrandList = [[${cpnDtlRefvalBrandList}]];
  438. var cpnDtlRefvalExceptGoodsList = [[${cpnDtlRefvalExceptGoodsList}]];
  439. var issueCnt = [[${issueCnt}]];
  440. // 공통코드 리스트
  441. var ibSupplyComList = gagajf.convertToArray([[${ibSupplyCompList}]]);
  442. var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
  443. var cateGbList = gagajf.convertToArray([[${cateGbList}]]);
  444. var delYnList = { "Y":"Yes", "N":"No" };
  445. var siteCdList = gagajf.convertToArray([[${siteCdList}]]);
  446. var selfBrandList = gagajf.convertToArray([[${selfBrandList}]]);
  447. // ag-grid 입점업체분담율 컬럼
  448. var columnDefs = [
  449. { headerName: "입점업체" , field:"supplyCompCd" , width:150, cellClass:"text-center" ,
  450. cellEditor: 'agRichSelectCellEditor',
  451. cellEditorParams: { values: gagaAgGrid.extractValues(ibSupplyComList) },
  452. valueFormatter: function (params) { return gagaAgGrid.lookupValue(ibSupplyComList, params.value); },
  453. valueParser: function (params) { return gagaAgGrid.lookupKey(ibSupplyComList, params.newValue);}
  454. } ,
  455. { headerName: "쿠폰분담율(%)", field:"burdenRate" , width:150, cellClass: "text-center" ,
  456. cellEditorParams: { maxlength: 10, required: true }
  457. } ,
  458. { headerName: "삭제여부" , field: "delYn" , width:150, cellClass: "text-center" ,
  459. cellEditor: 'agRichSelectCellEditor',
  460. cellEditorParams: { values: gagaAgGrid.extractValues(delYnList) },
  461. valueFormatter: function (params) { return gagaAgGrid.lookupValue(delYnList, params.value); },
  462. valueParser: function (params) { return gagaAgGrid.lookupKey(delYnList, params.newValue); }
  463. } ,
  464. { headerName: "쿠폰번호" , field: "cpnId" , width: 120 , cellClass: 'text-center' , hide:true}
  465. ];
  466. // ag-grid 공급처 컬럼
  467. var supplyColumnDefs = [
  468. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  469. { headerName : "공급업체코드" , field: "supplyCompCd" , width:150, cellClass: 'text-center'} ,
  470. { headerName: "공급업체명" , field: "supplyCompNm" , width:150, cellClass: 'text-center'},
  471. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  472. ];
  473. // ag-grid 브랜드 컬럼
  474. var brandSelColumnDefs = [
  475. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  476. { headerName : "브랜드ID" , field: "brandCd" , width: 120, cellClass : 'text-center'} ,
  477. { headerName : "브랜드명" , field: "brandEnm" , width: 120, cellClass: 'text-center'} ,
  478. { headerName : "공급업체명", field: "supplyCompNm" , width: 150, cellClass: 'text-center' } ,
  479. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  480. ];
  481. // ag-grid 적용상품 컬럼
  482. var goodsSelColumnDefs = [
  483. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  484. { headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
  485. { headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
  486. { headerName: "상품명" , field: "goodsNm" , width: 120 , cellClass: 'text-center'} ,
  487. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  488. ];
  489. // ag-grid 카테고리 컬럼
  490. var cateSelColumnDefs = [
  491. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  492. { headerName: "사이트" , field: "siteCd" , width: 100 , cellClass: 'text-center' ,
  493. cellEditor: 'agRichSelectCellEditor',
  494. cellEditorParams: { values: gagaAgGrid.extractValues(siteCdList) },
  495. valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteCdList, params.value); },
  496. valueParser: function (params) { return gagaAgGrid.lookupKey(siteCdList, params.newValue); }
  497. },
  498. { headerName: "카테고리구분" , field: "cateGb" , width: 100 , cellClass: 'text-center' ,
  499. cellEditor: 'agRichSelectCellEditor',
  500. cellEditorParams: { values: gagaAgGrid.extractValues(cateGbList) },
  501. valueFormatter: function (params) { return gagaAgGrid.lookupValue(cateGbList, params.value); },
  502. valueParser: function (params) { return gagaAgGrid.lookupKey(cateGbList, params.newValue); }
  503. },
  504. { headerName: "카테고리코드" , field: "cateNo" , width: 100 , cellClass: 'text-center'} ,
  505. { headerName: "카테고리명" , field: "cateNm" , width: 120 , cellClass: 'text-center'},
  506. { headerName: "이월/정상구분" , field: "formalGb" , width: 120 , cellClass: 'text-center',
  507. cellEditor: 'agRichSelectCellEditor',
  508. cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
  509. valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
  510. valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
  511. },
  512. { headerName: "브랜드명" , field:"brandCd" , width:150, cellClass: "text-center", required: true ,
  513. editable: true, cellEditor: 'agRichSelectCellEditor',
  514. cellEditorParams: { values: gagaAgGrid.extractValues(selfBrandList) },
  515. valueFormatter: function (params) { return gagaAgGrid.lookupValue(selfBrandList, params.value); },
  516. valueParser: function (params) { return gagaAgGrid.lookupKey(selfBrandList, params.newValue); }
  517. },
  518. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  519. ];
  520. // ag-grid 제외상품 컬럼
  521. var excepGoodsColumnDefs = [
  522. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  523. { headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
  524. { headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
  525. { headerName: "상품명" , field: "goodsNm" , width: 120 , cellClass: 'text-center'} ,
  526. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true}
  527. ];
  528. var inComGridOptions = gagaAgGrid.getGridOptions(columnDefs);
  529. var cateGridOptions = gagaAgGrid.getGridOptions(cateSelColumnDefs);
  530. var goodsGridOptions = gagaAgGrid.getGridOptions(goodsSelColumnDefs);
  531. var brandGridOptions = gagaAgGrid.getGridOptions(brandSelColumnDefs);
  532. var supplyGridOptions = gagaAgGrid.getGridOptions(supplyColumnDefs);
  533. var excepGoodsGridOptions = gagaAgGrid.getGridOptions(excepGoodsColumnDefs);
  534. inComGridOptions.defaultColDef.editable = true;
  535. inComGridOptions.rowSelection = "multiple";
  536. goodsGridOptions.rowSelection = "multiple";
  537. supplyGridOptions.rowSelection = "multiple";
  538. excepGoodsGridOptions.rowSelection = "multiple";
  539. cateGridOptions.rowSelection = "multiple";
  540. brandGridOptions.rowSelection = "multiple";
  541. inComGridOptions.stopEditingWhenGridLosesFocus = true;
  542. // 쿠폰 등록 버튼 클릭시
  543. function fnCouponCreate(){
  544. // 필수값들 셋팅
  545. setReqValue();
  546. // 필수값 validation 체크
  547. if (!gagajf.validation('#CouponCreatePopup')) {
  548. return false;
  549. }
  550. checkValidation();
  551. mcxDialog.confirm('저장하시겠습니까?' , {
  552. cancelBtnText:"취소",
  553. sureBtnText:"확인",
  554. sureBtnClick: function () {
  555. gagajf.ajaxFormSubmit($('#CouponCreatePopup').prop('action'), '#CouponCreatePopup', function() {
  556. uifnPopupClose('CouponCreatePopup');
  557. $('#btnSearch').trigger('click');
  558. });
  559. }
  560. });
  561. }
  562. // 쿠폰 수정 시
  563. function fnCouponUpdate(){
  564. // 필수값들 셋팅
  565. setReqValue();
  566. // 필수값 validation 체크
  567. if (!gagajf.validation('#CouponCreatePopup')) {
  568. return false;
  569. }
  570. checkValidation();
  571. mcxDialog.confirm('수정하시겠습니까?' , {
  572. cancelBtnText:"취소",
  573. sureBtnText:"확인",
  574. sureBtnClick: function () {
  575. gagajf.ajaxFormSubmit($('#CouponCreatePopup').prop('action'), '#CouponCreatePopup', function() {
  576. uifnPopupClose('CouponCreatePopup');
  577. $('#btnSearch').trigger('click');
  578. });
  579. }
  580. });
  581. }
  582. function checkValidation(){
  583. //신규가입 지급한다면 validation 체크
  584. if( $('#custJoinYn option:selected').val() == "Y" ){
  585. var fromDate = $('#CouponCreatePopup input[name=custJoinStdt]').val();
  586. var toDate = $('#CouponCreatePopup input[name=custJoinEddt]').val();
  587. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  588. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  589. sureBtnText: "확인",
  590. sureBtnClick: function() {
  591. $('#CouponCreatePopup input[name=custJoinStdt]').focus();
  592. }
  593. });
  594. return false;
  595. }
  596. if (fromDate > toDate) {
  597. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  598. sureBtnText: "확인",
  599. sureBtnClick: function() {
  600. $('#CouponCreatePopup input[name=custJoinEddt]').focus();
  601. }
  602. });
  603. return false;
  604. }
  605. }
  606. // 첫구매 지급하면 validation 체크
  607. if( $('#firstYn option:selected').val() == "Y" ){
  608. var fromDate = $('#CouponCreatePopup input[name=buyStdt]').val();
  609. var toDate = $('#CouponCreatePopup input[name=buyEddt]').val();
  610. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  611. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  612. sureBtnText: "확인",
  613. sureBtnClick: function() {
  614. $('#CouponCreatePopup input[name=buyStdt]').focus();
  615. }
  616. });
  617. return false;
  618. }
  619. if (fromDate > toDate) {
  620. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  621. sureBtnText: "확인",
  622. sureBtnClick: function() {
  623. $('#CouponCreatePopup input[name=buyEddt]').focus();
  624. }
  625. });
  626. return false;
  627. }
  628. }
  629. // 할인율 validation 체크 (100을 넘길수없음)
  630. if($('#dcWay').val() == 'G240_11') {
  631. if($('#dcPval').val() > 100) {
  632. mcxDialog.alert('PC할인율은 100을 초과할수없습니다.');
  633. $('#dcPval').focus();
  634. return false;
  635. } else if( $('#dcMval').val() > 100) {
  636. mcxDialog.alert('모바일(웹)할인율은 100을 초과할수없습니다.');
  637. $('#dcMval').focus();
  638. return false;
  639. } else if( $('#dcAval').val() > 100) {
  640. mcxDialog.alert('모바일(앱)할인율은 100을 초과할수없습니다.');
  641. $('#dcAval').focus();
  642. return false;
  643. }
  644. }
  645. }
  646. // 할인방식 변경
  647. $("#CouponCreatePopup input[name=rdoDcWay]").bind('click change', function () {
  648. var radioValue = $(this).val();
  649. //발급이력이있으면 수정안됨
  650. if(issueCnt > 0 ) {
  651. return false;
  652. }
  653. if(radioValue == 'G240_10') {
  654. $('#dcPvalSpan').text("원");
  655. $('#dcMvalSpan').text("원");
  656. $('#dcAvalSpan').text("원");
  657. } else {
  658. $('#dcPvalSpan').text("%");
  659. $('#dcMvalSpan').text("%");
  660. $('#dcAvalSpan').text("%");
  661. }
  662. });
  663. // 쿠폰 상태 변경
  664. $("#CouponCreatePopup input[name=rdoCpnType]").bind('click change', function () {
  665. var radioValue = $(this).val();
  666. if(mode == "U") {
  667. radioValue = cpnDetail.cpnType;
  668. }
  669. // 상품쿠폰 선택시 적용범위 개별로 변경 나머진 전체
  670. if(radioValue == 'G230_11') {
  671. $("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
  672. } else {
  673. $("input:radio[name='rdoApplyScope']:radio[value='A']").prop('checked', true);
  674. }
  675. // 주문서 쿠폰 선택시 결제수단 노출
  676. if(radioValue == 'G230_20') {
  677. $('.payTypeTr').css('display' , '');
  678. $('#CouponCreatePopup #payType').attr('required' , true);
  679. } else {
  680. $('.payTypeTr').css('display' , 'none');
  681. $('#CouponCreatePopup #payType').attr('required' , false );
  682. }
  683. $('#CouponCreatePopup #cpnType').val(radioValue);
  684. });
  685. // 적용대상 - 브랜드 추가 버튼시
  686. $('#btnBrandAdd').on('click' , function(){
  687. cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
  688. });
  689. // 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
  690. var fnSetPopupBrandInfo = function(result) {
  691. for(let i = 0 ; i < result.length ; i++) {
  692. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(brandGridOptions); // 받아온 모든 데이터
  693. // 받아온 data for
  694. for(let j = 0 ; j < gridListValue.length ; j++) {
  695. if(gridListValue[j].brandCd == result[i].brandCd) { addChk = false; } // 중복체크
  696. }
  697. // 중복되지 않은 데이터 리스트에 추가
  698. if(addChk) {
  699. gagaAgGrid.addRowData(brandGridOptions, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "supplyCompNm" : result[i].supplyCompNm});
  700. }
  701. }
  702. };
  703. // 적용대상 - 브랜드 삭제 버튼시
  704. $('#btnBrandDel').on('click' , function(){
  705. brandGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(brandGridOptions)});
  706. });
  707. // 적용대상 - 공급처 추가 버튼시
  708. $('#btnSupplyAdd').on('click' , function (){
  709. cfnOpenCompanyListPopup("fnSetPopupComapnyInfo");
  710. });
  711. // 공급업체 설정 / 업체 추가 콜백함수
  712. var fnSetPopupComapnyInfo = function(result) {
  713. // 기존 리스트 데이터 for
  714. for(let i = 0 ; i < result.length ; i++) {
  715. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(supplyGridOptions); // 받아온 모든 데이터
  716. // 받아온 data for
  717. for(let j = 0 ; j < gridListValue.length ; j++) {
  718. // 동일한 data는 추가하지 않음
  719. if(gridListValue[j].supplyCompCd == result[i].supplyCompCd) { addChk = false; } // 중복체크
  720. }
  721. // 중복되지 않은 데이터 리스트에 추가
  722. if(addChk) {
  723. gagaAgGrid.addRowData(supplyGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm});
  724. }
  725. }
  726. };
  727. // 적용대상 - 공급처 삭제시시
  728. $('#btnSupplyDel').on('click' , function () {
  729. supplyGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(supplyGridOptions)});
  730. });
  731. // 적용대상 - 카테고리 추가시
  732. $('#btnCateAdd').on('click' , function () {
  733. cfnOpenCategoryPopup("fnSetPopupCategoryInfo");
  734. });
  735. // 카테고리 추가 콜백 함수
  736. var fnSetPopupCategoryInfo = function (result) {
  737. // 기존 리스트 데이터 for
  738. for(let i = 0 ; i < result.length ; i++) {
  739. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(cateGridOptions); // 받아온 모든 데이터
  740. // 받아온 data for
  741. for(let j = 0 ; j < gridListValue.length ; j++) {
  742. // 동일한 data는 추가하지 않음
  743. if(gridListValue[j].cateNo == result[i].cateNo) { addChk = false; } // 중복체크
  744. }
  745. // 중복되지 않은 데이터 리스트에 추가
  746. if(addChk) {
  747. 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});
  748. }
  749. }
  750. }
  751. // 적용대상 - 카테고리 삭제시
  752. $('#btnCateDel').on('click' , function () {
  753. cateGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(cateGridOptions)});
  754. });
  755. // 적용대상 - 상품 추가시
  756. $('#btnGoodsAdd').on('click' , function () {
  757. cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
  758. });
  759. // 적용 상품 리스트 콜백함수
  760. var fnSetPopupApplyGoodsInfo = function(result) {
  761. gridAddGoodsList(goodsGridOptions, result , "apply");
  762. };
  763. // 적용대상 - 상품 삭제 시
  764. $('#btnGoodsDel').on('click' , function () {
  765. goodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(goodsGridOptions)});
  766. });
  767. // 적용대상 - 제외상품 추가시
  768. $('#btnExcepGoodsAdd').on('click' , function(){
  769. gridAddGoodsList(excepGoodsGridOptions, result , "except");
  770. });
  771. $('#btnExcepGoodsDel').on('click' , function () {
  772. excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(excepGoodsGridOptions)});
  773. });
  774. // ag-grid 상품관련 list 콜백함수
  775. function gridAddGoodsList(OriginGridListOption, result, gubun) {
  776. var goodsGbVal = "G800_10";
  777. if(gubun == 'except'){
  778. goodsGbVal = "G800_30";
  779. }
  780. for(let i = 0 ; i < result.length ; i++) {
  781. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(OriginGridListOption); // 받아온 모든 데이터
  782. // 받아온 data for
  783. for(let j = 0 ; j < gridListValue.length ; j++) {
  784. if(gridListValue[j].goodsCd == result[i].goodsCd) { addChk = false; } // 중복체크
  785. }
  786. // 중복되지 않은 데이터 리스트에 추가
  787. if(addChk) {
  788. //gagaAgGrid.addRowData(OriginGridListOption, result[i], "goodsCd");
  789. gagaAgGrid.addRowData(OriginGridListOption, {"goodsGb": goodsGbVal, "goodsCd" : result[i].goodsCd, "goodsNm" : result[i].goodsNm});
  790. }
  791. }
  792. }
  793. // 기간 일수 변경시
  794. function pdGbChange(pThis){
  795. var selectVal = $(pThis).val();
  796. if(typeof selectVal == "undefined") {
  797. if(mode == "U") {
  798. selectVal = cpnDetail.pdGb;
  799. } else {
  800. selectVal = "P";
  801. }
  802. }
  803. if(selectVal == "P") {
  804. $('.availDateTr').css('display' , '');
  805. $('.availDayTr').css('display' , 'none');
  806. $('#CouponCreatePopup #availDays').attr('required' , false);
  807. $('#CouponCreatePopup #availStDay').attr('required' , true);
  808. $('#CouponCreatePopup #availEdDay').attr('required' , true);
  809. $('#CouponCreatePopup #availStdt').attr('required' , true);
  810. $('#CouponCreatePopup #availEddt').attr('required' , true);
  811. } else {
  812. $('.availDateTr').css('display' , 'none');
  813. $('.availDayTr').css('display' , '');
  814. $('#CouponCreatePopup #availDays').attr('required' , true);
  815. $('#CouponCreatePopup #availStDay').attr('required' , false);
  816. $('#CouponCreatePopup #availEdDay').attr('required' , false);
  817. $('#CouponCreatePopup #availStdt').attr('required' , false);
  818. $('#CouponCreatePopup #availEddt').attr('required' , false);
  819. }
  820. }
  821. // 첫구매여부 변경시
  822. function firstYnChange(pThis){
  823. var selectVal = $(pThis).val();
  824. if(typeof selectVal == "undefined") {
  825. if(mode == "U") {
  826. selectVal = cpnDetail.firstYn;
  827. } else {
  828. selectVal = "N";
  829. }
  830. }
  831. if(selectVal == "Y" ) {
  832. $('.buyDateTr').css('display' , '');
  833. $('#buyStdt').attr('required' , true);
  834. $('#buyEddt').attr('required' , true);
  835. } else {
  836. $('.buyDateTr').css('display' , 'none');
  837. $('#buyStdt').attr('required' , false);
  838. $('#buyEddt').attr('required' , false);
  839. }
  840. }
  841. // 신규회원여부 변경시
  842. function custJoinYnChange(pThis){
  843. var selectVal = $(pThis).val();
  844. if(typeof selectVal == "undefined") {
  845. if(mode == "U") {
  846. selectVal = cpnDetail.custJoinYn;
  847. } else {
  848. selectVal = "N";
  849. }
  850. }
  851. if(selectVal == "Y" ) {
  852. $('.custJoinDateTr').css('display' , '');
  853. $('#custJoinStdt').attr('required' , true);
  854. $('#custJoinEddt').attr('required' , true);
  855. } else {
  856. $('.custJoinDateTr').css('display' , 'none');
  857. $('#custJoinStdt').attr('required' , false);
  858. $('#custJoinEddt').attr('required' , false);
  859. }
  860. }
  861. // 행추가시
  862. $('#btnAddRow').on('click' , function(){
  863. var data = { supplyCompCd: null , burdenRate : null , delYn : null};
  864. gagaAgGrid.addRowData(inComGridOptions , data , "supplyCompCd" );
  865. });
  866. // 쿠폰번호 자동생성 클릭시
  867. function clickCreateChk(){
  868. var flag = $('#CouponCreatePopup input[name=cpnCreateType]').prop("checked");
  869. // 발급받은 이력이 있으면 수정 안됨
  870. if(issueCnt > 0 ) {
  871. return false;
  872. }
  873. if(!flag) {
  874. $("#CouponCreatePopup input[name=cpnId]").prop("disabled", true);
  875. $("#CouponCreatePopup input[name=cpnId]").attr("required", false);
  876. $("#CouponCreatePopup input[name=cpnId]").attr("readonly", true);
  877. $("#CouponCreatePopup input[name=cpnId]").attr("placeholder", "자동생성");
  878. $('#CouponCreatePopup input[name=cpnCreateType]').prop("checked" , false);
  879. } else{
  880. $("#CouponCreatePopup input[name=cpnId]").prop("disabled", false);
  881. $("#CouponCreatePopup input[name=cpnId]").attr("required", true);
  882. $("#CouponCreatePopup input[name=cpnId]").attr("placeholder", "");
  883. $("#CouponCreatePopup input[name=cpnId]").attr("readonly", false);
  884. $('#CouponCreatePopup input[name=cpnCreateType]').prop("checked" , true);
  885. }
  886. }
  887. // 전송시 값 세팅
  888. function setReqValue(){
  889. // 쿠폰유형값 세팅
  890. $('#CouponCreatePopup #cpnType').val($('#CouponCreatePopup input:radio[name="rdoCpnType"]:checked').val());
  891. // 할인방식값 세팅
  892. $('#CouponCreatePopup #dcWay').val($('#CouponCreatePopup input:radio[name="rdoDcWay"]:checked').val());
  893. // 적용범위값 세팅
  894. $('#CouponCreatePopup #applyScope').val($('#CouponCreatePopup input:radio[name="rdoApplyScope"]:checked').val());
  895. // 다운로드기간 세팅
  896. $('#CouponCreatePopup #downStdt').val($('#CouponCreatePopup #downStDay').val() + " " + $('#CouponCreatePopup #downStHH').val() + ":" + $('#CouponCreatePopup #downStMM').val() + ":00");
  897. $('#CouponCreatePopup #downEddt').val($('#CouponCreatePopup #downEdDay').val() + " " + $('#CouponCreatePopup #downEdHH').val() + ":" + $('#CouponCreatePopup #downEdMM').val() + ":59");
  898. // 유효기간 세팅
  899. $('#CouponCreatePopup #availStdt').val($('#CouponCreatePopup #availStDay').val() + " " + $('#CouponCreatePopup #availStHH').val() + ":" + $('#CouponCreatePopup #availStMM').val() + ":00");
  900. $('#CouponCreatePopup #availEddt').val($('#CouponCreatePopup #availEdDay').val() + " " + $('#CouponCreatePopup #availEdHH').val() + ":" + $('#CouponCreatePopup #availEdMM').val() + ":59");
  901. // 첫구매기간세팅
  902. $('#CouponCreatePopup #buyStdt').val($('#CouponCreatePopup #buyStDay').val() + " " + $('#CouponCreatePopup #buyStHH').val() + ":" + $('#CouponCreatePopup #buyStMM').val() + ":00");
  903. $('#CouponCreatePopup #buyEddt').val($('#CouponCreatePopup #buyEdDay').val() + " " + $('#CouponCreatePopup #buyEdHH').val() + ":" + $('#CouponCreatePopup #buyEdMM').val() + ":59");
  904. // 신규회원기간 세팅
  905. $('#CouponCreatePopup #custJoinStdt').val($('#CouponCreatePopup #custJoinStDay').val() + " " + $('#CouponCreatePopup #custJoinStHH').val() + ":" + $('#CouponCreatePopup #custJoinStMM').val() + ":00");
  906. $('#CouponCreatePopup #custJoinEddt').val($('#CouponCreatePopup #custJoinEdDay').val() + " " + $('#CouponCreatePopup #custJoinEdHH').val() + ":" + $('#CouponCreatePopup #custJoinEdMM').val() + ":59");
  907. // 적용대상 - 공급처 그리드 전체값 세팅
  908. var supplyAllData = gagaAgGrid.getAllRowData(supplyGridOptions);
  909. var jsonSupplyCompData = JSON.stringify(supplyAllData);
  910. $('#CouponCreatePopup #supplyCompList').val(jsonSupplyCompData);
  911. // 적용대상 - 브랜드 그리드 전체값 세팅
  912. var brandAllData = gagaAgGrid.getAllRowData(brandGridOptions);
  913. var jsonBrandData = JSON.stringify(brandAllData);
  914. $('#CouponCreatePopup #brandList').val(jsonBrandData);
  915. // // 적용대상 - 카테고리 그리드 전체값 세팅
  916. var cateAllData = gagaAgGrid.getAllRowData(cateGridOptions);
  917. var jsonCateData = JSON.stringify(cateAllData);
  918. $('#CouponCreatePopup #cateList').val(jsonCateData);
  919. // 적용대상 - 적용상품 그리드 전체값 세팅
  920. var goodsAllData = gagaAgGrid.getAllRowData(goodsGridOptions);
  921. var jsonGoodsData = JSON.stringify(goodsAllData);
  922. $('#CouponCreatePopup #applyGoodsList').val(jsonGoodsData);
  923. // 적용대상 - 제외상품 그리드 전체값 세팅
  924. var exceptGoodsAllData = gagaAgGrid.getAllRowData(excepGoodsGridOptions);
  925. var jsonExceptGoodsData = JSON.stringify(exceptGoodsAllData);
  926. $('#CouponCreatePopup #excepGoodsList').val(jsonExceptGoodsData);
  927. // 입점업체분담율 그리드 전체값 세팅
  928. var inCompBurdenAllData = gagaAgGrid.getAllRowData(inComGridOptions);
  929. var jsonInCompBurdenData = JSON.stringify(inCompBurdenAllData);
  930. $('#CouponCreatePopup #burdenList').val(jsonInCompBurdenData);
  931. }
  932. $(document).ready(function() { debugger;
  933. gagaAgGrid.createGrid('inComGridList', inComGridOptions);
  934. gagaAgGrid.createGrid('brandGridList', brandGridOptions);
  935. gagaAgGrid.createGrid('cateGridList', cateGridOptions);
  936. gagaAgGrid.createGrid('supplyGridList', supplyGridOptions);
  937. gagaAgGrid.createGrid('goodsGridList', goodsGridOptions);
  938. gagaAgGrid.createGrid('excepGoodsGridList', excepGoodsGridOptions);
  939. // 초기화시 데이터 세팅
  940. if (mode == "N") {
  941. $('input[name=rdoCpnType]').eq(0).attr("checked", true);
  942. $('input[name=rdoDcWay]').eq(0).attr("checked", true);
  943. $('input[name=rdoApplyScope]').eq(0).attr("checked", true)
  944. $('#CouponCreatePopup #availEdHH option:last').attr("selected", "selected");
  945. $('#CouponCreatePopup #availEdMM option:last').attr("selected", "selected");
  946. $('#downEdHH option:last').attr("selected", "selected");
  947. $('#downEdMM option:last').attr("selected", "selected");
  948. $('#custJoinEdHH option:last').attr("selected", "selected");
  949. $('#custJoinEdMM option:last').attr("selected", "selected");
  950. $('#buyEdHH option:last').attr("selected", "selected");
  951. $('#buyEdMM option:last').attr("selected", "selected");
  952. } else {
  953. // 수정모드시 그리드 세팅
  954. inComGridOptions.api.setRowData(cpnDtlRefvalSupplyCompList);
  955. supplyGridOptions.api.setRowData(cpnDtlRefvalSupplyCompList);
  956. goodsGridOptions.api.setRowData(cpnDtlRefvalApplyGoodsList);
  957. excepGoodsGridOptions.api.setRowData(cpnDtlRefvalExceptGoodsList);
  958. brandGridOptions.api.setRowData(cpnDtlRefvalBrandList);
  959. cateGridOptions.api.setRowData(cpnDtlRefvalCateList);
  960. // 기본정보 세팅
  961. $("#CouponCreatePopup input:radio[name='rdoDcWay']:radio[value=" + cpnDetail.dcWay + "]").prop('checked', true);
  962. $("#CouponCreatePopup input:radio[name='rdoCpnType']:radio[value=" + cpnDetail.cpnType + "]").prop('checked', true);
  963. $("#CouponCreatePopup input:radio[name='rdoApplyScope']:radio[value=" + cpnDetail.applyScope + "]").prop('checked', true);
  964. $("#CouponCreatePopup #dcPval").val(cpnDetail.dcPval.addComma());
  965. $("#CouponCreatePopup #dcMval").val(cpnDetail.dcMval.addComma());
  966. $("#CouponCreatePopup #dcAval").val(cpnDetail.dcAval.addComma());
  967. $("#CouponCreatePopup #maxDcAmt").val(cpnDetail.maxDcAmt.addComma());
  968. $("#CouponCreatePopup #totPubLimitQty").val(cpnDetail.totPubLimitQty.addComma());
  969. $("#CouponCreatePopup #custPubLimitQty").val(cpnDetail.custPubLimitQty.addComma());
  970. $("#CouponCreatePopup #onePubQty").val(cpnDetail.onePubQty.addComma());
  971. $("#CouponCreatePopup #usableCustGb").val(cpnDetail.usableCustGb).prop("selected", true);
  972. $("#CouponCreatePopup #usableCustGrade").val(cpnDetail.usableCustGrade).prop("selected", true);
  973. $("#CouponCreatePopup #endAlimYn").val(cpnDetail.endAlimYn).prop("selected", true);
  974. $("#CouponCreatePopup #firstYn").val(cpnDetail.firstYn).prop("selected", true);
  975. $("#CouponCreatePopup #reissuance").val(cpnDetail.reissuance).prop("selected", true);
  976. $("#CouponCreatePopup #dnGb").val(cpnDetail.dnGb).prop("selected", true);
  977. $("#CouponCreatePopup #cpnStat").val(cpnDetail.cpnStat).prop("selected", true);
  978. $("#CouponCreatePopup #custJoinYn").val(cpnDetail.custJoinYn).prop("selected", true);
  979. $("#CouponCreatePopup #pdGb").val(cpnDetail.pdGb).prop("selected", true);
  980. $("#CouponCreatePopup #siteCd").val(cpnDetail.siteCd).prop("selected", true);
  981. $("#CouponCreatePopup #cpnNm").val(cpnDetail.cpnNm);
  982. $("#CouponCreatePopup #downYn").val(cpnDetail.downYn);
  983. $("#CouponCreatePopup #buyLimitAmt").val(cpnDetail.buyLimitAmt.addComma());
  984. $("#CouponCreatePopup #cpnId").val(cpnDetail.cpnId);
  985. // 만약 쿠폰 발급한 내역이 있으면 쿠폰수정못하게 readonly , disabled 속성 추가
  986. if (issueCnt > 0) {
  987. $("#CouponCreatePopup #usableCustGb").attr('readonly', true);
  988. $("#CouponCreatePopup #usableCustGb").attr('disabled', true);
  989. $("#CouponCreatePopup #usableCustGrade").attr('readonly', true);
  990. $("#CouponCreatePopup #usableCustGrade").attr('disabled', true);
  991. $("#CouponCreatePopup #endAlimYn").attr('readonly', true);
  992. $("#CouponCreatePopup #endAlimYn").attr('disabled', true);
  993. $("#CouponCreatePopup #firstYn").attr('readonly', true);
  994. $("#CouponCreatePopup #firstYn").attr('disabled', true);
  995. $("#CouponCreatePopup #reissuance").attr('readonly', true);
  996. $("#CouponCreatePopup #reissuance").attr('disabled', true);
  997. $("#CouponCreatePopup #dnGb").attr('readonly', true);
  998. $("#CouponCreatePopup #dnGb").attr('disabled', true);
  999. $("#CouponCreatePopup #custJoinYn").attr('readonly', true);
  1000. $("#CouponCreatePopup #custJoinYn").attr('disabled', true);
  1001. $("#CouponCreatePopup #pdGb").attr('readonly', true);
  1002. $("#CouponCreatePopup #pdGb").attr('disabled', true);
  1003. $("#CouponCreatePopup #downYn").attr('readonly', true);
  1004. $("#CouponCreatePopup #downYn").attr('disabled', true);
  1005. $("#CouponCreatePopup #siteCd").attr('readonly', true);
  1006. $("#CouponCreatePopup #siteCd").attr('disabled', true);
  1007. $("#CouponCreatePopup #cpnNm").attr('readonly', true);
  1008. $("#CouponCreatePopup #cpnNm").attr('disabled', true);
  1009. $("#CouponCreatePopup #dcPval").attr('readonly', true);
  1010. $("#CouponCreatePopup #dcPval").attr('disabled', true);
  1011. $("#CouponCreatePopup #dcMval").attr('readonly', true);
  1012. $("#CouponCreatePopup #dcMval").attr('disabled', true);
  1013. $("#CouponCreatePopup #dcAval").attr('readonly', true);
  1014. $("#CouponCreatePopup #dcAval").attr('disabled', true);
  1015. $("#CouponCreatePopup #maxDcAmt").attr('readonly', true);
  1016. $("#CouponCreatePopup #maxDcAmt").attr('disabled', true);
  1017. $("#CouponCreatePopup #totPubLimitQty").attr('readonly', true);
  1018. $("#CouponCreatePopup #totPubLimitQty").attr('disabled', true);
  1019. $("#CouponCreatePopup #custPubLimitQty").attr('readonly', true);
  1020. $("#CouponCreatePopup #custPubLimitQty").attr('disabled', true);
  1021. $("#CouponCreatePopup #onePubQty").attr('readonly', true);
  1022. $("#CouponCreatePopup #onePubQty").attr('disabled', true);
  1023. $("#CouponCreatePopup #downStDay").attr('readonly', true);
  1024. $("#CouponCreatePopup #downStDay").attr('disabled', true);
  1025. $("#CouponCreatePopup #downStHH").attr('readonly', true);
  1026. $("#CouponCreatePopup #downStHH").attr('disabled', true);
  1027. $("#CouponCreatePopup #downStMM").attr('readonly', true);
  1028. $("#CouponCreatePopup #downStMM").attr('disabled', true);
  1029. $("#CouponCreatePopup #buyLimitAmt").attr('readonly', true);
  1030. $("#CouponCreatePopup input:radio[name='rdoDcWay']").attr('readonly', true);
  1031. $("#CouponCreatePopup input:radio[name='rdoCpnType']").attr('readonly', true);
  1032. $("#CouponCreatePopup input:radio[name='rdoApplyScope']").attr('readonly', true);
  1033. $("#CouponCreatePopup .rdoBtn").css('cursor', 'auto');
  1034. $("#CouponCreatePopup #cpnId").attr('readonly', true);
  1035. $("#CouponCreatePopup #cpnId").attr('disabled', true);
  1036. $("#CouponCreatePopup input:checkbox[name='cpnCreateType']").attr('readonly', true);
  1037. $("#CouponCreatePopup input:checkbox[name='cpnCreateType']").attr('disabled', true);
  1038. $("#CouponCreatePopup input:checkbox[name=cpnCreateType]").attr('checked', true);
  1039. $("#CouponCreatePopup input:checkbox[name=cpnCreateType]").parent().addClass('checked');
  1040. }
  1041. // 다운로드기간 세팅
  1042. splitDate("start", cpnDetail.downStdt, "down");
  1043. splitDate("end", cpnDetail.downEddt, "down");
  1044. // 유효기간이 날짜인경우 날짜 세팅
  1045. if (cpnDetail.pdGb == "P") {
  1046. splitDate("start", cpnDetail.availStdt, "avail");
  1047. splitDate("end", cpnDetail.availEddt, "avail");
  1048. $("#CouponCreatePopup #availStDay").attr('readonly', true);
  1049. $("#CouponCreatePopup #availStDay").attr('disabled', true);
  1050. $("#CouponCreatePopup #availStHH").attr('readonly', true);
  1051. $("#CouponCreatePopup #availStHH").attr('disabled', true);
  1052. $("#CouponCreatePopup #availStMM").attr('readonly', true);
  1053. $("#CouponCreatePopup #availStMM").attr('disabled', true);
  1054. } else {
  1055. $("#CouponCreatePopup #availDays").val(cpnDetail.availDays);
  1056. }
  1057. // 첫구매여부 적용하는 경우 날짜 세팅
  1058. if (cpnDetail.firstYn == "Y") {
  1059. splitDate("start", cpnDetail.buyStdt, "buy");
  1060. splitDate("end", cpnDetail.buyEddt, "buy");
  1061. $("#CouponCreatePopup #buyStDay").attr('readonly', true);
  1062. $("#CouponCreatePopup #buyStDay").attr('disabled', true);
  1063. $("#CouponCreatePopup #buyStHH").attr('readonly', true);
  1064. $("#CouponCreatePopup #buyStHH").attr('disabled', true);
  1065. $("#CouponCreatePopup #buyStMM").attr('readonly', true);
  1066. $("#CouponCreatePopup #buyStMM").attr('disabled', true);
  1067. }
  1068. // 신규회원여부 적용하는 경우 날짜 세팅
  1069. if (cpnDetail.custJoinYn == "Y") {
  1070. splitDate("start", cpnDetail.custJoinStdt, "custJoin");
  1071. splitDate("end", cpnDetail.custJoinEddt, "custJoin");
  1072. $("#CouponCreatePopup #custJoinStDay").attr('readonly', true);
  1073. $("#CouponCreatePopup #custJoinStDay").attr('disabled', true);
  1074. $("#CouponCreatePopup #custJoinStHH").attr('readonly', true);
  1075. $("#CouponCreatePopup #custJoinStHH").attr('disabled', true);
  1076. $("#CouponCreatePopup #custJoinStMM").attr('readonly', true);
  1077. $("#CouponCreatePopup #custJoinStMM").attr('disabled', true);
  1078. }
  1079. }
  1080. pdGbChange();
  1081. firstYnChange();
  1082. custJoinYnChange();
  1083. });
  1084. // 날짜분리 ( 시작/종료날짜구분(start , end) , 날짜String , 적용타겟대상 )
  1085. function splitDate(stedGb , date , targetGb ){
  1086. var str = date;
  1087. var dateStr = str.split(' ');
  1088. var timeArr = dateStr[1].split(':');
  1089. if(stedGb == "start") {
  1090. $("#CouponCreatePopup #"+targetGb+"StDay").val(dateStr[0]);
  1091. $("#CouponCreatePopup #"+targetGb+"StHH").val(timeArr[0]);
  1092. $("#CouponCreatePopup #"+targetGb+"StMM").val(timeArr[1]);
  1093. } else {
  1094. $("#CouponCreatePopup #"+targetGb+"EdDay").val(dateStr[0]);
  1095. $("#CouponCreatePopup #"+targetGb+"EdHH").val(timeArr[0]);
  1096. $("#CouponCreatePopup #"+targetGb+"EdMM").val(timeArr[1]);
  1097. }
  1098. }
  1099. $("input[name=totPubLimitQty],input[name=custPubLimitQty],input[name=buyLimitAmt],input[name=onePubQty]").change(function(){
  1100. if($(this).val() == "0"){
  1101. $("#"+$(this).attr("name")+"Span").html("*제한없음");
  1102. }else{
  1103. $("#"+$(this).attr("name")+"Span").html("");
  1104. }
  1105. $("#"+$(this).attr("name")+"Span").css("color", "red");
  1106. });
  1107. setTimeout(function(){
  1108. $("input[name=totPubLimitQty],input[name=custPubLimitQty],input[name=buyLimitAmt],input[name=onePubQty]").change();
  1109. }, 1);
  1110. function setComma(formId, pBoolean){
  1111. setTimeout(function(){
  1112. //숫자타입 콤마 찍어주기
  1113. $("#"+formId+" [data-valid-type=numeric]").each(function(){
  1114. $(this).change(function(){
  1115. if(pBoolean){
  1116. $(this).val($(this).val().addComma());
  1117. }else{
  1118. $(this).val($(this).val().removeComma());
  1119. }
  1120. });
  1121. if(pBoolean){
  1122. $(this).val($(this).val().addComma());
  1123. }else{
  1124. $(this).val($(this).val().removeComma());
  1125. }
  1126. });
  1127. }, 300);
  1128. }
  1129. /*]]>*/
  1130. </script>
  1131. </html>