CouponPopupForm.html 133 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015
  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="1500">
  18. <div class="panelStyle" style="height: 750px;">
  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. <input type="hidden" name="mode" th:value="${mode}"/>
  34. <div class="tabs">
  35. <div class="tabsNav">
  36. <ul>
  37. <li class="on"><a href="#coupontab1">기본정보</a></li>
  38. <li><a href="#coupontab2">적용대상</a></li>
  39. <li><a href="#coupontab3">입점업체분담율</a></li>
  40. <li class="randomCpnTab" style="display:none;"><a href="#coupontab4">시리얼및난수</a></li>
  41. <li class="limitedTimeCpnTab" style="display:none;"><a href="#coupontab5">선착순쿠폰</a></li> <!--style="display:none;"-->
  42. </ul>
  43. </div>
  44. <ul class="tabsCont">
  45. <li class="tab on" id="coupontab1">
  46. <div class="panelStyle">
  47. <table class="frmStyle">
  48. <colgroup>
  49. <col style="width:10%">
  50. <col style="width:45%;">
  51. <col style="width:10%">
  52. <col style="width:35%;">
  53. </colgroup>
  54. <tbody>
  55. <tr th:if="${cpnDetail}">
  56. <th>쿠폰번호</th>
  57. <td colspan="5">
  58. <span th:if="${cpnDetail}" th:text="${cpnDetail.cpnId}"></span>
  59. </td>
  60. </tr>
  61. <tr>
  62. <th>쿠폰명<em class="required" title="필수"></em></th>
  63. <td>
  64. <input type="text" name="cpnNm" id="cpnNm" required="required" data-valid-name="쿠폰명">
  65. </td>
  66. <th>사이트<em class="required" title="필수"></em></th>
  67. <td>
  68. <select name="siteCd" id="siteCd" required="required" data-valid-name="사이트">
  69. <option th:if="${siteCdList}" th:each="oneData , status : ${siteCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
  70. </select>
  71. </td>
  72. </tr>
  73. <tr>
  74. <th>쿠폰설명</th>
  75. <td>
  76. <input type="text" name="cpnDesc" id="cpnDesc" data-valid-name="쿠폰설명">
  77. </td>
  78. <th>만료알림여부<em class="required" title="필수"></em></th>
  79. <td>
  80. <select name="endAlimYn" id="endAlimYn" required="required" data-valid-name="만료알림여부">
  81. <option value="Y">Y</option>
  82. <option value="N" selected="selected">N</option>
  83. </select>
  84. </td>
  85. </tr>
  86. <tr>
  87. <th>쿠폰유형<em class="required" title="필수"></em></th>
  88. <td>
  89. <input type="hidden" id="cpnType" name="cpnType" required="required" data-valid-name="쿠폰유형">
  90. <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>
  91. </td>
  92. <th class="limitedTimeCpnArea" style="display: none;">선착순쿠폰</th>
  93. <td class="limitedTimeCpnArea" style="display: none;">
  94. <label class="chkBox limitedTimeCpnBox" id="limitedTimeCpnBox"><input type="checkbox" name="limitedTimeCpnYn" id="limitedTimeCpnYn" value="N"/>선착순쿠폰</label>
  95. </td>
  96. </tr>
  97. <tr class="dcCdGb" style="display:none;">
  98. <th>할인쿠폰유형<em class="required" title="필수"></em></th>
  99. <td class="normalCol">
  100. <input type="hidden" id="dcCd" data-valid-name="할인쿠폰유형">
  101. <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>
  102. </td>
  103. <th class="randomCpnArea">난수생성수량<em class="required" title="필수"></em></th>
  104. <td class="randomCpnArea">
  105. <input type="text" name="randomCpnQty" class="w300" data-valid-name="난수생성수량" data-valid-type="numeric">
  106. </td>
  107. </tr>
  108. <tr class="serialCpnArea" style="display:none;">
  109. <th>시리얼쿠폰키워드<em class="required" title="필수"></em></th>
  110. <td>
  111. <input type="text" name="serialCpnNm" id="serialCpnNm" class="w300" maxlength="10" data-valid-name="시리얼쿠폰키워드">
  112. </td>
  113. <th>시리얼쿠폰발급수량<em class="required" title="필수"></em></th>
  114. <td>
  115. <input type="text" name="serialCpnQty" class="w300" data-valid-name="시리얼쿠폰발급수량" data-valid-type="numeric">
  116. </td>
  117. </tr>
  118. <tr>
  119. <th class="usableCustGbArea">사용가능고객구분<em class="required" title="필수"></em></th>
  120. <td class="usableCustGbArea">
  121. <label class="chkBox" th:if="${usableCustGbList}" th:each="oneData, status : ${usableCustGbList}">
  122. <input type="checkbox" name="usableCustGbArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}" checked="checked"/>
  123. </label>
  124. </td>
  125. <th class="usableCustGradeArea">사용고객등급구분<em class="required" title="필수"></em></th>
  126. <td class="usableCustGradeArea">
  127. <label class="chkBox" th:if="${usableCustGradeList}" th:each="oneData, status : ${usableCustGradeList}">
  128. <input type="checkbox" name="usableCustGradeArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}" checked="checked"/>
  129. </label>
  130. </td>
  131. </tr>
  132. <tr>
  133. <th>할인방식<em class="required" title="필수"></em></th>
  134. <td>
  135. <input type="hidden" name="dcWay" id="dcWay" required="required" data-valid-name="할인방식">
  136. <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>
  137. </td>
  138. <th>할인값(PC)<em class="required" title="필수"></em></th>
  139. <td>
  140. <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" onkeyup="fnDcValOnkeyUp(this);"><span id="dcPvalSpan">원</span>
  141. <button type="button" class="btn btn-default btn-lg" id="applySameValueBtn">동일적용</button>
  142. </td>
  143. </tr>
  144. <tr>
  145. <th>할인값(모바일웹)<em class="required" title="필수"></em></th>
  146. <td>
  147. <input type="text" class="w200" id="dcMval" name="dcMval" value="0" required="required" data-valid-name="할인값(모바일웹)" data-valid-type="numeric" style="text-align: right" onkeyup="fnDcValOnkeyUp(this);"><span id="dcMvalSpan">원</span>
  148. </td>
  149. <th>할인값(모바일앱)<em class="required" title="필수"></em></th>
  150. <td>
  151. <input type="text" class="w200" id="dcAval" name="dcAval" value="0" required="required" data-valid-name="할인값(모바일앱)" data-valid-type="numeric" style="text-align: right" onkeyup="fnDcValOnkeyUp(this);"><span id="dcAvalSpan">원</span>
  152. </td>
  153. </tr>
  154. <tr>
  155. <th class="buyLimitAmtArea">구매제한금액<em class="required" title="필수"></em></th>
  156. <td class="buyLimitAmtArea">
  157. <input type="text" id="buyLimitAmt" name="buyLimitAmt" class="w200" required="required" value="0" style="text-align: right;" data-valid-name="구매제한금액" data-valid-type="numeric">원
  158. </td>
  159. <th class="maxDcAmtArea">최대할인금액<em class="required" title="필수"></em></th>
  160. <td class="maxDcAmtArea">
  161. <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>
  162. </td>
  163. </tr>
  164. <tr>
  165. <th class="downStdtArea">다운로드시작일시<em class="required" title="필수"></em></th>
  166. <td class="downStdtArea">
  167. <input type="hidden" name="downStdt" id="downStdt" required="required" data-valid-name="다운로드시작일시">
  168. <input type="text" class="schDate w100" name="downStDay" id="downStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  169. <select name="downStHH" id="downStHH">
  170. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  171. </select>
  172. <select name="downStMM" id="downStMM">
  173. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  174. </select>
  175. <th class="downEddtArea">다운로드종료일시<em class="required" title="필수"></em></th>
  176. <td class="downEddtArea">
  177. <input type="hidden" id="downEddt" name="downEddt" required="required" data-valid-name="다운로드종료일시">
  178. <input type="text" class="schDate w100" name="downEdDay" id="downEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  179. <select name="downEdHH" id="downEdHH" onclick="fnChangeEdHH(this);">
  180. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  181. <option th:text="24시" th:value="24"></option>
  182. </select>
  183. <select name="downEdMM" id="downEdMM">
  184. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  185. </select>
  186. </td>
  187. </tr>
  188. <tr>
  189. <th class="pdGbArea">기간/일수구분<em class="required" title="필수"></em></th>
  190. <td class="pdGbArea">
  191. <select name="pdGb" id="pdGb" onchange="pdGbChange(this)" required="required" data-valid-name="기간/일수구분">
  192. <option value="P">기간</option>
  193. <option value="D">일수</option>
  194. </select>
  195. </td>
  196. <th class="availDaysArea">유효기간일수<em class="required" title="필수"></em></th>
  197. <td class="availDaysArea">
  198. <input type="text" name="availDays" id="availDays" class="w200" data-valid-type="numeric" data-valid-name="유효기간일수">
  199. </td>
  200. </tr>
  201. <tr>
  202. <th class="availDateTr">유효기간시작일시<em class="required" title="필수"></em></th>
  203. <td class="availDateTr">
  204. <input type="hidden" name="availStdt" id="availStdt" data-valid-name="유효기간시작일시">
  205. <input type="text" class="schDate w100" name="availStDay" id="availStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  206. <select name="availStHH" id="availStHH">
  207. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  208. </select>
  209. <select name="availStMM" id="availStMM">
  210. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  211. </select>
  212. <th class="availDateTr">유효기간종료일시<em class="required" title="필수"></em></th>
  213. <td class="availDateTr">
  214. <input type="hidden" id="availEddt" name="availEddt" data-valid-name="유효기간종료일시">
  215. <input type="text" class="schDate w100" name="availEdDay" id="availEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  216. <select name="availEdHH" id="availEdHH" onclick="fnChangeEdHH(this);">
  217. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  218. <option th:text="24시" th:value="24"></option>
  219. </select>
  220. <select name="availEdMM" id="availEdMM">
  221. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  222. </select>
  223. </td>
  224. </tr>
  225. <tr class="firstBuyTr">
  226. <th>첫구매여부<em class="required" title="필수"></em></th>
  227. <td>
  228. <select name="firstOrdYn" id="firstOrdYn" onchange="firstOrdYnChange(this)" required="required" data-valid-name="첫구매여부">
  229. <option value="Y">Y</option>
  230. <option value="N" selected="selected">N</option>
  231. </select>
  232. </td>
  233. </tr>
  234. <tr>
  235. <th class="buyDateTr">첫구매기간시작일시<em class="required" title="필수"></em></th>
  236. <td class="buyDateTr">
  237. <input type="hidden" name="buyStdt" id="buyStdt" data-valid-name="첫구매기간시작일시">
  238. <input type="text" class="schDate w100" name="buyStDay" id="buyStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  239. <select name="buyStHH" id="buyStHH">
  240. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  241. </select>
  242. <select name="buyStMM" id="buyStMM">
  243. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  244. </select>
  245. <th class="buyDateTr">첫구매기간종료일시<em class="required" title="필수"></em></th>
  246. <td class="buyDateTr">
  247. <input type="hidden" id="buyEddt" name="buyEddt" data-valid-name="첫구매기간종료일시">
  248. <input type="text" class="schDate w100" name="buyEdDay" id="buyEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  249. <select name="buyEdHH" id="buyEdHH" onclick="fnChangeEdHH(this);">
  250. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  251. <option th:text="24시" th:value="24"></option>
  252. </select>
  253. <select name="buyEdMM" id="buyEdMM">
  254. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  255. </select>
  256. </td>
  257. </tr>
  258. <tr class="custJoinTr">
  259. <th>신규회원여부<em class="required" title="필수"></em></th>
  260. <td>
  261. <select name="newCustYn" id="newCustYn" onchange="newCustYnChange(this)" required="required" data-valid-name="신규회원여부">
  262. <option value="Y">Y</option>
  263. <option value="N" selected="selected">N</option>
  264. </select>
  265. </td>
  266. </tr>
  267. <tr>
  268. <th class="custJoinDateTr">신규회원기간시작일시<em class="required" title="필수"></em></th>
  269. <td class="custJoinDateTr">
  270. <input type="hidden" name="custJoinStdt" id="custJoinStdt" data-valid-name="신규회원기간시작일시">
  271. <input type="text" class="schDate w100" name="custJoinStDay" id="custJoinStDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  272. <select name="custJoinStHH" id="custJoinStHH">
  273. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  274. </select>
  275. <select name="custJoinStMM" id="custJoinStMM">
  276. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  277. </select>
  278. <th class="custJoinDateTr">신규회원기간종료일시<em class="required" title="필수"></em></th>
  279. <td class="custJoinDateTr">
  280. <input type="hidden" id="custJoinEddt" name="custJoinEddt" data-valid-name="신규회원기간종료일시">
  281. <input type="text" class="schDate w100" name="custJoinEdDay" id="custJoinEdDay" maxlength="10" th:value="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}"/>
  282. <select name="custJoinEdHH" id="custJoinEdHH" onclick="fnChangeEdHH(this);">
  283. <option th:if="${hhList}" th:each="oneData , status : ${hhList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  284. <option th:text="24시" th:value="24"></option>
  285. </select>
  286. <select name="custJoinEdMM" id="custJoinEdMM">
  287. <option th:if="${mmList}" th:each="oneData , status : ${mmList}" th:text="${oneData.cdNm}" th:value="${oneData.cd}"></option>
  288. </select>
  289. </td>
  290. </tr>
  291. <tr class="dcCdCheck1">
  292. <th>총발행제한수량<em class="required" title="필수"></em></th>
  293. <td>
  294. <input type="text" class="w200" name="totPubLimitQty" id="totPubLimitQty" value="0" required="required" data-valid-name="총발행제한수량" data-valid-type="numeric" style="text-align: right;">개
  295. <label class="chkBox" id="chkBoxTotPubQty"><input type="checkbox" id="chkNoLimitTotPubLimitQty"/>제한없음</label>
  296. </td>
  297. <th>1인당발행제한수량<em class="required" title="필수"></em></th>
  298. <td>
  299. <input type="text" class="w200" name="custPubLimitQty" id="custPubLimitQty" value="1" required="required" data-valid-name="1인당발행제한수량" data-valid-type="numeric" style="text-align: right;">개
  300. <label class="chkBox" id="chkBoxCustPubQty"><input type="checkbox" id="chkNoLimitCustPubLimitQty"/>제한없음</label>
  301. </td>
  302. </tr>
  303. <tr>
  304. <th class="dcCdCheck2">1회발행수량<em class="required" title="필수"></em></th>
  305. <td class="dcCdCheck2">
  306. <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;">개
  307. </td>
  308. <th class="downAblArea">다운로드가능여부<em class="required" title="필수"></em></th>
  309. <td class="downAblArea">
  310. <select name="downAblYn" id="downAblYn" required="required" data-valid-name="다운로드가능여부">
  311. <option value="Y">Y</option>
  312. <option value="N" selected="selected">N</option>
  313. </select>
  314. <em style="color:red"> *상품상세 페이지내</em>
  315. </td>
  316. </tr>
  317. <tr class="payTypeTr" style="display: none;">
  318. <th>결제수단</th>
  319. <td colspan="5">
  320. <label class="chkBox" th:if="${payTypeList}" th:each="oneData, status : ${payTypeList}">
  321. <input type="checkbox" name="payTypeArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}" checked="checked"/>
  322. </label>
  323. </td>
  324. </tr>
  325. <tr>
  326. <th class="linkAfArea">제휴채널</th>
  327. <td colspan="1" class="linkAfArea">
  328. <!-- 수정시 프로모션명 입력 : before -->
  329. <div class="padding10" style="display: inline-block; width: 100%;">
  330. <!--<span>공급업체 설정</span>-->
  331. <div class="padding10 inner-tb-solid">
  332. <span class="buttonSpan">
  333. <button type="button" class="btn btnRight btn-success btn-lg" id="btnAddAf">제휴채널 추가</button>
  334. <button type="button" class="btn btnRight btn-success btn-lg"id="btnDeleteAf">선택삭제</button>
  335. </span> <br />
  336. <div id="afChannelList" style="width: 100%; height: 200px;" class="ag-theme-balham"></div>
  337. </div>
  338. </div>
  339. </td>
  340. </tr>
  341. <tr>
  342. <th>쿠폰상태<em class="required" title="필수"></em></th>
  343. <td>
  344. <label class="rdoBtn" th:if="${cpnStatList}" th:each="oneData, status : ${cpnStatList}" >
  345. <input type="radio" id="disCpnStat" name="disCpnStat" th:value="${oneData.cd}" th:text="${oneData.cdNm}" data-valid-name="상태" disabled="disabled"/>
  346. </label>
  347. <input type="hidden" id="cpnStat" name="cpnStat"/>
  348. </td>
  349. </tr>
  350. </tbody>
  351. </table>
  352. </div>
  353. </li>
  354. <!-- 쿠폰적용대상-->
  355. <li class="tab" id="coupontab2" >
  356. <div class="panelStyle">
  357. <div class="inner-panelContent">
  358. <div class="panelContent">
  359. <div class="panelBar">
  360. <h4>적용 대상 상품 등록</h4>
  361. </div>
  362. <table class="frmStyle">
  363. <colgroup>
  364. <col style="width:15%;">
  365. <col style="width:85%;">
  366. </colgroup>
  367. <tbody>
  368. <tr>
  369. <th>적용범위<em class="required" title="필수"></em></th>
  370. <td>
  371. <input type="hidden" name="applyScope" id="applyScope" required="required" data-valid-name="적용범위">
  372. <label class="rdoBtn"> <input type="radio" name="rdoApplyScope" value="A"/>전체</label>
  373. <label class="rdoBtn"> <input type="radio" name="rdoApplyScope" value="I"/>개별</label>
  374. </td>
  375. </tr>
  376. <tr class="supplyTrArea">
  377. <th>공급처</th>
  378. <td>
  379. <div class="padding10 inner-tb-solid">
  380. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSupplyAdd">공급처 추가</button>
  381. <button type="button" class="btn btnRight btn-success btn-lg" id="btnSupplyDel">선택삭제</button>
  382. <br/>
  383. <div id="supplyGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  384. </div>
  385. </td>
  386. </tr>
  387. <tr class="brandTrArea">
  388. <th>브랜드</th>
  389. <td>
  390. <div class="padding10 inner-tb-solid">
  391. <button type="button" class="btn btnRight btn-success btn-lg" id="btnBrandAdd">브랜드 추가</button>
  392. <button type="button" class="btn btnRight btn-success btn-lg" id="btnBrandDel">선택삭제</button>
  393. <br/>
  394. <div id="brandGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  395. </div>
  396. </td>
  397. </tr>
  398. <tr class="categoryTrArea">
  399. <th>카테고리</th>
  400. <td>
  401. <div class="padding10 inner-tb-solid">
  402. <button type="button" class="btn btnRight btn-success btn-lg" id="btnCateAdd">카테고리 추가</button>
  403. <button type="button" class="btn btnRight btn-success btn-lg" id="btnCateDel">선택삭제</button>
  404. <br/>
  405. <div id="cateGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  406. </div>
  407. </td>
  408. </tr>
  409. <tr class="goodsTrArea">
  410. <th>적용상품</th>
  411. <td>
  412. <div class="padding10 inner-tb-solid">
  413. <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsAdd">상품 추가</button>
  414. <button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDel">선택삭제</button>
  415. <br/>
  416. <div id="goodsGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  417. </div>
  418. </td>
  419. </tr>
  420. </tbody>
  421. </table>
  422. </div>
  423. </div>
  424. <div class="inner-panelContent exceptArea">
  425. <div class="panelContent">
  426. <div class="panelBar">
  427. <h4>제외 대상 상품 등록</h4>
  428. </div>
  429. <table class="frmStyle">
  430. <colgroup>
  431. <col style="width:15%;">
  432. <col style="width:85%;">
  433. </colgroup>
  434. <tbody>
  435. <tr>
  436. <th>제외상품</th>
  437. <td>
  438. <div class="padding10 inner-tb-solid">
  439. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExcepGoodsAdd">제외상품 추가</button>
  440. <button type="button" class="btn btnRight btn-success btn-lg" id="btnExcepGoodsDel">선택삭제</button>
  441. <br/>
  442. <div id="excepGoodsGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  443. </div>
  444. </td>
  445. </tr>
  446. </tbody>
  447. </table>
  448. </div>
  449. </div>
  450. </div>
  451. </li>
  452. <!-- //쿠폰적용대상끝-->
  453. <!-- 입점업체분담율-->
  454. <li class="tab" id="coupontab3">
  455. <div class="panelStyle">
  456. <div class="inner-panelContent">
  457. <div class="panelContent">
  458. <div class="panelBar">
  459. <h4>업체 분담율</h4>
  460. </div>
  461. <table class="frmStyle">
  462. <colgroup>
  463. <col style="width:15%;">
  464. <col style="width:85%;">
  465. </colgroup>
  466. <tbody>
  467. <tr>
  468. <th>업체 분담율</th>
  469. <td>
  470. <div class="padding10 inner-tb-solid">
  471. <button type="button" class="btn btnRight btn-success btn-lg" id="btnAddApplyBurden">업체추가</button>
  472. <button type="button" class="btn btnRight btn-success btn-lg" id="btnDelApplyBurden">선택삭제</button>
  473. <br/>
  474. <div id="inComGridList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
  475. </div>
  476. </td>
  477. </tr>
  478. </tbody>
  479. </table>
  480. </div>
  481. </div>
  482. </div>
  483. </li>
  484. <!-- //입점업체분담끝-->
  485. <!-- 난수 및 네임쿠폰 설정 -->
  486. <li class="tab" id="coupontab4">
  487. <div class="panelStyle">
  488. <span>
  489. <div id="randomCpnList" style="width: 100%; height: 500px" class="ag-theme-balham"></div>
  490. </span>
  491. </div>
  492. </li>
  493. <!-- //난수 및 네임쿠폰 설정-->
  494. <!-- 선착순 쿠폰 설정 START -->
  495. <li class="tab" id="coupontab5">
  496. <div class="panelStyle">
  497. <span class="limitedTimeCpnSpan">
  498. <button type="button" class="btn btnRight btn-success btn-lg" id="btnAddLimitedTimeCpnRow">행추가</button>
  499. <button type="button" class="btn btnRight btn-success btn-lg" id="btnDelLimitedTimeCpnRow">행삭제</button>
  500. </span>
  501. <br/>
  502. <div id="limitedTimeCpnList" style="width: 100%; height: 500px" class="ag-theme-balham"></div>
  503. </div>
  504. </li>
  505. <!-- //선착순 쿠폰 설정 END -->
  506. </ul>
  507. </div>
  508. <div class="mdPopBtnB aR">
  509. <button type="button" class="btn btn-info btn-lg" onclick="fnPubCustListPopUp();" th:if="${mode == 'U'}">발급받은회원</button>
  510. <button type="button" class="btn btn-info btn-lg" onclick="fnCustomerIssuePopUp();" th:if="${mode == 'U' and cpnDetail.dcCdGb == 'G233_00' and cpnDetail.cpnStat=='G232_11'}">쿠폰발행</button> <!-- 난수유형과 시리얼 유형에서는 쿠폰발행기능 X -->
  511. <button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponSave" onclick="fnCouponCreate();" th:text="${mode == 'N' ? '등록' : '수정'}"></button>
  512. <button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnChangeStatIng" style="display: none;">진행</button>
  513. <button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponDelete" style="display: none;">삭제</button>
  514. <button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponStop" style="display: none;">중지</button>
  515. <button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponEnd" style="display: none;">종료</button>
  516. </div>
  517. </form>
  518. </div>
  519. </div>
  520. </div>
  521. <script th:inline="javascript">
  522. /*<![CDATA[*/
  523. // 상세조회 리스트
  524. var mode = [[${mode}]];
  525. var cpnDetail = [[${cpnDetail}]];
  526. var cpnDtlRefvalSupplyCompList = [[${cpnDtlRefvalSupplyCompList}]];
  527. var cpnDtlRefvalApplyGoodsList = [[${cpnDtlRefvalApplyGoodsList}]];
  528. var cpnDtlRefvalCateList = [[${cpnDtlRefvalCateList}]];
  529. var cpnDtlRefvalBrandList = [[${cpnDtlRefvalBrandList}]];
  530. var cpnDtlRefvalExceptGoodsList = [[${cpnDtlRefvalExceptGoodsList}]];
  531. var cpnDtlBurdenList = [[${cpnDtlBurdenList}]];
  532. var randomCpnList = [[${randomCpnList}]];
  533. var issueCnt = [[${issueCnt}]];
  534. var cpnCustGbList = [[${cpnCustGbList}]];
  535. var cpnCustGradeList = [[${cpnCustGradeList}]];
  536. var cpnPayTypeList = [[${cpnPayTypeList}]];
  537. var limitedTimeCpnList = [[${limitedTimeCpnList}]];
  538. var afChannelList = [[${afChannelList}]];
  539. // 공통코드 리스트
  540. var ibSupplyComList = gagajf.convertToArray([[${ibSupplyCompList}]]);
  541. var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
  542. var cateGbList = gagajf.convertToArray([[${cateGbList}]]);
  543. var delYnList = { "Y":"Yes", "N":"No" };
  544. var siteCdList = gagajf.convertToArray([[${siteCdList}]]);
  545. var selfBrandList = gagajf.convertToArray([[${selfBrandList}]]);
  546. let channelName = gagajf.convertToArray([[${channelList}]]);
  547. // ag-grid 공급처 컬럼
  548. var supplyColumnDefs = [
  549. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  550. { headerName : "공급업체코드" , field: "supplyCompCd" , width:150, cellClass: 'text-center'} ,
  551. { headerName: "공급업체명" , field: "supplyCompNm" , width:150, cellClass: 'text-center'},
  552. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
  553. { headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  554. ];
  555. // ag-grid 브랜드 컬럼
  556. var brandSelColumnDefs = [
  557. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  558. { headerName : "브랜드ID" , field: "brandCd" , width: 120, cellClass : 'text-center'} ,
  559. { headerName : "브랜드명" , field: "brandEnm" , width: 120, cellClass: 'text-center'} ,
  560. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
  561. { headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  562. ];
  563. // ag-grid 카테고리 컬럼
  564. var cateSelColumnDefs = [
  565. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  566. { headerName: "사이트" , field: "siteCd" , width: 100 , cellClass: 'text-center' ,
  567. cellEditor: 'agRichSelectCellEditor',
  568. cellEditorParams: { values: gagaAgGrid.extractValues(siteCdList) },
  569. valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteCdList, params.value); },
  570. valueParser: function (params) { return gagaAgGrid.lookupKey(siteCdList, params.newValue); }
  571. },
  572. { headerName: "카테고리구분" , field: "cateGb" , width: 100 , cellClass: 'text-center' ,
  573. cellEditor: 'agRichSelectCellEditor',
  574. cellEditorParams: { values: gagaAgGrid.extractValues(cateGbList) },
  575. valueFormatter: function (params) { return gagaAgGrid.lookupValue(cateGbList, params.value); },
  576. valueParser: function (params) { return gagaAgGrid.lookupKey(cateGbList, params.newValue); }
  577. },
  578. { headerName: "카테고리코드" , field: "cateNo" , width: 100 , cellClass: 'text-center'} ,
  579. { headerName: "카테고리명" , field: "cateNm" , width: 120 , cellClass: 'text-center'},
  580. { headerName: "이월/정상구분" , field: "formalGb" , width: 120 , cellClass: 'text-center',
  581. cellEditor: 'agRichSelectCellEditor',
  582. cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
  583. valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
  584. valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
  585. },
  586. { headerName: "브랜드명" , field:"brandCd" , width:150, cellClass: "text-center", required: true ,
  587. editable: true, cellEditor: 'agRichSelectCellEditor',
  588. cellEditorParams: { values: gagaAgGrid.extractValues(selfBrandList) },
  589. valueFormatter: function (params) { return gagaAgGrid.lookupValue(selfBrandList, params.value); },
  590. valueParser: function (params) { return gagaAgGrid.lookupKey(selfBrandList, params.newValue); }
  591. },
  592. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
  593. { headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  594. ];
  595. // ag-grid 적용상품 컬럼
  596. var goodsSelColumnDefs = [
  597. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  598. { headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
  599. { headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
  600. { headerName: "상품명" , field: "goodsNm" , width: 250 , cellClass: 'text-center'} ,
  601. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
  602. { headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  603. ];
  604. // ag-grid 제외상품 컬럼
  605. var excepGoodsColumnDefs = [
  606. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  607. { headerName: "상품구분" , field: "goodsGb" , width: 100, cellClass: 'text-center'} ,
  608. { headerName: "Product ID" , field: "goodsCd" , width: 120, cellClass: 'text-center'},
  609. { headerName: "상품명" , field: "goodsNm" , width: 250 , cellClass: 'text-center'} ,
  610. { headerName: "쿠폰대상일련번호" , field: "cpnRefvalSq" , width: 120 , cellClass: 'text-center' , hide:true},
  611. { headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  612. ];
  613. // ag-grid 입점업체분담율 컬럼
  614. var columnDefs = [
  615. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  616. { headerName: "입점업체코드" , field:"supplyCompCd" , width:150, cellClass:"text-center"} ,
  617. { headerName: "입점업체명" , field: "supplyCompNm" , width: 120 , cellClass: 'text-center'},
  618. { headerName: "쿠폰분담율(%)", field:"burdenRate" , width:150, cellClass: "text-center" , required: true
  619. ,valueFormatter: function(params) {
  620. if(params.value && params.value > 0) {
  621. if(params.value > 100){
  622. mcxDialog.alert('할인율은 100이하로 설정해주세요.');
  623. params.data.burdenRate = '0';
  624. return '0';
  625. }
  626. return params.value.addComma();
  627. } else {
  628. return '0';
  629. }
  630. },
  631. cellEditorParams: { maxlength: 4, validType: 'numeric'}
  632. } ,
  633. { headerName: "쿠폰번호" , field: "cpnId" , width: 120 , cellClass: 'text-center' , hide:true},
  634. { headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  635. ];
  636. // ag-grid 시리얼 및 난수 리스트
  637. var randomCouponDefs = [
  638. { headerName : "생성쿠폰키워드" , field: "rdCpnNm" , width:150, cellClass: 'text-center'} ,
  639. { headerName: "지급고객번호" , field: "custNo" , width:150, cellClass: 'text-center'},
  640. { headerName: "고객아이디" , field: "custId" , width:150, cellClass: 'text-center'},
  641. { headerName: "고객명" , field: "custNm" , width:150, cellClass: 'text-center'},
  642. { headerName: "지급일" , field: "regDt" , width:150, cellClass: 'text-center'},
  643. { headerName: "쿠폰사용일" , field: "usedDt" , width:150, cellClass: 'text-center'}
  644. ];
  645. // 선착순 쿠폰 리스트
  646. var limitedTimeCpnDefs = [
  647. {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  648. { headerName: "쿠폰시퀀스", field: "cpnId", width: 150, cellClass: 'text-center'}, //, hide: true
  649. { headerName: "선착순쿠폰명" , field: "limitCpnNm" , width: 200, cellClass: 'text-center'
  650. ,cellEditorParams: { maxlength: 20}
  651. } ,
  652. { headerName: "시작일" , field: "downStDate" , width: 200, cellClass: 'text-center'
  653. ,cellEditor: 'datePicker'
  654. ,cellEditorParams: { maxlength: 10, required: true }
  655. },
  656. { headerName: "시작시간" , field: "downStTime" , width: 200, cellClass: 'text-center'
  657. ,cellEditor: 'dateTimer'
  658. ,cellEditorParams: { maxlength: 8, required: true }
  659. },
  660. { headerName: "종료일" , field: "downEdDate" , width: 200 , cellClass: 'text-center'
  661. ,cellEditor: 'datePicker'
  662. ,cellEditorParams: { maxlength: 10, required: true }
  663. } ,
  664. { headerName: "종료시간" , field: "downEdTime" , width: 200 , cellClass: 'text-center'
  665. ,cellEditor: 'dateTimer'
  666. ,cellEditorParams: { maxlength: 8, required: true }
  667. } ,
  668. { headerName: "다운로드가능수량" , field: "downLimitQty" , width: 150 , cellClass: 'text-center'
  669. ,cellEditorParams: { maxlength: 4, validType: 'numeric'}
  670. },
  671. { headerName: "선착순시퀀스", field: "limitCpnId", width: 150, cellClass: 'text-center' , hide: true}
  672. ,{ headerName: "삭제여부" , field: "delYn" , width: 120 , cellClass: 'text-center' , hide:true}
  673. ,{headerName: "시작일시", field: "downStdt", width: 150, cellClass: 'text-center' , hide:true}
  674. ,{headerName: "종료일시", field: "downEddt", width: 150, cellClass: 'text-center' , hide:true}
  675. ];
  676. // 제휴채널 리스트
  677. let columnAfDefs = [
  678. {width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
  679. {headerName: "제휴채널코드", field: "afLinkCd", width: 100, cellClass: 'text-center'},
  680. {
  681. headerName: "제휴채널명", field: "afLinkNm", width: 180,
  682. cellRenderer: function(params) {
  683. return '<a href="javascript:void(0);">' + params.value + '</a>';
  684. }
  685. },
  686. {headerName: "상위제휴채널", field: "afChannel", width: 120, cellClass: 'text-center',
  687. cellEditor: 'agRichSelectCellEditor',
  688. cellEditorParams: { values: gagaAgGrid.extractValues(channelName) },
  689. valueFormatter: function (params) { return gagaAgGrid.lookupValue(channelName, params.value); },
  690. valueParser: function (params) { return gagaAgGrid.lookupKey(channelName, params.newValue); }
  691. }
  692. ];
  693. var supplyGridOptions = gagaAgGrid.getGridOptions(supplyColumnDefs);
  694. var brandGridOptions = gagaAgGrid.getGridOptions(brandSelColumnDefs);
  695. var cateGridOptions = gagaAgGrid.getGridOptions(cateSelColumnDefs);
  696. var goodsGridOptions = gagaAgGrid.getGridOptions(goodsSelColumnDefs);
  697. var excepGoodsGridOptions = gagaAgGrid.getGridOptions(excepGoodsColumnDefs);
  698. var inComGridOptions = gagaAgGrid.getGridOptions(columnDefs);
  699. var randomCouponGridOptions = gagaAgGrid.getGridOptions(randomCouponDefs);
  700. var limitedTimeCpnGridOptions = gagaAgGrid.getGridOptions(limitedTimeCpnDefs);
  701. // 제휴채널 그리드 설정
  702. var afLinkOptions = gagaAgGrid.getGridOptions(columnAfDefs);
  703. afLinkOptions.rowSelection = "multiple";
  704. afLinkOptions.suppressRowClickSelection = true;
  705. // 적용상품
  706. supplyGridOptions.rowSelection = "multiple";
  707. brandGridOptions.rowSelection = "multiple";
  708. cateGridOptions.rowSelection = "multiple";
  709. goodsGridOptions.rowSelection = "multiple";
  710. excepGoodsGridOptions.rowSelection = "multiple";
  711. // 입점업체분담율
  712. inComGridOptions.stopEditingWhenGridLosesFocus = true;
  713. inComGridOptions.defaultColDef.editable = true;
  714. inComGridOptions.rowSelection = "multiple";
  715. // 선착순쿠폰
  716. limitedTimeCpnGridOptions.defaultColDef.editable = true;
  717. limitedTimeCpnGridOptions.rowSelection = "multiple";
  718. // 선착순 쿠폰 종료시간 초 59로 변경
  719. limitedTimeCpnGridOptions.onCellValueChanged = function (event){
  720. if (event.colDef.field == "downEdTime"){
  721. var temp = event.data.downEdTime.replaceAll(":","");
  722. var hh = temp.substr(0,2);
  723. var mm = temp.substr(2,2);
  724. event.data.downEdTime = hh+':'+mm+':'+'59';
  725. limitedTimeCpnGridOptions.api.updateRowData({update: [event.data]});
  726. return;
  727. }
  728. }
  729. // 삭제버튼 클릭시
  730. // 1.공급업체
  731. $('#btnSupplyDel').on('click', function() {
  732. supplyGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(supplyGridOptions)});
  733. });
  734. // 2.브랜드
  735. $('#btnBrandDel').on('click', function() {
  736. brandGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(brandGridOptions)});
  737. });
  738. // 3.카테고리
  739. $('#btnCateDel').on('click', function() {
  740. cateGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(cateGridOptions)});
  741. });
  742. // 4.적용상품
  743. $('#btnGoodsDel').on('click', function() {
  744. goodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(goodsGridOptions)});
  745. });
  746. // 5.제외상품
  747. $('#btnExcepGoodsDel').on('click', function() {
  748. excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(excepGoodsGridOptions)});
  749. });
  750. // 6.업체분담율 선택삭제 버튼 클릭시
  751. $('#CouponForm #btnDelApplyBurden').on('click', function() {
  752. inComGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(inComGridOptions)});
  753. });
  754. // 7.선착순
  755. $('#btnDelLimitedTimeCpnRow').on('click', function() {
  756. limitedTimeCpnGridOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(limitedTimeCpnGridOptions)});
  757. });
  758. // 제휴채널 선택삭제 버튼 클릭시
  759. $('#btnDeleteAf').on('click', function() {
  760. afLinkOptions.api.updateRowData({remove:gagaAgGrid.selectedRowData(afLinkOptions)});
  761. });
  762. // 선착순 쿠폰 행추가
  763. $('#btnAddLimitedTimeCpnRow').on('click', function() {
  764. var data = { cpnId: 1 ,limitCpnNm: null, downStDate: _today, downStTime: '00:00:00', downEdDate: _today, downEdTime: '23:59:59', downLimitQty: null, limitCpnId: null, delYn: 'N' };
  765. gagaAgGrid.addRowData(limitedTimeCpnGridOptions, data, "limitCpnNm");
  766. });
  767. // 업체분담율 추가 버튼 클릭시
  768. $('#CouponForm #btnAddApplyBurden').on('click', function() {
  769. cfnOpenCompanyListPopup("fnSetPopupApplyBurdenInfo" ,"M");
  770. });
  771. // 분담업체율 설정 / 업체 추가 콜백함수
  772. var fnSetPopupApplyBurdenInfo = function(result) {
  773. // 기존 리스트 데이터 for
  774. for(let i = 0 ; i < result.length ; i++) {
  775. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(inComGridOptions); // 받아온 모든 데이터
  776. // 받아온 data for
  777. for(let j = 0 ; j < gridListValue.length ; j++) {
  778. // 동일한 data는 추가하지 않음
  779. if(gridListValue[j].supplyCompCd == result[i].supplyCompCd) { addChk = false; } // 중복체크
  780. }
  781. // 중복되지 않은 데이터 리스트에 추가
  782. if(addChk) {
  783. gagaAgGrid.addRowData(inComGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm, "delYn" : result[i].delYn});
  784. }
  785. }
  786. };
  787. // 선착순 쿠폰 체크박스 클릭시
  788. $("#CouponForm #limitedTimeCpnBox").bind('click', function (){
  789. var chkBox= document.getElementById('limitedTimeCpnYn').checked;
  790. if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 탭을 숨겨
  791. $("#CouponForm .limitedTimeCpnTab").show();
  792. $("#limitedTimeCpnYn").val("Y");
  793. $("#CouponForm #totPubLimitQty").val(0);
  794. $("#CouponForm input[id=chkBoxTotPubQty]").prop("disabled", true);
  795. $("#CouponForm input[id=totPubLimitQty]").prop("disabled", true);
  796. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").addClass("checked");
  797. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('checked', true);
  798. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', true);
  799. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', true);
  800. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', true);
  801. //상품상세 페이지내 다운로드 가능여부 N으로
  802. $('#CouponForm select[name=downAblYn]').val('N').prop("selected", true);
  803. $("#CouponForm select[name=downAblYn]").attr("readonly", true);
  804. $("#CouponForm select[name=downAblYn]").attr("disabled", true);
  805. }else{ //false 체크가 안되어있었는데 체크됐어 -> 탭을 보여줘
  806. $("#CouponForm .limitedTimeCpnTab").hide();
  807. $("#limitedTimeCpnYn").val("N");
  808. $("#CouponForm #totPubLimitQty").val(0);
  809. $("#CouponForm input[id=chkBoxTotPubQty]").prop("disabled", false);
  810. $("#CouponForm input[id=totPubLimitQty]").prop("disabled", false);
  811. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").removeClass("checked");
  812. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('checked', false);
  813. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', false);
  814. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', false);
  815. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', false);
  816. //상품상세 페이지내 다운로드 가능여부 Y으로
  817. // $('#CouponForm select[name=downAblYn]').val('Y').prop("selected", false);
  818. $("#CouponForm select[name=downAblYn]").attr("readonly", false);
  819. $("#CouponForm select[name=downAblYn]").attr("disabled", false);
  820. }
  821. });
  822. // 종료시간 클릭시
  823. var fnChangeEdHH = function (obj){
  824. var selectId = obj.id;
  825. var changeId = "";
  826. if(selectId == "downEdHH"){
  827. changeId = "downEdMM";
  828. }else if(selectId == "availEdHH"){
  829. changeId = "availEdMM";
  830. }else if(selectId == "buyEdHH"){
  831. changeId = "buyEdMM";
  832. }else{
  833. changeId = "custJoinEdMM";
  834. }
  835. if(obj.value == 24) {
  836. $("#CouponForm #"+changeId+" option").hide();
  837. $('#CouponForm #'+changeId+' option:first').show().prop("selected", true);
  838. } else {
  839. $("#CouponForm #"+changeId+" option").show();
  840. }
  841. };
  842. // 총발행 제한수량 -> 제한없음 처리
  843. $("#CouponForm #chkBoxTotPubQty").bind('click', function (){
  844. var chkBox= document.getElementById('chkNoLimitTotPubLimitQty').checked;
  845. var cpnStat = $('#CouponForm input:radio[name="disCpnStat"]:checked').val();
  846. if(cpnStat=='G232_10'){
  847. if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 값0 inputbox disabled 해제
  848. $("#CouponForm #totPubLimitQty").val(0);
  849. $("#CouponForm input[id=totPubLimitQty]").prop("disabled", true);
  850. $("#CouponForm input[id=totPubLimitQty]").prop("readonly", true);
  851. }else{ //false 체크가 안되어있었는데 체크됐어 -> 값0 inputbox disabled
  852. $("#CouponForm #totPubLimitQty").val(0);
  853. $("#CouponForm input[id=totPubLimitQty]").prop("disabled", false);
  854. $("#CouponForm input[id=totPubLimitQty]").prop("readonly", false);
  855. }
  856. }
  857. });
  858. // 1인당발행 제한수량 -> 제한없음 처리
  859. $("#CouponForm #chkBoxCustPubQty").bind('click', function (){
  860. var chkBox= document.getElementById('chkNoLimitCustPubLimitQty').checked;
  861. var cpnStat = $('#CouponForm input:radio[name="disCpnStat"]:checked').val();
  862. if(cpnStat=='G232_10'){
  863. if(chkBox){ //true 체크가 되어있었는데 해제됐어 -> 값0 inputbox disabled 해제
  864. $("#CouponForm #custPubLimitQty").val(0);
  865. $("#CouponForm input[id=custPubLimitQty]").prop("disabled", true);
  866. $("#CouponForm input[id=custPubLimitQty]").prop("readonly", true);
  867. }else{ //false 체크가 안되어있었는데 체크됐어 -> 값0 inputbox disabled
  868. $("#CouponForm #custPubLimitQty").val(0);
  869. $("#CouponForm input[id=custPubLimitQty]").prop("disabled", false);
  870. $("#CouponForm input[id=custPubLimitQty]").prop("readonly", false);
  871. }
  872. }
  873. });
  874. // 할인방식 할인율 일때, 할인값 체크
  875. var fnDcValOnkeyUp = function (obj){
  876. var inputName = $(obj).attr("name");
  877. var rdoDcWay = $('#CouponForm input:radio[name="rdoDcWay"]:checked').val();
  878. var dcVal = $("#CouponForm input[name="+inputName+"]").val();
  879. if(rdoDcWay == "G240_11"){
  880. if(dcVal > 100){
  881. mcxDialog.alert('할인율은 100을 넘을수 없습니다.');
  882. $("#CouponForm input[name="+inputName+"]").val('');
  883. $("#CouponForm input[name="+inputName+"]").focus();
  884. return;
  885. }
  886. }
  887. }
  888. // 할인값 동일적용
  889. $("#applySameValueBtn").bind('click change', function () {
  890. var cdPval = $("#CouponForm input[name=dcPval]").val();
  891. $("#CouponForm input[name=dcMval]").val(cdPval);
  892. $("#CouponForm input[name=dcAval]").val(cdPval);
  893. });
  894. function checkValidation2(){
  895. // 쿠폰명 체크
  896. var chkCpnNm = $('#CouponForm input[name=cpnNm]').val();
  897. if(gagajf.isNull(chkCpnNm)){
  898. mcxDialog.alert("쿠폰명을 입력해주세요.");
  899. $('#CouponForm input[name=cpnNm]').focus();
  900. return false;
  901. }
  902. // 할인금액, 할인율 체크
  903. var chkDcPval = $('#CouponForm input[name=dcPval]').val();
  904. var chkDcMval = $('#CouponForm input[name=dcMval]').val();
  905. var chkDcAval = $('#CouponForm input[name=dcAval]').val();
  906. if(gagajf.isNull(chkDcPval) || chkDcPval < 1){
  907. mcxDialog.alert("할인값(PC)을 입력해주세요.");
  908. $('#CouponForm input[name=dcPval]').focus();
  909. return false;
  910. }
  911. if(gagajf.isNull(chkDcMval) || chkDcMval < 1){
  912. mcxDialog.alert("할인값(모바일웹)을 입력해주세요.");
  913. $('#CouponForm input[name=dcMval]').focus();
  914. return false;
  915. }
  916. if(gagajf.isNull(chkDcAval) || chkDcAval < 1){
  917. mcxDialog.alert("할인값(모바일앱)을 입력해주세요.");
  918. $('#CouponForm input[name=dcAval]').focus();
  919. return false;
  920. }
  921. // 할인방식 할인율 일때, 최대할인금액 0 보다 큰지 체크
  922. if($('#CouponForm input:radio[name="rdoDcWay"]:checked').val() == 'G240_11'){
  923. if($('#CouponForm').find('input[name=maxDcAmt]').val() < 1){
  924. mcxDialog.alert("최대 할인 금액을 입력해주세요.");
  925. $('#CouponForm input[name=maxDcAmt]').focus();
  926. return false;
  927. }
  928. }
  929. if ($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val() == 'I') {
  930. // 적용대상 체크
  931. let targetCnt = 0;
  932. let target1 = gagaAgGrid.getAllRowData(supplyGridOptions);
  933. let target2 = gagaAgGrid.getAllRowData(brandGridOptions);
  934. let target3 = gagaAgGrid.getAllRowData(cateGridOptions);
  935. let target4 = gagaAgGrid.getAllRowData(goodsGridOptions);
  936. targetCnt = target1.length + target2.length + target3.length + target4.length;
  937. // 2021.08.23 브랜드 && 업체 and 조건 설정
  938. if (target1.length > 0) {
  939. if (target2.length < 1) {
  940. mcxDialog.alert("적용대상 브랜드정보를 설정해주세요.");
  941. return false;
  942. }
  943. }
  944. if (target2.length > 0) {
  945. if (target1.length < 1) {
  946. mcxDialog.alert("적용대상 업체정보를 설정해주세요.");
  947. return false;
  948. }
  949. }
  950. if(targetCnt < 1){
  951. mcxDialog.alert("적용대상을 설정해주세요.");
  952. return false;
  953. }
  954. }
  955. return true;
  956. }
  957. // 즉시할인쿠폰일때 데이터 validation 체크
  958. var checkValidation10 = function (){
  959. var stdt = $('#CouponForm #availStDay').val();
  960. var eddt = $('#CouponForm #availEdDay').val();
  961. if(gagajf.isNull(stdt)){
  962. mcxDialog.alert("유효기간 시작일시를 입력해주세요.");
  963. return false;
  964. }
  965. if(gagajf.isNull(eddt)){
  966. mcxDialog.alert("유효기간 종료일시를 입력해주세요.");
  967. return false;
  968. }
  969. if(stdt>eddt){
  970. mcxDialog.alert("시작일시가 종료일시보다 클 수 없습니다.");
  971. return false;
  972. }
  973. return true;
  974. }
  975. var checkValidation20 = function (cpnType){
  976. // 사용가능고객구분 체크박스 체크
  977. var usableCustGbCnt = $('#CouponForm input:checkbox[name=usableCustGbArr]:checked').length;
  978. if(usableCustGbCnt<1){
  979. mcxDialog.alert("사용가능 고객구분을 체크해주세요.");
  980. $('#CouponForm input:checkbox[name=usableCustGbArr]').focus();
  981. return false;
  982. }
  983. // 사용가능고객등급 체크박스 체크
  984. var usableCustGradeCnt = $('#CouponForm input:checkbox[name=usableCustGradeArr]:checked').length;
  985. if(usableCustGradeCnt<1){
  986. mcxDialog.alert("사용가능 고객등급을 체크해주세요.");
  987. $('#CouponForm input:checkbox[name=usableCustGradeArr]').focus();
  988. return false;
  989. }
  990. if($('#CouponForm select[name="pdGb"] option:selected').val() == 'D'){
  991. if(gagajf.isNull($("#availDays").val()) || $("#availDays").val() < 1){
  992. mcxDialog.alert("유효기간 일수를 입력해주세요.");
  993. $('#CouponForm input[name=availDays]').focus();
  994. return false;
  995. }
  996. }
  997. //다운로드일시 validation 체크
  998. var downFromDate = $('#CouponForm input[name=downStDay]').val();
  999. var downToDate = $('#CouponForm input[name=downEdDay]').val();
  1000. if (gagajf.isNull(downFromDate) || gagajf.isNull(downToDate)) {
  1001. mcxDialog.alertC("다운로드 시작일자와 종료일자를 입력하세요.", {
  1002. sureBtnText: "확인",
  1003. sureBtnClick: function() {
  1004. $('#CouponForm input[name=downStDay]').focus();
  1005. }
  1006. });
  1007. return false;
  1008. }
  1009. if (downFromDate > downToDate) {
  1010. mcxDialog.alertC("다운로드 시작일자는 종료일자 보다 클 수 없습니다.", {
  1011. sureBtnText: "확인",
  1012. sureBtnClick: function() {
  1013. $('#CouponForm input[name=downEdDay]').focus();
  1014. }
  1015. });
  1016. return false;
  1017. }
  1018. //신규가입 지급한다면 validation 체크
  1019. if( $('#newCustYn option:selected').val() == "Y" ){
  1020. var fromDate = $('#CouponForm input[name=custJoinStDay]').val();
  1021. var toDate = $('#CouponForm input[name=custJoinEdDay]').val();
  1022. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  1023. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  1024. sureBtnText: "확인",
  1025. sureBtnClick: function() {
  1026. $('#CouponForm input[name=custJoinStDay]').focus();
  1027. }
  1028. });
  1029. return false;
  1030. }
  1031. if (fromDate > toDate) {
  1032. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  1033. sureBtnText: "확인",
  1034. sureBtnClick: function() {
  1035. $('#CouponForm input[name=custJoinEdDay]').focus();
  1036. }
  1037. });
  1038. return false;
  1039. }
  1040. }
  1041. // 첫구매 지급하면 validation 체크
  1042. if( $('#firstOrdYn option:selected').val() == "Y" ){
  1043. var fromDate = $('#CouponForm input[name=buyStDay]').val();
  1044. var toDate = $('#CouponForm input[name=buyEdDay]').val();
  1045. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  1046. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  1047. sureBtnText: "확인",
  1048. sureBtnClick: function() {
  1049. $('#CouponForm input[name=buyStDay]').focus();
  1050. }
  1051. });
  1052. return false;
  1053. }
  1054. if (fromDate > toDate) {
  1055. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  1056. sureBtnText: "확인",
  1057. sureBtnClick: function() {
  1058. $('#CouponForm input[name=buyEdDay]').focus();
  1059. }
  1060. });
  1061. return false;
  1062. }
  1063. }
  1064. // 할인율 validation 체크 (100을 넘길수없음)
  1065. if($('#dcWay').val() == 'G240_11') {
  1066. if($('#dcPval').val() > 100) {
  1067. mcxDialog.alert('PC할인율은 100을 초과할수없습니다.');
  1068. $('#dcPval').focus();
  1069. return false;
  1070. } else if( $('#dcMval').val() > 100) {
  1071. mcxDialog.alert('모바일(웹)할인율은 100을 초과할수없습니다.');
  1072. $('#dcMval').focus();
  1073. return false;
  1074. } else if( $('#dcAval').val() > 100) {
  1075. mcxDialog.alert('모바일(앱)할인율은 100을 초과할수없습니다.');
  1076. $('#dcAval').focus();
  1077. return false;
  1078. }
  1079. }
  1080. // 할인쿠폰 유형에 따른 총 발행수량 수정 (주문서 쿠폰이고 난수쿠폰일 경우)
  1081. if($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_20") {
  1082. if($("#CouponForm input[name=randomCpnQty]").val() == "" || $("#CouponForm input[name=randomCpnQty]").val() < 1) {
  1083. mcxDialog.alert('쿠폰의 발급 수량을 입력해주세요.');
  1084. $("#CouponForm input[name=randomCpnQty]").focus();
  1085. return false;
  1086. }
  1087. if($("#CouponForm input[name=randomCpnQty]").val() > 10000) {
  1088. mcxDialog.alert('쿠폰의 발급 수량은 10000장을 초과할 수 없습니다.');
  1089. $("#CouponForm input[name=randomCpnQty]").focus();
  1090. return false;
  1091. }
  1092. } else if ($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_10") { // 주문서 쿠폰이고 시리얼 유형일 경우
  1093. if($("#CouponForm input[name=serialCpnNm]").val().length > 10) {
  1094. mcxDialog.alert('시리얼쿠폰키워드는 10글자를 넘을 수 없습니다.');
  1095. $("#CouponForm input[name=serialCpnNm]").focus();
  1096. return false;
  1097. }
  1098. if($("#CouponForm input[name=serialCpnQty]").val() == "" || $("#CouponForm input[name=serialCpnQty]").val() < 1) {
  1099. mcxDialog.alert('쿠폰의 발급 수량을 입력해주세요.');
  1100. $("#CouponForm input[name=serialCpnQty]").focus();
  1101. return false;
  1102. }
  1103. if($("#CouponForm input[name=randomCpnQty]").val() > 10000) {
  1104. mcxDialog.alert('쿠폰의 발급 수량은 10000장을 초과할 수 없습니다.');
  1105. $("#CouponForm input[name=serialCpnQty]").focus();
  1106. return false;
  1107. }
  1108. } else if ($('#CouponForm #cpnType').val() == "G230_11" && $("#limitedTimeCpnYn").val() == "Y") { // 상품쿠폰이고 선착순쿠폰 체크되어 있을때
  1109. let cpnData = gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions);
  1110. if(cpnData.length < 1){
  1111. mcxDialog.alert("선착순 쿠폰을 설정해주세요.");
  1112. return false;
  1113. }else{
  1114. for(i=0; i<cpnData.length; i++){
  1115. if(gagajf.isNull(cpnData[i].limitCpnNm)){
  1116. mcxDialog.alert(i+1 + "번 행의 선착순 쿠폰명을 입력해주세요.");
  1117. return false;
  1118. }
  1119. if(gagajf.isNull(cpnData[i].downStDate)){
  1120. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드시작일을 입력해주세요.");
  1121. return false;
  1122. }
  1123. if(gagajf.isNull(cpnData[i].downEdDate)){
  1124. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드시작일을 입력해주세요.");
  1125. return false;
  1126. }
  1127. if(gagajf.isNull(cpnData[i].downStTime)){
  1128. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드시작일을 입력해주세요.");
  1129. return false;
  1130. }
  1131. if(gagajf.isNull(cpnData[i].downEdTime)){
  1132. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드종료일을 입력해주세요.");
  1133. return false;
  1134. }
  1135. if(gagajf.isNull(cpnData[i].downLimitQty)){
  1136. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드가능수량을 입력해주세요.");
  1137. return false;
  1138. }else{
  1139. if(cpnData[i].downLimitQty<1){
  1140. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드가능수량을 1개이상 입력해주세요.");
  1141. return false;
  1142. }
  1143. }
  1144. }
  1145. limitedTimeCpnGridOptions.api.setRowData(cpnData);
  1146. }
  1147. }
  1148. var chkLimitCpnCnt = document.getElementById('chkNoLimitTotPubLimitQty').checked;
  1149. if(!chkLimitCpnCnt){
  1150. let cnt = $("#CouponForm").find("[name=totPubLimitQty]").val();
  1151. if(cnt < 1){
  1152. mcxDialog.alert("총발행 제한수량은 0보다 커야합니다.");
  1153. return false;
  1154. }
  1155. }
  1156. var chkCustLimitCpnCnt = document.getElementById('chkNoLimitCustPubLimitQty').checked;
  1157. if(!chkCustLimitCpnCnt){
  1158. let cnt = $("#CouponForm").find("[name=custPubLimitQty]").val();
  1159. if(cnt < 1){
  1160. mcxDialog.alert("1인당 발행 제한수량은 0보다 커야합니다.");
  1161. return false;
  1162. }
  1163. }
  1164. var chkIssueCnt = $("#CouponForm").find("[name=onePubQty]").val();
  1165. if(chkIssueCnt < 1){
  1166. mcxDialog.alert("1회발행 제한수량은 0보다 커야합니다.");
  1167. return false;
  1168. }
  1169. return true;
  1170. }
  1171. // 분담율 합 체크
  1172. var fnBurdenValueCheck = function (){
  1173. let burdenData = gagaAgGrid.getAllRowData(inComGridOptions);
  1174. let totalValue = 0;
  1175. $.each(burdenData, function(idx, item) {
  1176. totalValue += parseInt(item.burdenRate);
  1177. });
  1178. if(totalValue > 100) {
  1179. mcxDialog.alert("업체분담율의 합이 100을 넘을수 없습니다.");
  1180. return false;
  1181. }
  1182. return true;
  1183. };
  1184. // 쿠폰 등록
  1185. function fnCouponCreate(){
  1186. // 필수값들 셋팅
  1187. setReqValue();
  1188. // 데이터 validation 체크
  1189. if(!checkValidation2()) {
  1190. return false;
  1191. }
  1192. var chkCpnType = $("#CouponForm input[name=rdoCpnType]:checked").val();
  1193. if(chkCpnType != 'G230_10'){ // 즉시할인쿠폰제외
  1194. if(!checkValidation20(chkCpnType)){
  1195. return false;
  1196. }
  1197. }
  1198. // 유효기간 체크
  1199. if(!checkValidation10()){
  1200. return false;
  1201. }
  1202. // 업체분담율 토탈 100% 넘는지 체크
  1203. if(!fnBurdenValueCheck()) {
  1204. return false;
  1205. }
  1206. mcxDialog.confirm('저장하시겠습니까?' , {
  1207. cancelBtnText: "취소",
  1208. sureBtnText: "확인",
  1209. sureBtnClick: function () {
  1210. var usableCustGbArr = [];
  1211. var chkCustGb = $('#CouponForm input:checkbox[name=usableCustGbArr]:checked');
  1212. for(let i=0; i< chkCustGb.length; i++){
  1213. usableCustGbArr.push(chkCustGb.eq(i).val());
  1214. }
  1215. var usableCustGradeArr = [];
  1216. var chkCustGrade = $('#CouponForm input:checkbox[name=usableCustGradeArr]:checked');
  1217. for(let i=0; i< chkCustGrade.length; i++){
  1218. usableCustGradeArr.push(chkCustGrade.eq(i).val());
  1219. }
  1220. var payTypeArr = [];
  1221. var chkPayType = $('#CouponForm input:checkbox[name=payTypeArr]:checked');
  1222. for(let i=0; i< chkPayType.length; i++){
  1223. payTypeArr.push(chkPayType.eq(i).val());
  1224. }
  1225. // 쿠폰유형 상품 쿠폰이고, 선착순 쿠폰일때 dcCdGb = G233_30
  1226. if($("#CouponForm input[name=rdoCpnType]:checked").val() == 'G230_11' && $("#CouponForm input:checkbox[name=limitedTimeCpnYn]").val() == "Y"){
  1227. $('input:radio[name="dcCdGb"]:checked').val("G233_30");
  1228. }
  1229. var data = {
  1230. cpnId : $('#CouponForm input[name=cpnId]').val()
  1231. ,cpnNm : $('#CouponForm input[name=cpnNm]').val()
  1232. ,cpnDesc : $('#CouponForm input[name=cpnDesc]').val()
  1233. ,siteCd : $('#CouponForm select[name=siteCd]').val()
  1234. ,cpnType : $('input:radio[name="rdoCpnType"]:checked').val()
  1235. ,applyScope : $('input:radio[name="rdoApplyScope"]:checked').val()
  1236. ,dcWay : $('input:radio[name="rdoDcWay"]:checked').val()
  1237. ,dcPval : $('#CouponForm input[name=dcPval]').val().replaceAll(',','')
  1238. ,dcMval : $('#CouponForm input[name=dcMval]').val().replaceAll(',','')
  1239. ,dcAval : $('#CouponForm input[name=dcAval]').val().replaceAll(',','')
  1240. ,maxDcAmt : $('#CouponForm input[name=maxDcAmt]').val().replaceAll(',','')
  1241. ,pdGb : $('#CouponForm select[name=pdGb]').val()
  1242. ,availStdt : $('#CouponForm input[name=availStdt]').val()
  1243. ,availEddt : $('#CouponForm input[name=availEddt]').val()
  1244. ,availDays : $('#CouponForm input[name=availDays]').val().replaceAll(',','')
  1245. ,custPubLimitQty : $('#CouponForm input[name=custPubLimitQty]').val().replaceAll(',','')
  1246. ,totPubLimitQty : $('#CouponForm input[name=totPubLimitQty]').val().replaceAll(',','')
  1247. ,onePubQty : $('#CouponForm input[name=onePubQty]').val().replaceAll(',','')
  1248. ,downStdt : $('#CouponForm input[name=downStdt]').val()
  1249. ,downEddt : $('#CouponForm input[name=downEddt]').val()
  1250. ,buyLimitAmt : $('#CouponForm input[name=buyLimitAmt]').val().replaceAll(',','')
  1251. ,cpnStat : $('input:radio[name="disCpnStat"]:checked').val()
  1252. ,endAlimYn : $('#CouponForm select[name=endAlimYn]').val()
  1253. ,firstOrdYn : $('#CouponForm select[name=firstOrdYn]').val()
  1254. ,downAblYn : $('#CouponForm select[name=downAblYn]').val()
  1255. ,custJoinStdt : $('#CouponForm input[name=custJoinStdt]').val()
  1256. ,custJoinEddt : $('#CouponForm input[name=custJoinEddt]').val()
  1257. ,buyStdt : $('#CouponForm input[name=buyStdt]').val()
  1258. ,buyEddt : $('#CouponForm input[name=buyEddt]').val()
  1259. ,newCustYn : $('#CouponForm select[name=newCustYn]').val()
  1260. ,dcCdGb : $('input:radio[name="dcCdGb"]:checked').val()
  1261. ,rdCpnNm : $('input[name="serialCpnNm"]').val()
  1262. ,supplyCompList : gagaAgGrid.getAllRowData(supplyGridOptions)
  1263. ,brandList : gagaAgGrid.getAllRowData(brandGridOptions)
  1264. ,applyGoodsList : gagaAgGrid.getAllRowData(goodsGridOptions)
  1265. ,exceptGoodsList : gagaAgGrid.getAllRowData(excepGoodsGridOptions)
  1266. ,cateList : gagaAgGrid.getAllRowData(cateGridOptions)
  1267. ,burdenList : gagaAgGrid.getAllRowData(inComGridOptions)
  1268. ,usableCustGbArr : usableCustGbArr
  1269. ,usableCustGradeArr : usableCustGradeArr
  1270. ,payTypeArr : payTypeArr
  1271. ,limitedTimeCpnList : gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions)
  1272. ,afChannelList : gagaAgGrid.getAllRowData(afLinkOptions)
  1273. ,mode : $('#CouponForm input[name=mode]').val()
  1274. ,scmYn : 'N'
  1275. };
  1276. var jsonData = JSON.stringify(data);
  1277. gagajf.ajaxJsonSubmit($('#CouponForm').prop('action'), jsonData, fnCouponSaveCollback);
  1278. }
  1279. });
  1280. }
  1281. var fnCouponSaveCollback = function (result){
  1282. uifnPopupClose('CouponRegForm');
  1283. $('#btnSearch').trigger('click');
  1284. }
  1285. // 쿠폰 수정 시
  1286. function fnCouponUpdate(){
  1287. mcxDialog.confirm('수정하시겠습니까?' , {
  1288. cancelBtnText:"취소",
  1289. sureBtnText:"확인",
  1290. sureBtnClick: function () {
  1291. gagajf.removeCommaAtNumberFormattedInput('#CouponForm');
  1292. // disabled 해제
  1293. $("#CouponForm * ").attr("readonly" , false);
  1294. $("#CouponForm * ").prop("disabled" , false);
  1295. // 필수값들 셋팅
  1296. setReqValue();
  1297. // 필수값 validation 체크
  1298. if (!gagajf.validation('#CouponForm')) {
  1299. return false;
  1300. }
  1301. if(!checkValidation()) {
  1302. return false;
  1303. }
  1304. gagajf.ajaxFormSubmit($('#CouponForm').prop('action'), '#CouponForm', function() {
  1305. uifnPopupClose('CouponRegForm');
  1306. $('#btnSearch').trigger('click');
  1307. });
  1308. }
  1309. });
  1310. }
  1311. // disabled 해제
  1312. function setDisabledFalse(){ //debugger;
  1313. }
  1314. function checkValidation(){
  1315. // 사용가능고객구분 체크박스 체크
  1316. var usableCustGbCnt = $('#CouponForm input:checkbox[name=usableCustGbArr]').length;
  1317. if(usableCustGbCnt<1){
  1318. mcxDialog.alert("사용가능고객구분을 체크해주세요.");
  1319. $('#CouponForm input:checkbox[name=usableCustGbArr]').focus();
  1320. return false;
  1321. }
  1322. // 사용가능고객등급 체크박스 체크
  1323. var usableCustGradeCnt = $('#CouponForm input:checkbox[name=usableCustGradeArr]').length;
  1324. if(usableCustGradeCnt<1){
  1325. mcxDialog.alert("사용가능고객등급을 체크해주세요.");
  1326. $('#CouponForm input:checkbox[name=usableCustGradeArr]').focus();
  1327. return false;
  1328. }
  1329. //신규가입 지급한다면 validation 체크
  1330. if( $('#newCustYn option:selected').val() == "Y" ){
  1331. var fromDate = $('#CouponForm input[name=custJoinStdt]').val();
  1332. var toDate = $('#CouponForm input[name=custJoinEddt]').val();
  1333. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  1334. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  1335. sureBtnText: "확인",
  1336. sureBtnClick: function() {
  1337. $('#CouponForm input[name=custJoinStdt]').focus();
  1338. }
  1339. });
  1340. return false;
  1341. }
  1342. if (fromDate > toDate) {
  1343. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  1344. sureBtnText: "확인",
  1345. sureBtnClick: function() {
  1346. $('#CouponForm input[name=custJoinEddt]').focus();
  1347. }
  1348. });
  1349. return false;
  1350. }
  1351. }
  1352. // 첫구매 지급하면 validation 체크
  1353. if( $('#firstOrdYn option:selected').val() == "Y" ){
  1354. var fromDate = $('#CouponForm input[name=buyStdt]').val();
  1355. var toDate = $('#CouponForm input[name=buyEddt]').val();
  1356. if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
  1357. mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
  1358. sureBtnText: "확인",
  1359. sureBtnClick: function() {
  1360. $('#CouponForm input[name=buyStdt]').focus();
  1361. }
  1362. });
  1363. return false;
  1364. }
  1365. if (fromDate > toDate) {
  1366. mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
  1367. sureBtnText: "확인",
  1368. sureBtnClick: function() {
  1369. $('#CouponForm input[name=buyEddt]').focus();
  1370. }
  1371. });
  1372. return false;
  1373. }
  1374. }
  1375. // 할인율 validation 체크 (100을 넘길수없음)
  1376. if($('#dcWay').val() == 'G240_11') {
  1377. if($('#dcPval').val() > 100) {
  1378. mcxDialog.alert('PC할인율은 100을 초과할수없습니다.');
  1379. $('#dcPval').focus();
  1380. return false;
  1381. } else if( $('#dcMval').val() > 100) {
  1382. mcxDialog.alert('모바일(웹)할인율은 100을 초과할수없습니다.');
  1383. $('#dcMval').focus();
  1384. return false;
  1385. } else if( $('#dcAval').val() > 100) {
  1386. mcxDialog.alert('모바일(앱)할인율은 100을 초과할수없습니다.');
  1387. $('#dcAval').focus();
  1388. return false;
  1389. }
  1390. }
  1391. // 할인쿠폰 유형에 따른 총 발행수량 수정 (주문서 쿠폰이고 난수쿠폰일 경우)
  1392. if($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_20") {
  1393. if($("#CouponForm input[name=randomCpnQty]").val() == "" || $("#CouponForm input[name=randomCpnQty]").val() < 1) {
  1394. mcxDialog.alert('쿠폰의 발급 수량을 입력해주세요.');
  1395. $("#CouponForm input[name=randomCpnQty]").focus();
  1396. return false;
  1397. }
  1398. if($("#CouponForm input[name=randomCpnQty]").val() > 10000) {
  1399. mcxDialog.alert('쿠폰의 발급 수량은 10000장을 초과할 수 없습니다.');
  1400. $("#CouponForm input[name=randomCpnQty]").focus();
  1401. return false;
  1402. }
  1403. } else if ($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_10") { // 주문서 쿠폰이고 시리얼 유형일 경우
  1404. if($("#CouponForm input[name=serialCpnNm]").val().length > 10) {
  1405. mcxDialog.alert('시리얼쿠폰키워드는 10글자를 넘을 수 없습니다.');
  1406. $("#CouponForm input[name=serialCpnNm]").focus();
  1407. return false;
  1408. }
  1409. if($("#CouponForm input[name=serialCpnQty]").val() == "" || $("#CouponForm input[name=serialCpnQty]").val() < 1) {
  1410. mcxDialog.alert('쿠폰의 발급 수량을 입력해주세요.');
  1411. $("#CouponForm input[name=serialCpnQty]").focus();
  1412. return false;
  1413. }
  1414. if($("#CouponForm input[name=randomCpnQty]").val() > 10000) {
  1415. mcxDialog.alert('쿠폰의 발급 수량은 10000장을 초과할 수 없습니다.');
  1416. $("#CouponForm input[name=serialCpnQty]").focus();
  1417. return false;
  1418. }
  1419. } else if ($('#CouponForm #cpnType').val() == "G230_11" && $("#limitedTimeCpnYn").val() == "Y") { // 상품쿠폰이고 선착순쿠폰 체크되어 있을때
  1420. let cpnData = gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions);
  1421. if(cpnData.length < 1){
  1422. mcxDialog.alert("선착순 쿠폰을 설정해주세요.");
  1423. return false;
  1424. }else{
  1425. for(i=0; i<cpnData.length; i++){
  1426. if(gagajf.isNull(cpnData[i].limitCpnNm)){
  1427. mcxDialog.alert(i+1 + "번 행의 선착순 쿠폰명을 입력해주세요.");
  1428. return false;
  1429. }
  1430. if(gagajf.isNull(cpnData[i].downStdt)){
  1431. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드시작일을 입력해주세요.");
  1432. return false;
  1433. }
  1434. if(gagajf.isNull(cpnData[i].downEddt)){
  1435. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드종료일을 입력해주세요.");
  1436. return false;
  1437. }else{
  1438. var tempEddt = cpnData[i].downEddt.replace(/[^0-9]/g, '');
  1439. if(tempEddt.substr(8,14) == '000000'){
  1440. tempEddt = tempEddt.substr(0,8)+'235959';
  1441. cpnData[i].downEddt = tempEddt;
  1442. }
  1443. }
  1444. if(gagajf.isNull(cpnData[i].downLimitQty)){
  1445. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드가능수량을 입력해주세요.");
  1446. return false;
  1447. }else{
  1448. if(cpnData[i].downLimitQty<1){
  1449. mcxDialog.alert(i+1 + "번 행의 선착순쿠폰 다운로드가능수량을 1개이상 입력해주세요.");
  1450. return false;
  1451. }
  1452. }
  1453. }
  1454. limitedTimeCpnGridOptions.api.setRowData(cpnData);
  1455. }
  1456. }
  1457. return true;
  1458. }
  1459. // 할인방식 변경
  1460. $("#CouponForm input[name=rdoDcWay]").bind('click change', function () {
  1461. var radioValue = $(this).val();
  1462. //발급이력이있으면 수정안됨
  1463. if(issueCnt > 0 ) {
  1464. return false;
  1465. }
  1466. if(radioValue == 'G240_10') { //할인금액
  1467. $('#dcPvalSpan').text("원");
  1468. $('#dcMvalSpan').text("원");
  1469. $('#dcAvalSpan').text("원");
  1470. $('#dcPval').val(0);
  1471. $('#dcMval').val(0);
  1472. $('#dcAval').val(0);
  1473. $('#maxDcAmt').val(0);
  1474. $("#CouponForm .maxDcAmtArea").hide();
  1475. } else { //할인율
  1476. $('#dcPvalSpan').text("%");
  1477. $('#dcMvalSpan').text("%");
  1478. $('#dcAvalSpan').text("%");
  1479. $('#dcPval').val(0);
  1480. $('#dcMval').val(0);
  1481. $('#dcAval').val(0);
  1482. $('#maxDcAmt').val(0);
  1483. if($("#CouponForm input[name=rdoCpnType]:checked").val() == 'G230_10'){
  1484. $("#CouponForm .maxDcAmtArea").show();
  1485. }else{
  1486. $("#CouponForm .maxDcAmtArea").show();
  1487. }
  1488. }
  1489. });
  1490. // 쿠폰 상태 변경
  1491. $("#CouponForm input[name=rdoCpnType]").bind('click change', function () {
  1492. var radioValue = $(this).val();
  1493. if(mode == "U") {
  1494. radioValue = cpnDetail.cpnType;
  1495. }
  1496. // 즉시할인아닌 쿠폰들 할인금액체크시 최대할인금액 숨김
  1497. var rdoDcWayVal = $("#CouponForm input[name=rdoDcWay]:checked").val();
  1498. // 즉시할인쿠폰일때 유효기간 노출, 그외 유효기간/일수 선택
  1499. var pgGbVal = $('#CouponForm select[name="pdGb"] option:selected').val();
  1500. if(pgGbVal == 'P') { //기간
  1501. $('#CouponForm .availDaysArea').hide();
  1502. $('#CouponForm .availDateTr').show();
  1503. }else{ //일수
  1504. $('#CouponForm .availDateTr').hide();
  1505. $('#CouponForm .availDaysArea').show();
  1506. }
  1507. // 즉시할인 쿠폰일때
  1508. if(radioValue == 'G230_10'){
  1509. $('#CouponForm .custJoinTr').hide();
  1510. $('#CouponForm .custJoinDateTr').hide();
  1511. $('#CouponForm .firstBuyTr').hide();
  1512. $('#CouponForm .buyDateTr').hide();
  1513. $('#CouponForm .dcCdCheck1').hide();
  1514. $('#CouponForm .limitedTimeCpnArea').hide();
  1515. $('#CouponForm .pdGbArea').hide();
  1516. $('#CouponForm .availDaysArea').hide();
  1517. // $("#CouponForm").find("input:radio[name='rdoApplyScope']:radio[value='A']").attr('disabled', true);
  1518. // 다운로드 시작,종료 , 기간/일수 , 제휴채널, 고객 등급, 구매제한 , 할인율일때 구매제한한도, 1회발행수량, 다운로드 가능여부 숨기기
  1519. $('#CouponForm .downStdtArea').hide();
  1520. $('#CouponForm .downEddtArea').hide();
  1521. $('#CouponForm .pdGbArea').hide();
  1522. $('#CouponForm .buyLimitAmtArea').hide();
  1523. $('#CouponForm .usableCustGbArea').hide();
  1524. $('#CouponForm .usableCustGradeArea').hide();
  1525. $('#CouponForm .downAblArea').hide();
  1526. $('#CouponForm .linkAfArea').hide();
  1527. $('#CouponForm .dcCdCheck2').hide();
  1528. $('#CouponForm .maxDcAmtArea').hide();
  1529. $('#CouponForm .availDateTr').show();
  1530. $("#CouponForm input:radio[name='rdoApplyScope']:radio[value=I]").prop('checked', true);
  1531. $("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', true);
  1532. $("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', true);
  1533. $("#CouponForm #endAlimYn").attr("disabled", true);
  1534. } else {
  1535. $("#CouponForm input:radio[name='rdoApplyScope']:radio[value=I]").prop('checked', true);
  1536. $("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', false);
  1537. $("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', false);
  1538. if(radioValue == 'G230_11'){ // 상품쿠폰일때 선착순쿠폰 등록 가능
  1539. $('#CouponForm .limitedTimeCpnArea').show();
  1540. }else{
  1541. $('#CouponForm .limitedTimeCpnArea').hide();
  1542. }
  1543. if(radioValue == 'G230_30'){ // 배송비쿠폰일때 할인금액만 적용
  1544. $("#CouponForm input:radio[name='rdoDcWay']:radio[value=G240_10]").prop('checked', true);
  1545. $("#CouponForm").find("input:radio[name='rdoDcWay']").attr('disabled', true);
  1546. $("#CouponForm").find("input:radio[name='rdoDcWay']").attr('readonly', true);
  1547. $('#CouponForm .maxDcAmtArea').hide();
  1548. // 적용대상 탭
  1549. $("#CouponForm .supplyTrArea").show();
  1550. $("#CouponForm .brandTrArea").hide();
  1551. $("#CouponForm .categoryTrArea").hide();
  1552. $("#CouponForm .goodsTrArea").hide();
  1553. $("#CouponForm .exceptArea").hide();
  1554. }else{
  1555. $("#CouponForm").find("input:radio[name='rdoDcWay']").attr('disabled', false);
  1556. $("#CouponForm").find("input:radio[name='rdoDcWay']").attr('readonly', false);
  1557. $('#CouponForm .maxDcAmtArea').show();
  1558. // 적용대상 탭
  1559. $("#CouponForm .supplyTrArea").show();
  1560. $("#CouponForm .brandTrArea").show();
  1561. $("#CouponForm .categoryTrArea").show();
  1562. $("#CouponForm .goodsTrArea").show();
  1563. $("#CouponForm .exceptArea").show();
  1564. }
  1565. $('#CouponForm .custJoinTr').show();
  1566. $('#CouponForm .firstBuyTr').show();
  1567. $('#CouponForm .dcCdCheck1').show();
  1568. $('#CouponForm .pdGbArea').show();
  1569. // 다운로드 시작,종료 , 기간/일수 , 제휴채널, 고객 등급, 구매제한 , 할인율일때 구매제한한도, 1회발행수량, 다운로드 가능여부 숨기기
  1570. $('#CouponForm .downStdtArea').show();
  1571. $('#CouponForm .downEddtArea').show();
  1572. $('#CouponForm .buyLimitAmtArea').show();
  1573. $('#CouponForm .usableCustGbArea').show();
  1574. $('#CouponForm .usableCustGradeArea').show();
  1575. $('#CouponForm .downAblArea').show();
  1576. $('#CouponForm .linkAfArea').show();
  1577. $('#CouponForm .dcCdCheck2').show();
  1578. // 즉시할인아닌 쿠폰들 할인금액체크시 최대할인금액 숨김
  1579. if (rdoDcWayVal == 'G240_10'){
  1580. $('#CouponForm .maxDcAmtArea').hide();
  1581. } else {
  1582. $('#CouponForm .maxDcAmtArea').show();
  1583. }
  1584. $("#CouponForm #endAlimYn").attr("disabled", false);
  1585. }
  1586. // 즉시할인쿠폰만 개별, 나머진 전체/개별
  1587. if(radioValue == 'G230_10') {
  1588. $("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
  1589. } else {
  1590. $("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
  1591. }
  1592. // 주문서 쿠폰 선택시 결제수단 노출
  1593. if(radioValue == 'G230_20') {
  1594. $('#CouponForm .payTypeTr').show();
  1595. $('#CouponForm #payType').attr('required' , true);
  1596. $("#CouponForm .dcCdGb").show(); // 할인쿠폰유형 노출
  1597. } else {
  1598. $('#CouponForm .payTypeTr').hide();
  1599. $('#CouponForm #payType').attr('required' , false );
  1600. $("#CouponForm .dcCdGb").hide(); // 할인쿠폰유형 숨김
  1601. $("#CouponForm input:radio[name='dcCdGb']:radio[value='G233_00']").prop('checked', true); // 주문서 쿠폰이 아닐 경우 일반 쿠폰으로 설정
  1602. }
  1603. // 선착순 쿠폰 비노출
  1604. $("#CouponForm .limitedTimeCpnTab").hide();
  1605. $('#CouponForm input:checkbox[name=limitedTimeCpnYn]').prop('checked', false);
  1606. $("#limitedTimeCpnYn").val("N");
  1607. $("#CouponForm #totPubLimitQty").val(0);
  1608. $("#CouponForm input[id=chkBoxTotPubQty]").prop("disabled", false);
  1609. $("#CouponForm input[id=totPubLimitQty]").prop("disabled", false);
  1610. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").removeClass("checked");
  1611. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', false);
  1612. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', false);
  1613. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', false);
  1614. // 다운로드 가능여부 활성화
  1615. $("#CouponForm select[name=downAblYn]").attr("readonly", false);
  1616. $("#CouponForm select[name=downAblYn]").attr("disabled", false);
  1617. $('#CouponForm #cpnType').val(radioValue);
  1618. });
  1619. // 할인 쿠폰 유형 변경
  1620. $("#CouponForm input[name=dcCdGb]").bind('click change', function () {
  1621. if(this.value == "G233_00") { // 일반 유형
  1622. $("#CouponForm .dcCdCheck1").show();
  1623. $("#CouponForm .dcCdCheck2").show();
  1624. $("#CouponForm .serialCpnArea").hide();
  1625. $("#CouponForm .randomCpnArea").hide();
  1626. $("#CouponForm #newCustYn").parent().attr("colspan", "");
  1627. $("#CouponForm .normalCol").attr("colspan", "5");
  1628. $('#CouponForm input[name="serialCpnNm"]').attr('required' , false);
  1629. $('#CouponForm input[name="serialCpnQty"]').attr('required' , false);
  1630. $('#CouponForm input[name="randomCpnQty"]').attr('required' , false);
  1631. } else {
  1632. if(this.value == "G233_10") { // 시리얼 유형
  1633. $("#CouponForm .serialCpnArea").show();
  1634. $("#CouponForm .randomCpnArea").hide();
  1635. $("#CouponForm .normalCol").attr("colspan", "5");
  1636. $('#CouponForm input[name="serialCpnNm"]').attr('required' , true);
  1637. $('#CouponForm input[name="serialCpnQty"]').attr('required' , true);
  1638. $('#CouponForm input[name="randomCpnQty"]').attr('required' , false);
  1639. } else { // 난수 유형
  1640. $("#CouponForm .serialCpnArea").hide();
  1641. $("#CouponForm .randomCpnArea").show();
  1642. $("#CouponForm .normalCol").attr("colspan", "");
  1643. $('#CouponForm input[name="serialCpnNm"]').attr('required' , false);
  1644. $('#CouponForm input[name="serialCpnQty"]').attr('required' , false);
  1645. $('#CouponForm input[name="randomCpnQty"]').attr('required' , true);
  1646. }
  1647. $("#CouponForm .dcCdCheck1").hide(); // 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
  1648. $("#CouponForm .dcCdCheck2").hide(); // 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
  1649. $("#CouponForm #newCustYn").parent().attr("colspan", "5"); // 총발행제한 수량을 없애면서 신규회원여부 colspan 수정
  1650. }
  1651. });
  1652. // 적용대상 - 브랜드 추가 버튼시
  1653. $('#btnBrandAdd').on('click' , function(){
  1654. cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
  1655. });
  1656. // 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
  1657. var fnSetPopupBrandInfo = function(result) {
  1658. var brandCdArr = [];
  1659. for(let i = 0 ; i < result.length ; i++) {
  1660. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(brandGridOptions); // 받아온 모든 데이터
  1661. // 받아온 data for
  1662. for(let j = 0 ; j < gridListValue.length ; j++) {
  1663. if(gridListValue[j].brandCd == result[i].brandCd) { addChk = false; } // 중복체크
  1664. }
  1665. // 중복되지 않은 데이터 리스트에 추가
  1666. if(addChk) {
  1667. gagaAgGrid.addRowData(brandGridOptions, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "supplyCompNm" : result[i].supplyCompNm});
  1668. // 2021.08.23 업체로정보로 브랜드정보 조회
  1669. brandCdArr.push(result[i].brandCd);
  1670. }
  1671. }
  1672. // 2021.08.23 업체로정보로 브랜드정보 조회
  1673. // 적용대상 정보 로드
  1674. if (brandCdArr.length > 0) {
  1675. var jsonObj = {"brandCdArr" : brandCdArr};
  1676. $.ajax( {
  1677. type : "POST",
  1678. url : '/marketing/coupon/brandCdAndSupplyCompList',
  1679. data : JSON.stringify(jsonObj),
  1680. dataType : 'json',
  1681. beforeSend : function(xhr, settings) {
  1682. xhr.setRequestHeader("AJAX" , "true");
  1683. xhr.setRequestHeader('Accept' , 'application/json');
  1684. xhr.setRequestHeader('Content-Type' , 'application/json');
  1685. },
  1686. success : function(result) {
  1687. if (result != null) {
  1688. // 기존 리스트 데이터 for
  1689. for(let i = 0 ; i < result.returnList.length ; i++) {
  1690. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(supplyGridOptions); // 받아온 모든 데이터
  1691. // 받아온 data for
  1692. for (let j = 0 ; j < gridListValue.length ; j++) {
  1693. // 동일한 data는 추가하지 않음
  1694. if(gridListValue[j].supplyCompCd == result.returnList[i].supplyCompCd) { addChk = false; } // 중복체크
  1695. }
  1696. // 중복되지 않은 데이터 리스트에 추가
  1697. if(addChk) {
  1698. gagaAgGrid.addRowData(supplyGridOptions, {"supplyCompCd" : result.returnList[i].supplyCompCd, "supplyCompNm" : result.returnList[i].supplyCompNm});
  1699. }
  1700. }
  1701. }
  1702. }
  1703. });
  1704. }
  1705. };
  1706. // 적용대상 - 공급처 추가 버튼시
  1707. $('#btnSupplyAdd').on('click' , function (){
  1708. cfnOpenCompanyListPopup("fnSetPopupComapnyInfo" , "M");
  1709. });
  1710. // 공급업체 설정 / 업체 추가 콜백함수
  1711. var fnSetPopupComapnyInfo = function(result) {
  1712. var supplyCompCdArr = [];
  1713. // 기존 리스트 데이터 for
  1714. for (let i = 0 ; i < result.length ; i++) {
  1715. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(supplyGridOptions); // 받아온 모든 데이터
  1716. // 받아온 data for
  1717. for (let j = 0 ; j < gridListValue.length ; j++) {
  1718. // 동일한 data는 추가하지 않음
  1719. if(gridListValue[j].supplyCompCd == result[i].supplyCompCd) { addChk = false; } // 중복체크
  1720. }
  1721. // 중복되지 않은 데이터 리스트에 추가
  1722. if (addChk) {
  1723. gagaAgGrid.addRowData(supplyGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm});
  1724. // 2021.08.23 업체로정보로 브랜드정보 조회
  1725. supplyCompCdArr.push(result[i].supplyCompCd);
  1726. }
  1727. }
  1728. // 2021.08.23 업체로정보로 브랜드정보 조회
  1729. // 적용대상 정보 로드
  1730. if (supplyCompCdArr.length > 0) {
  1731. var jsonObj = {"supplyCompCdArr" : supplyCompCdArr};
  1732. $.ajax( {
  1733. type : "POST",
  1734. url : '/marketing/coupon/supplyCompCdAndBrandList',
  1735. data : JSON.stringify(jsonObj),
  1736. dataType : 'json',
  1737. beforeSend : function(xhr, settings) {
  1738. xhr.setRequestHeader("AJAX" , "true");
  1739. xhr.setRequestHeader('Accept' , 'application/json');
  1740. xhr.setRequestHeader('Content-Type' , 'application/json');
  1741. },
  1742. success : function(result) {zzz
  1743. var data = result.returnList;
  1744. let brandList = [];
  1745. $.each(data, function(idx, item) {
  1746. let brandEnm = item.brandEnm;
  1747. item.brandEnm = brandEnm.replaceXSS();
  1748. brandList.push(item);
  1749. });
  1750. if (result != null) {
  1751. for (let i = 0 ; i < result.returnList.length ; i++) {
  1752. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(brandGridOptions); // 받아온 모든 데이터
  1753. // 받아온 data for
  1754. for (let j = 0 ; j < gridListValue.length ; j++) {
  1755. if (gridListValue[j].brandCd == result.returnList[i].brandCd) { addChk = false; } // 중복체크
  1756. }
  1757. // 중복되지 않은 데이터 리스트에 추가
  1758. if (addChk) {
  1759. gagaAgGrid.addRowData(brandGridOptions, {"brandCd" : result.returnList[i].brandCd, "brandEnm" : result.returnList[i].brandEnm});
  1760. }
  1761. }
  1762. }
  1763. }
  1764. });
  1765. }
  1766. };
  1767. // 적용대상 - 카테고리 추가시
  1768. $('#btnCateAdd').on('click' , function () {
  1769. cfnOpenCategoryPopup("fnSetPopupCategoryInfo");
  1770. });
  1771. // 카테고리 추가 콜백 함수
  1772. var fnSetPopupCategoryInfo = function (result) {
  1773. // 기존 리스트 데이터 for
  1774. for(let i = 0 ; i < result.length ; i++) {
  1775. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(cateGridOptions); // 받아온 모든 데이터
  1776. // 받아온 data for
  1777. for(let j = 0 ; j < gridListValue.length ; j++) {
  1778. // 동일한 data는 추가하지 않음
  1779. if(gridListValue[j].cateNo == result[i].cateNo) { addChk = false; } // 중복체크
  1780. }
  1781. // 중복되지 않은 데이터 리스트에 추가
  1782. if(addChk) {
  1783. 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});
  1784. }
  1785. }
  1786. }
  1787. // 적용대상 - 상품 추가시
  1788. $('#btnGoodsAdd').on('click' , function () {
  1789. cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
  1790. });
  1791. // 적용 상품 리스트 콜백함수
  1792. var fnSetPopupApplyGoodsInfo = function(result) {
  1793. gridAddGoodsList(goodsGridOptions, result , "apply");
  1794. };
  1795. // 적용대상 - 제외상품 추가시
  1796. $('#btnExcepGoodsAdd').on('click' , function(){
  1797. cfnOpenGoodsPopup("fnSetPopupExceptGoodsInfo");
  1798. });
  1799. // 적용 상품 리스트 콜백함수
  1800. var fnSetPopupExceptGoodsInfo = function(result) {
  1801. gridAddGoodsList(excepGoodsGridOptions, result , "except");
  1802. };
  1803. // ag-grid 상품관련 list 콜백함수
  1804. function gridAddGoodsList(OriginGridListOption, result, gubun) {
  1805. var goodsGbVal = "G800_10";
  1806. if(gubun == 'except'){
  1807. goodsGbVal = "G800_30";
  1808. }
  1809. let addCnt = 0;
  1810. let failCnt = 0;
  1811. let dupliCnt = 0;
  1812. let goodsDCnt = 0;
  1813. for(let i = 0 ; i < result.length ; i++) {
  1814. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(OriginGridListOption); // 받아온 모든 데이터
  1815. if(result[i].goodsType == 'G056_D'){ //딜상품 제외
  1816. addChk = false;
  1817. goodsDCnt++;
  1818. }
  1819. // 받아온 data for
  1820. for(let j = 0 ; j < gridListValue.length ; j++) {
  1821. if(gridListValue[j].goodsCd == result[i].goodsCd) { addChk = false; dupliCnt++;} // 중복체크
  1822. }
  1823. // 중복되지 않은 데이터 리스트에 추가
  1824. if(addChk) {
  1825. gagaAgGrid.addRowData(OriginGridListOption, {"goodsGb": goodsGbVal, "goodsCd" : result[i].goodsCd, "goodsNm" : result[i].goodsNm});
  1826. addCnt++;
  1827. }
  1828. }
  1829. uifnPopupClose('popupGoods');
  1830. failCnt = result.length - addCnt - dupliCnt - goodsDCnt;
  1831. mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, "+ dupliCnt + "건 중복, "+ goodsDCnt + "건 딜상품 제외, " + failCnt + "건 실패");
  1832. }
  1833. // 기간 일수 변경시
  1834. function pdGbChange(pThis){
  1835. var selectVal = $(pThis).val();
  1836. if(typeof selectVal == "undefined") {
  1837. if(mode == "U") {
  1838. selectVal = cpnDetail.pdGb;
  1839. } else {
  1840. selectVal = "P";
  1841. }
  1842. }
  1843. if(selectVal == "P") {
  1844. $('.availDateTr').css('display' , '');
  1845. $("#CouponForm .availDaysArea").hide();
  1846. // $('.availDayTr').css('display' , 'none');
  1847. $('#CouponForm #availDays').attr('required' , false);
  1848. $('#CouponForm #availStDay').attr('required' , true);
  1849. $('#CouponForm #availEdDay').attr('required' , true);
  1850. $('#CouponForm #availStdt').attr('required' , true);
  1851. $('#CouponForm #availEddt').attr('required' , true);
  1852. } else {
  1853. $('.availDateTr').css('display' , 'none');
  1854. // $('.availDayTr').css('display' , '');
  1855. $("#CouponForm .availDaysArea").show();
  1856. $('#CouponForm #availDays').attr('required' , true);
  1857. $('#CouponForm #availStDay').attr('required' , false);
  1858. $('#CouponForm #availEdDay').attr('required' , false);
  1859. $('#CouponForm #availStdt').attr('required' , false);
  1860. $('#CouponForm #availEddt').attr('required' , false);
  1861. }
  1862. }
  1863. // 첫구매여부 변경시
  1864. function firstOrdYnChange(pThis){
  1865. var selectVal = $(pThis).val();
  1866. if(typeof selectVal == "undefined") {
  1867. if(mode == "U") {
  1868. selectVal = cpnDetail.firstOrdYn;
  1869. } else {
  1870. selectVal = "N";
  1871. }
  1872. }
  1873. if(selectVal == "Y" ) {
  1874. $('.buyDateTr').css('display' , '');
  1875. $('#buyStdt').attr('required' , true);
  1876. $('#buyEddt').attr('required' , true);
  1877. } else {
  1878. $('.buyDateTr').css('display' , 'none');
  1879. $('#buyStdt').attr('required' , false);
  1880. $('#buyEddt').attr('required' , false);
  1881. }
  1882. }
  1883. // 신규회원여부 변경시
  1884. function newCustYnChange(pThis){
  1885. var selectVal = $(pThis).val();
  1886. if(typeof selectVal == "undefined") {
  1887. if(mode == "U") {
  1888. selectVal = cpnDetail.newCustYn;
  1889. } else {
  1890. selectVal = "N";
  1891. }
  1892. }
  1893. if(selectVal == "Y" ) {
  1894. $('.custJoinDateTr').css('display' , '');
  1895. $('#custJoinStdt').attr('required' , true);
  1896. $('#custJoinEddt').attr('required' , true);
  1897. } else {
  1898. $('.custJoinDateTr').css('display' , 'none');
  1899. $('#custJoinStdt').attr('required' , false);
  1900. $('#custJoinEddt').attr('required' , false);
  1901. }
  1902. }
  1903. // 행추가시
  1904. $('#btnAddRow').on('click' , function(){
  1905. var data = { supplyCompCd: null , burdenRate : null , delYn : 'N'};
  1906. gagaAgGrid.addRowData(inComGridOptions , data , "supplyCompCd" );
  1907. });
  1908. // 발급받은회원 팝업
  1909. var fnPubCustListPopUp = function (){
  1910. let cpnId = $("#CouponForm #cpnId").val();
  1911. var actionUrl = "/marketing/coupon/pubCust/popup/form?cpnId=" + cpnId;
  1912. cfnOpenModalPopup(actionUrl, 'CpnPubCustListPopup');
  1913. };
  1914. // 쿠폰발행팝업
  1915. function fnCustomerIssuePopUp(){
  1916. cfnCpnPubForCustPopup();
  1917. };
  1918. // 전송시 값 세팅
  1919. function setReqValue(){
  1920. // 쿠폰유형값 세팅
  1921. $('#CouponForm #cpnType').val($('#CouponForm input:radio[name="rdoCpnType"]:checked').val());
  1922. // 할인방식값 세팅
  1923. $('#CouponForm #dcWay').val($('#CouponForm input:radio[name="rdoDcWay"]:checked').val());
  1924. // 적용범위값 세팅
  1925. $('#CouponForm #applyScope').val($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val());
  1926. // 쿠폰상태
  1927. $('#CouponForm input[name=cpnStat]').val($('input:radio[name="disCpnStat"]:checked').val());
  1928. // 다운로드기간 세팅
  1929. let downStdt = "";
  1930. let downEddt = "";
  1931. downStdt = $('#CouponForm input[name=downStDay]').val()+$('#CouponForm select[name=downStHH]').val()+$('#CouponForm select[name=downStMM]').val()+'00';
  1932. if($('#CouponForm select[name=downEdHH]').val() == "24"){
  1933. downEddt = $('#CouponForm input[name=downEdDay]').val()+'235959';
  1934. }else{
  1935. downEddt = $('#CouponForm input[name=downEdDay]').val()+$('#CouponForm select[name=downEdHH]').val()+$('#CouponForm select[name=downEdMM]').val()+'00';
  1936. }
  1937. downStdt = downStdt.replace(/[^0-9]/g, '');
  1938. downEddt = downEddt.replace(/[^0-9]/g, '');
  1939. $('#CouponForm #downStdt').val(downStdt);
  1940. $('#CouponForm #downEddt').val(downEddt);
  1941. // 유효기간 세팅
  1942. let availStdt = "";
  1943. let availEddt = "";
  1944. if($("#CouponForm #pdGb").val() == 'P') {
  1945. availStdt = $('#CouponForm input[name=availStDay]').val()+$('#CouponForm select[name=availStHH]').val()+$('#CouponForm select[name=availStMM]').val()+'00';
  1946. if($('#CouponForm select[name=availEdHH]').val() == "24"){
  1947. availEddt = $('#CouponForm input[name=availEdDay]').val()+'235959';
  1948. }else{
  1949. availEddt = $('#CouponForm input[name=availEdDay]').val()+$('#CouponForm select[name=availEdHH]').val()+$('#CouponForm select[name=availEdMM]').val()+'00';
  1950. }
  1951. availStdt = availStdt.replace(/[^0-9]/g, '');
  1952. availEddt = availEddt.replace(/[^0-9]/g, '');
  1953. $('#CouponForm #availStdt').val(availStdt);
  1954. $('#CouponForm #availEddt').val(availEddt);
  1955. $('#CouponForm #availDays').val('');
  1956. } else {
  1957. $('#CouponForm #availStdt').val('');
  1958. $('#CouponForm #availEddt').val('');
  1959. }
  1960. // 첫구매기간세팅
  1961. let buyStdt = "";
  1962. let buyEddt = "";
  1963. buyStdt = $('#CouponForm input[name=buyStDay]').val()+$('#CouponForm select[name=buyStHH]').val()+$('#CouponForm select[name=buyStMM]').val()+'00';
  1964. if($('#CouponForm select[name=buyEdHH]').val() == "24"){
  1965. buyEddt = $('#CouponForm input[name=buyEdDay]').val()+'235959';
  1966. }else{
  1967. buyEddt = $('#CouponForm input[name=buyEdDay]').val()+$('#CouponForm select[name=buyEdHH]').val()+$('#CouponForm select[name=buyEdMM]').val()+'00';
  1968. }
  1969. buyStdt = buyStdt.replace(/[^0-9]/g, '');
  1970. buyEddt = buyEddt.replace(/[^0-9]/g, '');
  1971. $('#CouponForm #buyStdt').val(buyStdt);
  1972. $('#CouponForm #buyEddt').val(buyEddt);
  1973. // 신규회원기간 세팅
  1974. let custJoinStdt = "";
  1975. let custJoinEddt = "";
  1976. custJoinStdt = $('#CouponForm input[name=custJoinStDay]').val()+$('#CouponForm select[name=custJoinStHH]').val()+$('#CouponForm select[name=custJoinStMM]').val()+'00';
  1977. if($('#CouponForm select[name=custJoinEdHH]').val() == "24"){
  1978. custJoinEddt = $('#CouponForm input[name=custJoinEdDay]').val()+'235959';
  1979. }else{
  1980. custJoinEddt = $('#CouponForm input[name=custJoinEdDay]').val()+$('#CouponForm select[name=custJoinEdHH]').val()+$('#CouponForm select[name=custJoinEdMM]').val()+'00';
  1981. }
  1982. custJoinStdt = custJoinStdt.replace(/[^0-9]/g, '');
  1983. custJoinEddt = custJoinEddt.replace(/[^0-9]/g, '');
  1984. $('#CouponForm #custJoinStdt').val(custJoinStdt);
  1985. $('#CouponForm #custJoinEddt').val(custJoinEddt);
  1986. // 할인쿠폰 유형에 따른 총 발행수량 수정 (주문서 쿠폰이고 난수쿠폰일 경우)
  1987. if($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_20") {
  1988. $('#CouponForm input[name="totPubLimitQty"]').val($('#CouponForm input[name="randomCpnQty"]').val()); // 총 발행수량 난수 생성수량으로 변경
  1989. $('#CouponForm input[name="custPubLimitQty"]').val(1); // 1인당 발행제한수량 1개 고정
  1990. $('#CouponForm input[name="onePubQty"]').val(1); // 1회발행수량 1개 고정
  1991. } else if ($('#CouponForm #cpnType').val() == "G230_20" && $('#CouponForm input:radio[name="dcCdGb"]:checked').val() == "G233_10") { // 주문서 쿠폰이고 시리얼 유형일 경우
  1992. $('#CouponForm input[name="rdCpnNm"]').val($('#CouponForm input[name="serialCpnNm"]').val()); // 시리얼유형쿠폰명 저장
  1993. $('#CouponForm input[name="totPubLimitQty"]').val($('#CouponForm input[name="serialCpnQty"]').val()); // 총 발행수량 랜덤쿠폰발급수량으로 변경
  1994. $('#CouponForm input[name="custPubLimitQty"]').val(1); // 1인당 발행제한수량 1개 고정
  1995. $('#CouponForm input[name="onePubQty"]').val(1); // 1회발행수량 1개 고정
  1996. }
  1997. // 적용대상 - 공급처 그리드 전체값 세팅
  1998. $('#CouponForm #supplyCompList').val(gagaAgGrid.getAllRowData(supplyGridOptions));
  1999. // 적용대상 - 브랜드 그리드 전체값 세팅
  2000. $('#CouponForm #brandList').val(gagaAgGrid.getAllRowData(brandGridOptions));
  2001. // // 적용대상 - 카테고리 그리드 전체값 세팅
  2002. $('#CouponForm #cateList').val(gagaAgGrid.getAllRowData(cateGridOptions));
  2003. // 적용대상 - 적용상품 그리드 전체값 세팅
  2004. $('#CouponForm #applyGoodsList').val(gagaAgGrid.getAllRowData(goodsGridOptions));
  2005. // 적용대상 - 제외상품 그리드 전체값 세팅
  2006. $('#CouponForm #excepGoodsList').val(gagaAgGrid.getAllRowData(excepGoodsGridOptions));
  2007. // 입점업체분담율 그리드 전체값 세팅
  2008. $('#CouponForm #burdenList').val(gagaAgGrid.getAllRowData(inComGridOptions));
  2009. }
  2010. $(document).ready(function() {
  2011. gagaAgGrid.createGrid('inComGridList', inComGridOptions);
  2012. gagaAgGrid.createGrid('brandGridList', brandGridOptions);
  2013. gagaAgGrid.createGrid('cateGridList', cateGridOptions);
  2014. gagaAgGrid.createGrid('supplyGridList', supplyGridOptions);
  2015. gagaAgGrid.createGrid('goodsGridList', goodsGridOptions);
  2016. gagaAgGrid.createGrid('excepGoodsGridList', excepGoodsGridOptions);
  2017. gagaAgGrid.createGrid('randomCpnList', randomCouponGridOptions);
  2018. gagaAgGrid.createGrid('limitedTimeCpnList', limitedTimeCpnGridOptions);
  2019. gagaAgGrid.createGrid('afChannelList', afLinkOptions );
  2020. // 일단 버튼 숨김
  2021. $(".couponButton").hide();
  2022. // 초기화시 데이터 세팅
  2023. if (mode == "N") {
  2024. $('input[name=rdoCpnType]').eq(0).attr("checked", true);
  2025. $('input[name=dcCdGb]').eq(0).attr("checked", true);
  2026. $('input[name=rdoDcWay]').eq(0).attr("checked", true);
  2027. $('input[name=rdoApplyScope]').eq(0).attr("checked", true)
  2028. $('#CouponForm #availEdHH option:last').attr("selected", "selected");
  2029. $('#CouponForm #availEdMM option').hide();
  2030. $('#CouponForm #availEdMM option:first').show().prop("selected", true);
  2031. $('#downEdHH option:last').attr("selected", "selected");
  2032. $('#downEdMM option').hide();
  2033. $('#downEdMM option:first').show().prop("selected", true);
  2034. $('#custJoinEdHH option:last').attr("selected", "selected");
  2035. $('#custJoinEdMM option').hide();
  2036. $('#custJoinEdMM option:first').show().prop("selected", true);
  2037. $('#buyEdHH option:last').attr("selected", "selected");
  2038. $('#buyEdMM option').hide();
  2039. $('#buyEdMM option:first').show().prop("selected", true);
  2040. $("#CouponForm #afChannel option:first").attr("selected" , "selected");
  2041. $("#CouponForm .normalCol").attr("colspan", "5");
  2042. $("#CouponForm .randomCpnArea").hide();
  2043. $("#CouponForm .maxDcAmtArea").hide();
  2044. $("input:radio[name='disCpnStat']:radio[value='G232_10']").prop('checked', true); // 선택하기
  2045. if($('input:radio[name="rdoCpnType"]:checked').val() == 'G230_10'){
  2046. $('#CouponForm .custJoinTr').hide();
  2047. $('#CouponForm .custJoinDateTr').hide();
  2048. $('#CouponForm .firstBuyTr').hide();
  2049. $('#CouponForm .buyDateTr').hide();
  2050. $('#CouponForm .dcCdCheck1').hide();
  2051. // 다운로드 시작,종료 , 기간/일수 , 제휴채널, 고객 등급, 구매제한 , 할인율일때 구매제한한도, 1회발행수량, 다운로드 가능여부 숨기기
  2052. $('#CouponForm .downStdtArea').hide();
  2053. $('#CouponForm .downEddtArea').hide();
  2054. $('#CouponForm .pdGbArea').hide();
  2055. $('#CouponForm .buyLimitAmtArea').hide();
  2056. $('#CouponForm .usableCustGbArea').hide();
  2057. $('#CouponForm .usableCustGradeArea').hide();
  2058. $('#CouponForm .downAblArea').hide();
  2059. $('#CouponForm .linkAfArea').hide();
  2060. $('#CouponForm .dcCdCheck2').hide();
  2061. $('#CouponForm .maxDcAmtArea').hide();
  2062. // $("#CouponForm #afLinkCd").attr('disabled', true);
  2063. $("#CouponForm input:radio[name='rdoApplyScope']:radio[value=I]").prop('checked', true);
  2064. $("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', true);
  2065. $("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', true);
  2066. $("#CouponForm #endAlimYn").attr("disabled", true);
  2067. }
  2068. $("#btnCouponSave").show(); // 저장버튼
  2069. $("#CouponForm .buttonSpan").show();
  2070. } else {
  2071. if(cpnDetail.cpnStat == "G232_10"){
  2072. $("#btnCouponSave").show(); // 저장버튼
  2073. $("#btnChangeStatIng").show(); // 진행버튼
  2074. $("#btnCouponDelete").show(); // 삭제버튼
  2075. $("#btnCouponEnd").show(); // 종료버튼
  2076. $("#CouponForm .buttonSpan").show(); //행추가,삭제버튼
  2077. }else if(cpnDetail.cpnStat == "G232_11"){
  2078. $("#btnCouponSave").hide(); // 저장버튼
  2079. $("#btnCouponStop").show(); // 중지버튼
  2080. $("#btnCouponDelete").show(); // 삭제버튼
  2081. $("#btnCouponEnd").show(); // 종료버튼
  2082. $("#CouponForm .buttonSpan").hide(); //행추가,삭제버튼
  2083. }else{
  2084. $("#CouponForm .buttonSpan").hide(); //행추가,삭제버튼
  2085. }
  2086. // 사용가능고객구분 체크박스 체크 제거
  2087. $('#CouponForm input:checkbox[name=usableCustGbArr]').prop('checked', false);
  2088. if(cpnCustGbList.length > 0){
  2089. var chkboxCnt = $('#CouponForm input:checkbox[name=usableCustGbArr]').length;
  2090. var dataCnt = cpnCustGbList.length;
  2091. for(let i=0; i<chkboxCnt; i++){
  2092. for(let j=0; j<dataCnt; j++){
  2093. var data = cpnCustGbList[j].usableCustGb;
  2094. if($('#CouponForm input:checkbox[name=usableCustGbArr]').eq(i).val() == data){
  2095. $('#CouponForm input:checkbox[name=usableCustGbArr]').eq(i).prop('checked', true);
  2096. $("#CouponForm input:checkbox[name=usableCustGbArr]").eq(i).parent("label").addClass('checked');
  2097. }
  2098. }
  2099. }
  2100. }
  2101. // 사용고객등급구분 체크박스 체크 제거
  2102. $('#CouponForm input:checkbox[name=usableCustGradeArr]').prop('checked', false);
  2103. if(cpnCustGradeList.length > 0){
  2104. var chkboxCnt = $('#CouponForm input:checkbox[name=usableCustGradeArr]').length;
  2105. var dataCnt = cpnCustGradeList.length;
  2106. for(let i=0; i<chkboxCnt; i++){
  2107. for(let j=0; j<dataCnt; j++){
  2108. var data = cpnCustGradeList[j].usableCustGrade;
  2109. if($('#CouponForm input:checkbox[name=usableCustGradeArr]').eq(i).val() == data){
  2110. $('#CouponForm input:checkbox[name=usableCustGradeArr]').eq(i).prop('checked', true);
  2111. $("#CouponForm input:checkbox[name=usableCustGradeArr]").eq(i).parent().addClass('checked');
  2112. }
  2113. }
  2114. }
  2115. }
  2116. // 결제수단 체크박스 체크 제거
  2117. $('#CouponForm input:checkbox[name=payTypeArr]').prop('checked', false);
  2118. if(cpnPayTypeList.length > 0){
  2119. var chkboxCnt = $('#CouponForm input:checkbox[name=payTypeArr]').length;
  2120. var dataCnt = cpnPayTypeList.length;
  2121. for(let i=0; i<chkboxCnt; i++){
  2122. for(let j=0; j<dataCnt; j++){
  2123. var data = cpnPayTypeList[j].payType;
  2124. if($('#CouponForm input:checkbox[name=payTypeArr]').eq(i).val() == data){
  2125. $('#CouponForm input:checkbox[name=payTypeArr]').eq(i).prop('checked', true);
  2126. $("#CouponForm input:checkbox[name=payTypeArr]").eq(i).parent().addClass('checked');
  2127. }
  2128. }
  2129. }
  2130. }
  2131. // 수정모드시 그리드 세팅
  2132. inComGridOptions.api.setRowData(cpnDtlBurdenList);
  2133. supplyGridOptions.api.setRowData(cpnDtlRefvalSupplyCompList);
  2134. goodsGridOptions.api.setRowData(cpnDtlRefvalApplyGoodsList);
  2135. excepGoodsGridOptions.api.setRowData(cpnDtlRefvalExceptGoodsList);
  2136. brandGridOptions.api.setRowData(cpnDtlRefvalBrandList);
  2137. cateGridOptions.api.setRowData(cpnDtlRefvalCateList);
  2138. randomCouponGridOptions.api.setRowData(randomCpnList);
  2139. limitedTimeCpnGridOptions.api.setRowData(limitedTimeCpnList);
  2140. afLinkOptions.api.setRowData(afChannelList);
  2141. if(cpnDetail.cpnType == "G230_30"){
  2142. $("#CouponForm .supplyTrArea").show();
  2143. $("#CouponForm .brandTrArea").hide();
  2144. $("#CouponForm .categoryTrArea").hide();
  2145. $("#CouponForm .goodsTrArea").hide();
  2146. $("#CouponForm .exceptArea").hide();
  2147. }
  2148. // 기본정보 세팅
  2149. $("#CouponForm input:radio[name='rdoDcWay']:radio[value=" + cpnDetail.dcWay + "]").prop('checked', true);
  2150. $("#CouponForm input:radio[name='rdoCpnType']:radio[value=" + cpnDetail.cpnType + "]").prop('checked', true);
  2151. $("#CouponForm input:radio[name='rdoApplyScope']:radio[value=" + cpnDetail.applyScope + "]").prop('checked', true);
  2152. $("#CouponForm #dcPval").val(cpnDetail.dcPval);
  2153. $("#CouponForm #dcMval").val(cpnDetail.dcMval);
  2154. $("#CouponForm #dcAval").val(cpnDetail.dcAval);
  2155. $("#CouponForm #maxDcAmt").val(cpnDetail.maxDcAmt);
  2156. $("#CouponForm #totPubLimitQty").val(cpnDetail.totPubLimitQty);
  2157. $("#CouponForm #custPubLimitQty").val(cpnDetail.custPubLimitQty);
  2158. if(cpnDetail.cpnStat!='G232_10'){
  2159. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', true);
  2160. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', true);
  2161. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', true);
  2162. $("#CouponForm #totPubLimitQty").attr('readonly', true);
  2163. $("#CouponForm #totPubLimitQty").attr('disabled', true);
  2164. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").attr('readonly', true);
  2165. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").prop('disabled', true);
  2166. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").parent().prop('disabled', true);
  2167. $("#CouponForm #custPubLimitQty").attr('readonly', true);
  2168. $("#CouponForm #custPubLimitQty").attr('disabled', true);
  2169. if(cpnDetail.totPubLimitQty<1){
  2170. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").addClass("checked");
  2171. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('checked', true);
  2172. }else{
  2173. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('checked', false);
  2174. }
  2175. if(cpnDetail.custPubLimitQty<1){
  2176. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").parent("label").addClass("checked");
  2177. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").prop('checked', true);
  2178. }else{
  2179. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").prop('checked', false);
  2180. }
  2181. }else{
  2182. if(cpnDetail.totPubLimitQty<1){
  2183. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").addClass("checked");
  2184. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('checked', true);
  2185. $("#CouponForm #totPubLimitQty").attr('readonly', true);
  2186. $("#CouponForm #totPubLimitQty").attr('disabled', true);
  2187. }else{
  2188. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('checked', false);
  2189. $("#CouponForm #totPubLimitQty").attr('readonly', false);
  2190. $("#CouponForm #totPubLimitQty").attr('disabled', false);
  2191. }
  2192. if(cpnDetail.custPubLimitQty<1){
  2193. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").parent("label").addClass("checked");
  2194. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").prop('checked', true);
  2195. $("#CouponForm #custPubLimitQty").attr('readonly', true);
  2196. $("#CouponForm #custPubLimitQty").attr('disabled', true);
  2197. }else{
  2198. $("#CouponForm input[id=chkNoLimitCustPubLimitQty]").prop('checked', false);
  2199. $("#CouponForm #custPubLimitQty").attr('readonly', false);
  2200. $("#CouponForm #custPubLimitQty").attr('disabled', false);
  2201. }
  2202. }
  2203. $("#CouponForm #onePubQty").val(cpnDetail.onePubQty);
  2204. $("#CouponForm #usableCustGb").val(cpnDetail.usableCustGb).prop("selected", true);
  2205. $("#CouponForm #usableCustGrade").val(cpnDetail.usableCustGrade).prop("selected", true);
  2206. $("#CouponForm #endAlimYn").val(cpnDetail.endAlimYn).prop("selected", true);
  2207. $("#CouponForm #firstOrdYn").val(cpnDetail.firstOrdYn).prop("selected", true);
  2208. $("#CouponForm #reissuance").val(cpnDetail.reissuance).prop("selected", true);
  2209. $("#CouponForm #dnGb").val(cpnDetail.dnGb).prop("selected", true);
  2210. //$("#CouponForm #cpnStat").val(cpnDetail.cpnStat).prop("selected", true);
  2211. $("input:radio[name='disCpnStat']:radio[value="+cpnDetail.cpnStat+"]").prop('checked', true); // 선택하기
  2212. $("#CouponForm #newCustYn").val(cpnDetail.newCustYn).prop("selected", true);
  2213. $("#CouponForm #pdGb").val(cpnDetail.pdGb).prop("selected", true);
  2214. $("#CouponForm #siteCd").val(cpnDetail.siteCd).prop("selected", true);
  2215. $("#CouponForm #afChannel").val(cpnDetail.afChannel).prop("selected", true);
  2216. $("#CouponForm #cpnNm").val(cpnDetail.cpnNm);
  2217. $("#CouponForm #downAblYn").val(cpnDetail.downAblYn);
  2218. $("#CouponForm #buyLimitAmt").val(cpnDetail.buyLimitAmt);
  2219. $("#CouponForm #cpnId").val(cpnDetail.cpnId);
  2220. $("#CouponForm #cpnDesc").val(cpnDetail.cpnDesc);
  2221. if(cpnDetail.cpnType == "G230_10"){
  2222. $('#CouponForm .custJoinTr').hide();
  2223. $('#CouponForm .custJoinDateTr').hide();
  2224. $('#CouponForm .firstBuyTr').hide();
  2225. $('#CouponForm .buyDateTr').hide();
  2226. $('#CouponForm .dcCdCheck1').hide();
  2227. $('#CouponForm .limitedTimeCpnArea').hide();
  2228. $('#CouponForm .pdGbArea').hide();
  2229. $('#CouponForm .availDaysArea').hide();
  2230. // $("#CouponForm").find("input:radio[name='rdoApplyScope']:radio[value='A']").attr('disabled', true);
  2231. // 다운로드 시작,종료 , 기간/일수 , 제휴채널, 고객 등급, 구매제한 , 할인율일때 구매제한한도, 1회발행수량, 다운로드 가능여부 숨기기
  2232. $('#CouponForm .downStdtArea').hide();
  2233. $('#CouponForm .downEddtArea').hide();
  2234. $('#CouponForm .pdGbArea').hide();
  2235. $('#CouponForm .buyLimitAmtArea').hide();
  2236. $('#CouponForm .usableCustGbArea').hide();
  2237. $('#CouponForm .usableCustGradeArea').hide();
  2238. $('#CouponForm .downAblArea').hide();
  2239. $('#CouponForm .linkAfArea').hide();
  2240. $('#CouponForm .dcCdCheck2').hide();
  2241. $('#CouponForm .maxDcAmtArea').hide();
  2242. $('#CouponForm .availDateTr').show();
  2243. }else{
  2244. $('#CouponForm .custJoinTr').show();
  2245. $('#CouponForm .custJoinDateTr').show();
  2246. $('#CouponForm .firstBuyTr').show();
  2247. $('#CouponForm .buyDateTr').show();
  2248. $('#CouponForm .dcCdCheck1').show();
  2249. if(cpnDetail.cpnType == "G230_30"){
  2250. $('#CouponForm .maxDcAmtArea').hide();
  2251. }
  2252. if(cpnDetail.cpnType == "G230_20"){
  2253. $('#CouponForm .payTypeTr').show();
  2254. }
  2255. }
  2256. if(limitedTimeCpnList.length>0 && cpnDetail.cpnType == "G230_11"){ //상품쿠폰이고 선착순쿠폰일때
  2257. $("#CouponForm input:checkbox[name=limitedTimeCpnYn]").val("Y");
  2258. $("#CouponForm .limitedTimeCpnTab").show();
  2259. $('#CouponForm .limitedTimeCpnArea').show();
  2260. $('#CouponForm input:checkbox[name=limitedTimeCpnYn]').prop('checked', true);
  2261. $("#CouponForm input:checkbox[name=limitedTimeCpnYn]").parent().addClass('checked');
  2262. $("#CouponForm input[id=limitedTimeCpnYn]").parent("label").addClass("checked");
  2263. $("#CouponForm input[id=limitedTimeCpnYn]").attr('readonly', true);
  2264. $("#CouponForm input[id=limitedTimeCpnYn]").prop('disabled', true);
  2265. $("#CouponForm input[id=limitedTimeCpnYn]").parent().prop('disabled', true);
  2266. $("#CouponForm input[id=totPubLimitQty]").prop("disabled", true);
  2267. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent("label").addClass("checked");
  2268. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").attr('readonly', true);
  2269. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").prop('disabled', true);
  2270. $("#CouponForm input[id=chkNoLimitTotPubLimitQty]").parent().prop('disabled', true);
  2271. $("#CouponForm select[name=downAblYn]").attr("readonly", true);
  2272. $("#CouponForm select[name=downAblYn]").attr("disabled", true);
  2273. }else{
  2274. $("#CouponForm #limitedTimeCpnYn").val("N");
  2275. $("#CouponForm .limitedTimeCpnTab").hide();
  2276. $('#CouponForm .limitedTimeCpnArea').hide();
  2277. }
  2278. // 한번 저장되면 쿠폰유형, 할인쿠폰유형, 난수 생성수량, 시리얼명, 시리얼쿠폰발급수량, 할인방식, 적용범위 수정 불가 처리
  2279. $("#CouponForm input:radio[name='rdoCpnType']").attr('readonly', true);
  2280. $("#CouponForm input:radio[name='rdoCpnType']").prop('disabled', true);
  2281. $("#CouponForm input:radio[name='rdoCpnType']").parent().prop('disabled', true);
  2282. $("#CouponForm input:radio[name='rdoDcWay']").attr('readonly', true);
  2283. $("#CouponForm input:radio[name='rdoDcWay']").prop('disabled', true);
  2284. $("#CouponForm input:radio[name='rdoDcWay']").parent().prop('disabled', true);
  2285. $("#CouponForm input:radio[name='dcCdGb']").attr('readonly', true);
  2286. $("#CouponForm input:radio[name='dcCdGb']").prop('disabled', true);
  2287. $("#CouponForm input:radio[name='dcCdGb']").parent().prop('disabled', true);
  2288. $("#CouponForm input:radio[name='dcCdGb']:radio[value=" + cpnDetail.dcCdGb + "]").prop('checked', true);
  2289. $("#CouponForm input[name='serialCpnNm']").prop("disabled", true);
  2290. $("#CouponForm input[name='serialCpnQty']").prop("disabled", true);
  2291. $("#CouponForm input[name='randomCpnQty']").prop("disabled", true);
  2292. $("#CouponForm input:radio[name='rdoApplyScope']").attr('readonly', true);
  2293. $("#CouponForm input:radio[name='rdoApplyScope']").prop('disabled', true);
  2294. $("#CouponForm input:radio[name='rdoApplyScope']").parent().prop('disabled', true);
  2295. // 할인방식이 할인율이면 최대할인금액 노출
  2296. if(cpnDetail.dcWay == "G240_11"){
  2297. $("#CouponForm .maxDcAmtArea").show();
  2298. }
  2299. // 주문서 쿠폰이면 할인쿠폰유형 노출
  2300. if(cpnDetail.cpnType == "G230_20") {
  2301. $("#CouponForm .dcCdGb").show();
  2302. }
  2303. // 할인코드유형이 일반유형이 아니면
  2304. if(cpnDetail.dcCdGb != "G233_00" && cpnDetail.dcCdGb != "G233_30") {
  2305. $("#CouponForm .randomCpnTab").show(); // 시리얼 및 난수 TAB 노출
  2306. $("#CouponForm .dcCdCheck1").hide(); // 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
  2307. $("#CouponForm .dcCdCheck2").hide(); // 총발행제한수량, 1회발행수량, 1인당발행제한수량 숨김
  2308. if(cpnDetail.dcCdGb == "G233_10") { // 시리얼 유형
  2309. $("#CouponForm input[name='serialCpnQty']").val(cpnDetail.totPubLimitQty);
  2310. $("#CouponForm input[name='serialCpnNm']").val(cpnDetail.rdCpnNm);
  2311. $("#CouponForm .normalCol").attr("colspan", "5");
  2312. $("#CouponForm .serialCpnArea").show();
  2313. $("#CouponForm .randomCpnArea").hide();
  2314. } else if (cpnDetail.dcCdGb == "G233_20") {
  2315. $("#CouponForm input[name='randomCpnQty']").val(cpnDetail.totPubLimitQty);
  2316. $("#CouponForm .normalCol").attr("colspan", "");
  2317. $("#CouponForm .randomCpnArea").show();
  2318. $("#CouponForm .serialCpnArea").hide();
  2319. }
  2320. }
  2321. if($("#CouponForm input[name=rdoDcWay]:checked").val() == 'G240_10') {
  2322. $("#CouponForm .maxDcAmtArea").hide();
  2323. }else{
  2324. $('#dcPvalSpan').text("%");
  2325. $('#dcMvalSpan').text("%");
  2326. $('#dcAvalSpan').text("%");
  2327. }
  2328. // 쿠폰다운 날짜
  2329. let edDtArr;
  2330. if(!gagajf.isNull(cpnDetail.downEddt)){
  2331. edDtArr = cpnDetail.downEddt.split(" ");
  2332. if(edDtArr[1] == "23:59:59") {
  2333. edHour = "24";
  2334. edMinute = "00";
  2335. $("#CouponForm #downEdMM option").hide();
  2336. $('#CouponForm #downEdMM option:first').show().prop("selected", true);
  2337. }
  2338. }
  2339. // 유효 날짜
  2340. let availEdDtArr;
  2341. if(!gagajf.isNull(cpnDetail.availEddt)){
  2342. availEdDtArr = cpnDetail.availEddt.split(" ");
  2343. if(availEdDtArr[1] == "23:59:59") {
  2344. edHour = "24";
  2345. edMinute = "00";
  2346. $("#CouponForm #availEdMM option").hide();
  2347. $('#CouponForm #availEdMM option:first').show().prop("selected", true);
  2348. }
  2349. }
  2350. // 첫구매 날짜
  2351. let firstBuyEdDtArr;
  2352. if(!gagajf.isNull(cpnDetail.buyEddt)){
  2353. firstBuyEdDtArr = cpnDetail.buyEddt.split(" ");
  2354. if(firstBuyEdDtArr[1] == "23:59:59") {
  2355. edHour = "24";
  2356. edMinute = "00";
  2357. $("#CouponForm #buyEdMM option").hide();
  2358. $('#CouponForm #buyEdMM option:first').show().prop("selected", true);
  2359. }
  2360. }
  2361. // 신규가입 날짜
  2362. let custJoinEdDtArr;
  2363. if(!gagajf.isNull(cpnDetail.custJoinEddt)){
  2364. custJoinEdDtArr = cpnDetail.custJoinEddt.split(" ");
  2365. if(custJoinEdDtArr[1] == "23:59:59") {
  2366. edHour = "24";
  2367. edMinute = "00";
  2368. $("#CouponForm #custJoinEdMM option").hide();
  2369. $('#CouponForm #custJoinEdMM option:first').show().prop("selected", true);
  2370. }
  2371. }
  2372. // 만약 쿠폰 발급한 내역이 있으면 쿠폰수정못하게 readonly , disabled 속성 추가
  2373. if (issueCnt > 0) {
  2374. $("#CouponForm #usableCustGb").attr('readonly', true);
  2375. $("#CouponForm #usableCustGb").attr('disabled', true);
  2376. $("#CouponForm #afChannel").attr('readonly', true);
  2377. $("#CouponForm #afChannel").attr('disabled', true);
  2378. $("#CouponForm #usableCustGrade").attr('readonly', true);
  2379. $("#CouponForm #usableCustGrade").attr('disabled', true);
  2380. $("#CouponForm #endAlimYn").attr('readonly', true);
  2381. $("#CouponForm #endAlimYn").attr('disabled', true);
  2382. $("#CouponForm #firstOrdYn").attr('readonly', true);
  2383. $("#CouponForm #firstOrdYn").attr('disabled', true);
  2384. $("#CouponForm #reissuance").attr('readonly', true);
  2385. $("#CouponForm #reissuance").attr('disabled', true);
  2386. $("#CouponForm #dnGb").attr('readonly', true);
  2387. $("#CouponForm #dnGb").attr('disabled', true);
  2388. $("#CouponForm #newCustYn").attr('readonly', true);
  2389. $("#CouponForm #newCustYn").attr('disabled', true);
  2390. $("#CouponForm #pdGb").attr('readonly', true);
  2391. $("#CouponForm #pdGb").attr('disabled', true);
  2392. $("#CouponForm #downAblYn").attr('readonly', true);
  2393. $("#CouponForm #downAblYn").attr('disabled', true);
  2394. $("#CouponForm #siteCd").attr('readonly', true);
  2395. $("#CouponForm #siteCd").attr('disabled', true);
  2396. $("#CouponForm #cpnNm").attr('readonly', true);
  2397. $("#CouponForm #cpnNm").attr('disabled', true);
  2398. $("#CouponForm #dcPval").attr('readonly', true);
  2399. $("#CouponForm #dcPval").attr('disabled', true);
  2400. $("#CouponForm #dcMval").attr('readonly', true);
  2401. $("#CouponForm #dcMval").attr('disabled', true);
  2402. $("#CouponForm #dcAval").attr('readonly', true);
  2403. $("#CouponForm #dcAval").attr('disabled', true);
  2404. $("#CouponForm #maxDcAmt").attr('readonly', true);
  2405. $("#CouponForm #maxDcAmt").attr('disabled', true);
  2406. $("#CouponForm #totPubLimitQty").attr('readonly', true);
  2407. $("#CouponForm #totPubLimitQty").attr('disabled', true);
  2408. $("#CouponForm #custPubLimitQty").attr('readonly', true);
  2409. $("#CouponForm #custPubLimitQty").attr('disabled', true);
  2410. $("#CouponForm #onePubQty").attr('readonly', true);
  2411. $("#CouponForm #onePubQty").attr('disabled', true);
  2412. $("#CouponForm #downStDay").attr('readonly', true);
  2413. $("#CouponForm #downStDay").attr('disabled', true);
  2414. $("#CouponForm #downStHH").attr('readonly', true);
  2415. $("#CouponForm #downStHH").attr('disabled', true);
  2416. $("#CouponForm #downStMM").attr('readonly', true);
  2417. $("#CouponForm #downStMM").attr('disabled', true);
  2418. $("#CouponForm #downEdDay").attr('readonly', true);
  2419. $("#CouponForm #downEdDay").attr('disabled', true);
  2420. $("#CouponForm #downEdHH").attr('readonly', true);
  2421. $("#CouponForm #downEdHH").attr('disabled', true);
  2422. $("#CouponForm #downEdMM").attr('readonly', true);
  2423. $("#CouponForm #downEdMM").attr('disabled', true);
  2424. $("#CouponForm #buyLimitAmt").attr('readonly', true);
  2425. $("#CouponForm input:radio[name='rdoDcWay']").attr('readonly', true);
  2426. $("#CouponForm input:radio[name='rdoApplyScope']").attr('readonly', true);
  2427. $("#CouponForm .rdoBtn").css('cursor', 'auto');
  2428. $("#CouponForm #cpnId").attr('readonly', true);
  2429. $("#CouponForm #cpnId").attr('disabled', true);
  2430. $("#CouponForm input:checkbox[name='cpnCreateType']").attr('readonly', true);
  2431. $("#CouponForm input:checkbox[name='cpnCreateType']").attr('disabled', true);
  2432. $("#CouponForm input:checkbox[name=cpnCreateType]").attr('checked', true);
  2433. $("#CouponForm input:checkbox[name=cpnCreateType]").parent().addClass('checked');
  2434. $("#btnAddAf").hide();
  2435. $("#btnDeleteAf").hide();
  2436. $("#btnSupplyAdd").hide();
  2437. $("#btnSupplyDel").hide();
  2438. $("#btnBrandAdd").hide();
  2439. $("#btnBrandDel").hide();
  2440. $("#btnCateAdd").hide();
  2441. $("#btnCateDel").hide();
  2442. $("#btnGoodsAdd").hide();
  2443. $("#btnGoodsDel").hide();
  2444. $("#btnExcepGoodsAdd").hide();
  2445. $("#btnExcepGoodsDel").hide();
  2446. $("#btnAddApplyBurden").hide();
  2447. $("#btnDelApplyBurden").hide();
  2448. }
  2449. // 다운로드기간 세팅
  2450. splitDate("start", cpnDetail.downStdt, "down");
  2451. splitDate("end", cpnDetail.downEddt, "down");
  2452. // 유효기간이 날짜인경우 날짜 세팅
  2453. if (cpnDetail.pdGb == "P") {
  2454. splitDate("start", cpnDetail.availStdt, "avail");
  2455. splitDate("end", cpnDetail.availEddt, "avail");
  2456. if(issueCnt > 0) {
  2457. $("#CouponForm #availStDay").attr('readonly', true);
  2458. $("#CouponForm #availStDay").attr('disabled', true);
  2459. $("#CouponForm #availStHH").attr('readonly', true);
  2460. $("#CouponForm #availStHH").attr('disabled', true);
  2461. $("#CouponForm #availStMM").attr('readonly', true);
  2462. $("#CouponForm #availStMM").attr('disabled', true);
  2463. $("#CouponForm #availEdDay").attr('readonly', true);
  2464. $("#CouponForm #availEdDay").attr('disabled', true);
  2465. $("#CouponForm #availEdHH").attr('readonly', true);
  2466. $("#CouponForm #availEdHH").attr('disabled', true);
  2467. $("#CouponForm #availEdMM").attr('readonly', true);
  2468. $("#CouponForm #availEdMM").attr('disabled', true);
  2469. }
  2470. } else {
  2471. $("#CouponForm #availDays").val(cpnDetail.availDays);
  2472. $('#CouponForm #availEdHH option:last').attr("selected", "selected");
  2473. $('#CouponForm #availEdMM option:last').attr("selected", "selected");
  2474. }
  2475. // 첫구매여부 적용하는 경우 날짜 세팅
  2476. if (cpnDetail.firstOrdYn == "Y") {
  2477. splitDate("start", cpnDetail.buyStdt, "buy");
  2478. splitDate("end", cpnDetail.buyEddt, "buy");
  2479. if(issueCnt > 0) {
  2480. $("#CouponForm #buyStDay").attr('readonly', true);
  2481. $("#CouponForm #buyStDay").attr('disabled', true);
  2482. $("#CouponForm #buyStHH").attr('readonly', true);
  2483. $("#CouponForm #buyStHH").attr('disabled', true);
  2484. $("#CouponForm #buyStMM").attr('readonly', true);
  2485. $("#CouponForm #buyStMM").attr('disabled', true);
  2486. }
  2487. }
  2488. // 신규회원여부 적용하는 경우 날짜 세팅
  2489. if (cpnDetail.newCustYn == "Y") {
  2490. splitDate("start", cpnDetail.custJoinStdt, "custJoin");
  2491. splitDate("end", cpnDetail.custJoinEddt, "custJoin");
  2492. if(issueCnt > 0) {
  2493. $("#CouponForm #custJoinStDay").attr('readonly', true);
  2494. $("#CouponForm #custJoinStDay").attr('disabled', true);
  2495. $("#CouponForm #custJoinStHH").attr('readonly', true);
  2496. $("#CouponForm #custJoinStHH").attr('disabled', true);
  2497. $("#CouponForm #custJoinStMM").attr('readonly', true);
  2498. $("#CouponForm #custJoinStMM").attr('disabled', true);
  2499. }
  2500. }
  2501. // 대기상태 아닐 때 , 체크박스 disabled, 입력불가
  2502. if(cpnDetail.cpnStat != 'G232_10'){
  2503. $("#CouponForm").find("input[name=usableCustGbArr]").each(function (){
  2504. $(this).attr('disabled', true);
  2505. });
  2506. $("#CouponForm").find("input[name=usableCustGradeArr]").each(function (){
  2507. $(this).attr('disabled', true);
  2508. });
  2509. $("#CouponForm").find("input[name=payTypeArr]").each(function (){
  2510. $(this).attr('disabled', true);
  2511. });
  2512. $("#CouponForm #usableCustGb").attr('readonly', true);
  2513. $("#CouponForm #usableCustGb").attr('disabled', true);
  2514. $("#CouponForm #afChannel").attr('readonly', true);
  2515. $("#CouponForm #afChannel").attr('disabled', true);
  2516. $("#CouponForm #usableCustGrade").attr('readonly', true);
  2517. $("#CouponForm #usableCustGrade").attr('disabled', true);
  2518. $("#CouponForm #endAlimYn").attr('readonly', true);
  2519. $("#CouponForm #endAlimYn").attr('disabled', true);
  2520. $("#CouponForm #firstOrdYn").attr('readonly', true);
  2521. $("#CouponForm #firstOrdYn").attr('disabled', true);
  2522. $("#CouponForm #reissuance").attr('readonly', true);
  2523. $("#CouponForm #reissuance").attr('disabled', true);
  2524. $("#CouponForm #dnGb").attr('readonly', true);
  2525. $("#CouponForm #dnGb").attr('disabled', true);
  2526. $("#CouponForm #newCustYn").attr('readonly', true);
  2527. $("#CouponForm #newCustYn").attr('disabled', true);
  2528. $("#CouponForm #pdGb").attr('readonly', true);
  2529. $("#CouponForm #pdGb").attr('disabled', true);
  2530. $("#CouponForm #downAblYn").attr('readonly', true);
  2531. $("#CouponForm #downAblYn").attr('disabled', true);
  2532. $("#CouponForm #siteCd").attr('readonly', true);
  2533. $("#CouponForm #siteCd").attr('disabled', true);
  2534. $("#CouponForm #cpnNm").attr('readonly', true);
  2535. $("#CouponForm #cpnNm").attr('disabled', true);
  2536. $("#CouponForm #dcPval").attr('readonly', true);
  2537. $("#CouponForm #dcPval").attr('disabled', true);
  2538. $("#CouponForm #dcMval").attr('readonly', true);
  2539. $("#CouponForm #dcMval").attr('disabled', true);
  2540. $("#CouponForm #dcAval").attr('readonly', true);
  2541. $("#CouponForm #dcAval").attr('disabled', true);
  2542. $("#CouponForm #maxDcAmt").attr('readonly', true);
  2543. $("#CouponForm #maxDcAmt").attr('disabled', true);
  2544. $("#CouponForm #totPubLimitQty").attr('readonly', true);
  2545. $("#CouponForm #totPubLimitQty").attr('disabled', true);
  2546. $("#CouponForm #custPubLimitQty").attr('readonly', true);
  2547. $("#CouponForm #custPubLimitQty").attr('disabled', true);
  2548. $("#CouponForm #onePubQty").attr('readonly', true);
  2549. $("#CouponForm #onePubQty").attr('disabled', true);
  2550. $("#CouponForm #downStDay").attr('readonly', true);
  2551. $("#CouponForm #downStDay").attr('disabled', true);
  2552. $("#CouponForm #downStHH").attr('readonly', true);
  2553. $("#CouponForm #downStHH").attr('disabled', true);
  2554. $("#CouponForm #downStMM").attr('readonly', true);
  2555. $("#CouponForm #downStMM").attr('disabled', true);
  2556. $("#CouponForm #downEdDay").attr('readonly', true);
  2557. $("#CouponForm #downEdDay").attr('disabled', true);
  2558. $("#CouponForm #downEdHH").attr('readonly', true);
  2559. $("#CouponForm #downEdHH").attr('disabled', true);
  2560. $("#CouponForm #downEdMM").attr('readonly', true);
  2561. $("#CouponForm #downEdMM").attr('disabled', true);
  2562. $("#CouponForm #buyLimitAmt").attr('readonly', true);
  2563. $("#CouponForm input:radio[name='rdoDcWay']").attr('readonly', true);
  2564. $("#CouponForm input:radio[name='rdoApplyScope']").attr('readonly', true);
  2565. $("#CouponForm .rdoBtn").css('cursor', 'auto');
  2566. $("#CouponForm #cpnId").attr('readonly', true);
  2567. $("#CouponForm #cpnId").attr('disabled', true);
  2568. $("#CouponForm input:checkbox[name='cpnCreateType']").attr('readonly', true);
  2569. $("#CouponForm input:checkbox[name='cpnCreateType']").attr('disabled', true);
  2570. $("#CouponForm input:checkbox[name=cpnCreateType]").attr('checked', true);
  2571. $("#CouponForm input:checkbox[name=cpnCreateType]").parent().addClass('checked');
  2572. $("#CouponForm #availStDay").attr('readonly', true);
  2573. $("#CouponForm #availStDay").attr('disabled', true);
  2574. $("#CouponForm #availStHH").attr('readonly', true);
  2575. $("#CouponForm #availStHH").attr('disabled', true);
  2576. $("#CouponForm #availStMM").attr('readonly', true);
  2577. $("#CouponForm #availStMM").attr('disabled', true);
  2578. $("#CouponForm #availEdDay").attr('readonly', true);
  2579. $("#CouponForm #availEdDay").attr('disabled', true);
  2580. $("#CouponForm #availEdHH").attr('readonly', true);
  2581. $("#CouponForm #availEdHH").attr('disabled', true);
  2582. $("#CouponForm #availEdMM").attr('readonly', true);
  2583. $("#CouponForm #availEdMM").attr('disabled', true);
  2584. $("#btnAddAf").hide();
  2585. $("#btnDeleteAf").hide();
  2586. $("#btnSupplyAdd").hide();
  2587. $("#btnSupplyDel").hide();
  2588. $("#btnBrandAdd").hide();
  2589. $("#btnBrandDel").hide();
  2590. $("#btnCateAdd").hide();
  2591. $("#btnCateDel").hide();
  2592. $("#btnGoodsAdd").hide();
  2593. $("#btnGoodsDel").hide();
  2594. $("#btnExcepGoodsAdd").hide();
  2595. $("#btnExcepGoodsDel").hide();
  2596. $("#btnAddApplyBurden").hide();
  2597. $("#btnDelApplyBurden").hide();
  2598. }
  2599. }
  2600. // 기본세팅
  2601. pdGbChange();
  2602. firstOrdYnChange();
  2603. newCustYnChange();
  2604. // fnChangeAfLinkCdList();
  2605. // 제휴채널2뎁스 기본세팅
  2606. if(cpnDetail != null ) {
  2607. $("#CouponForm #afLinkCd").val(cpnDetail.afLinkCd).prop("selected", true);
  2608. if(issueCnt > 0 ) {
  2609. $("#CouponForm #afLinkCd").attr('readonly', true);
  2610. $("#CouponForm #afLinkCd").attr('disabled', true);
  2611. }
  2612. }
  2613. });
  2614. // 날짜분리 ( 시작/종료날짜구분(start , end) , 날짜String , 적용타겟대상 )
  2615. function splitDate(stedGb , date , targetGb ){
  2616. var str = date;
  2617. if (str != null && str != '') {
  2618. var dateStr = str.split(' ');
  2619. var timeArr = dateStr[1].split(':');
  2620. if(stedGb == "start") {
  2621. $("#CouponForm #"+targetGb+"StDay").val(dateStr[0]);
  2622. $("#CouponForm #"+targetGb+"StHH").val(timeArr[0]);
  2623. $("#CouponForm #"+targetGb+"StMM").val(timeArr[1]);
  2624. } else {
  2625. $("#CouponForm #"+targetGb+"EdDay").val(dateStr[0]);
  2626. $("#CouponForm #"+targetGb+"EdHH").val(timeArr[0]);
  2627. $("#CouponForm #"+targetGb+"EdMM").val(timeArr[1]);
  2628. }
  2629. }
  2630. }
  2631. // 제한없음 문구 변경
  2632. $("input[name=totPubLimitQty],input[name=custPubLimitQty],input[name=buyLimitAmt],input[name=onePubQty]").change(function(){
  2633. if($(this).val() == "0"){
  2634. $("#"+$(this).attr("name")+"Span").html("*제한없음");
  2635. }else{
  2636. $("#"+$(this).attr("name")+"Span").html("");
  2637. }
  2638. $("#"+$(this).attr("name")+"Span").css("color", "red");
  2639. });
  2640. setTimeout(function(){
  2641. $("input[name=totPubLimitQty],input[name=custPubLimitQty],input[name=buyLimitAmt],input[name=onePubQty]").change();
  2642. }, 1);
  2643. // 콤마 찍어주기
  2644. $(function(){
  2645. setComma("CouponForm" , true);
  2646. });
  2647. function setComma(formId, pBoolean){
  2648. setTimeout(function(){
  2649. //숫자타입 콤마 찍어주기
  2650. $("#"+formId+" [data-valid-type=numeric]").each(function(){
  2651. $(this).change(function(){
  2652. if(pBoolean){
  2653. $(this).val($(this).val().addComma());
  2654. }else{
  2655. $(this).val($(this).val().removeComma());
  2656. }
  2657. });
  2658. if(pBoolean){
  2659. $(this).val($(this).val().addComma());
  2660. }else{
  2661. $(this).val($(this).val().removeComma());
  2662. }
  2663. });
  2664. }, 300);
  2665. }
  2666. // 진행 버튼 클릭
  2667. $("#btnChangeStatIng").on("click", function() {
  2668. mcxDialog.confirmC("쿠폰을 진행하시겠습니까?<br/>진행 후에는 수정이 제한될 수 있습니다.", {
  2669. btn: ["아니오","예"],
  2670. btnClick: function(index) {
  2671. if(index == 2) {
  2672. let data = { cpnStat : "G232_11" // 진행
  2673. , cpnId : $('#CouponForm input[name=cpnId]').val()
  2674. }
  2675. var jsonData = JSON.stringify(data);
  2676. gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
  2677. }
  2678. }
  2679. });
  2680. });
  2681. // 중지 버튼 클릭
  2682. $("#btnCouponStop").on("click", function() {
  2683. mcxDialog.confirmC("쿠폰 진행을 중지하시겠습니까?<br/>중지 후에는 진행으로 복원하실 수 없습니다.", {
  2684. btn: ["아니오","예"],
  2685. btnClick: function(index) {
  2686. if(index == 2) {
  2687. let data = { cpnStat : "G232_12" // 중지
  2688. , cpnId : $('#CouponForm input[name=cpnId]').val()
  2689. }
  2690. var jsonData = JSON.stringify(data);
  2691. gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
  2692. }
  2693. }
  2694. });
  2695. });
  2696. // 삭제 버튼 클릭
  2697. $("#btnCouponDelete").on("click", function() {
  2698. mcxDialog.confirmC("쿠폰을 삭제하시겠습니까?<br/>삭제한 프로모션은 복원하실 수 없습니다.", {
  2699. btn: ["아니오","예"],
  2700. btnClick: function(index) {
  2701. if(index == 2) {
  2702. let data = { cpnStat: "G232_14" // 삭제
  2703. , cpnId : $('#CouponForm input[name=cpnId]').val()
  2704. }
  2705. var jsonData = JSON.stringify(data);
  2706. gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
  2707. }
  2708. }
  2709. });
  2710. });
  2711. // 종료 버튼 클릭
  2712. $("#btnCouponEnd").on("click", function() {
  2713. mcxDialog.confirmC("쿠폰을 종료하시겠습니까?<br/>종료한 프로모션은 복원하실 수 없습니다.", {
  2714. btn: ["아니오","예"],
  2715. btnClick: function(index) {
  2716. if(index == 2) {
  2717. let data = { cpnStat: "G232_13" // 종료
  2718. , cpnId : $('#CouponForm input[name=cpnId]').val()
  2719. }
  2720. var jsonData = JSON.stringify(data);
  2721. gagajf.ajaxJsonSubmit('/marketing/coupon/changeStat', jsonData, fnCouponSaveCollback);
  2722. }
  2723. }
  2724. });
  2725. });
  2726. // 제휴채널 추가
  2727. $('#btnAddAf').on('click' , function () {
  2728. cfnOpenAfChannelPopup("callBackAf");
  2729. });
  2730. // 제휴채널 콜백
  2731. var callBackAf = function(result) {
  2732. // 기존 리스트 데이터 for
  2733. for(let i = 0 ; i < result.length ; i++) {
  2734. let addChk = true, gridListValue = gagaAgGrid.getAllRowData(afLinkOptions); // 받아온 모든 데이터
  2735. // 받아온 data for
  2736. for(let j = 0 ; j < gridListValue.length ; j++) {
  2737. // 동일한 data는 추가하지 않음
  2738. if(gridListValue[j].afLinkCd == result[i].afLinkCd) { addChk = false; } // 중복체크
  2739. }
  2740. // 중복되지 않은 데이터 리스트에 추가
  2741. if(addChk) {
  2742. gagaAgGrid.addRowData(afLinkOptions, {"afLinkCd":result[i].afLinkCd , "afLinkNm":result[i].afLinkNm, "afChannel":result[i].afChannel});
  2743. }
  2744. }
  2745. }
  2746. // 적용범위 클릭 시
  2747. $("#CouponForm input[name=rdoApplyScope]").bind('click', function () {
  2748. if($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val() == 'A'){ //전체적용일때
  2749. supplyGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(supplyGridOptions)});
  2750. brandGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(brandGridOptions)});
  2751. cateGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(cateGridOptions)});
  2752. goodsGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(goodsGridOptions)});
  2753. excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(excepGoodsGridOptions)});
  2754. $("#CouponForm .supplyTrArea").hide();
  2755. $("#CouponForm .brandTrArea").hide();
  2756. $("#CouponForm .categoryTrArea").hide();
  2757. $("#CouponForm .goodsTrArea").hide();
  2758. $("#CouponForm .exceptArea").hide();
  2759. }else{ //개별적용일때
  2760. var radioValue = $("#CouponForm input[name=rdoCpnType]:checked").val();
  2761. // 배송비 쿠폰일때
  2762. if(radioValue == 'G230_30'){
  2763. $("#CouponForm .supplyTrArea").show();
  2764. }else{
  2765. $("#CouponForm .supplyTrArea").show();
  2766. $("#CouponForm .brandTrArea").show();
  2767. $("#CouponForm .categoryTrArea").show();
  2768. $("#CouponForm .goodsTrArea").show();
  2769. $("#CouponForm .exceptArea").show();
  2770. }
  2771. }
  2772. });
  2773. // 시리얼 쿠폰 사용
  2774. $("#serialCpnNm").bind("keyup",function(){
  2775. re = /[~!@\#$%^&*\()\-=+_']/gi;
  2776. var temp=$("#serialCpnNm").val();
  2777. if(re.test(temp)){ //특수문자가 포함되면 삭제하여 값으로 다시셋팅
  2778. $("#serialCpnNm").val(temp.replace(re,""));
  2779. }
  2780. $("#serialCpnNm").val($("#serialCpnNm").val().replaceAll(" ", ""));
  2781. });
  2782. /*]]>*/
  2783. </script>
  2784. </html>