PlanningEventAttendFormMob.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org"
  4. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  5. layout:decorator="mob/common/layout/DefaultLayoutMob">
  6. <!--
  7. *******************************************************************************
  8. * @source : PlanningEventAttendFormMob.html
  9. * @desc : 출석체크 이벤트 Page
  10. *============================================================================
  11. * STYLE24
  12. * Copyright(C) 2020 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.04.08 sowon 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
  21. <th:block layout:fragment="content">
  22. <main role="" id="" class="container dp">
  23. <section class="content dp_detail_visual">
  24. <div class="inner">
  25. <div class="promotion_tit">
  26. <h3 th:text="${planInfo.planNm}"></h3>
  27. <div class="period">
  28. <span th:text="${planInfo.dispStdt}"></span> - <span th:text="${planInfo.dispEddt}"></span>
  29. </div>
  30. <button type="button" class="share_btn"><img src="/images/mo/ico_share_btn.png" alt="공유" /></button>
  31. </div>
  32. </div>
  33. <div class="inner wide">
  34. <div class="stamp_event">
  35. <div class="event_calander">
  36. <div class="check_title">
  37. <p>출석할수록 늘어나는 혜택!</p>
  38. <h3 id="monthHead"><strong>1월</strong> 출석체크</h3>
  39. </div>
  40. <div class="check_info">
  41. <span class="today">오늘</span>
  42. <span class="complete">출석완료</span>
  43. </div>
  44. <div class="tbl_wrap">
  45. <div class="my_attend_day">
  46. <p>나의 출석 일수는?</p>
  47. <span class="day">
  48. <span></span>일
  49. </span>
  50. </div>
  51. <table>
  52. <colgroup>
  53. <col width="14.28%">
  54. <col width="14.28%">
  55. <col width="14.28%">
  56. <col width="14.28%">
  57. <col width="14.28%">
  58. <col width="14.28%">
  59. <col width="14.28%">
  60. </colgroup>
  61. <thead>
  62. <tr>
  63. <th class="sun">SUN</th>
  64. <th>MON</th>
  65. <th>TUE</th>
  66. <th>WED</th>
  67. <th>THU</th>
  68. <th>FRI</th>
  69. <th class="sat">SAT</th>
  70. </tr>
  71. </thead>
  72. <tbody id="monthTbody">
  73. </tbody>
  74. </table>
  75. </div>
  76. <div class="btn_wrap">
  77. <button type="button" class="btn_check btn btn_dark" onclick="fnAttendEntry()">출석 체크</button>
  78. </div>
  79. </div>
  80. <div class="event_benefit">
  81. <h4>출석 일수에 따라 달라지는 혜택</h4>
  82. <div class="benefit_con">
  83. <ul>
  84. <th:block th:each="a, benefitStat : ${benefitList}">
  85. <li th:if="${a.benefitGb == 'P' and ( a.basDays > 0 and a.pntAmt > 0)}">
  86. <div class="benfit_point">
  87. <span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span>
  88. </div>
  89. </li>
  90. <li th:if="${a.benefitGb == 'C' and ( a.basDays > 0 and a.dcVal > 0)}">
  91. <div class="benfit_coupon">
  92. <th:block th:if="${a.dcWay == '%'}">
  93. <span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span><strong> 할인 쿠폰</strong>
  94. </th:block>
  95. <th:block th:if="${a.dcWay == '원'}">
  96. <span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.dcVal}"></em>원</span><strong> 할인 쿠폰</strong>
  97. </th:block>
  98. </div>
  99. </li>
  100. <li th:if="${a.benefitGb == 'A' and ( a.basDays > 0 and a.pntAmt > 0)}">
  101. <div class="benfit_coupon">
  102. <th:block th:if="${a.dcWay == '%'}">
  103. <span th:text="${a.basDays}"></span> 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span> <strong>할인 쿠폰</strong>
  104. </th:block>
  105. <th:block th:if="${a.dcWay == '원'}">
  106. <span th:text="${a.basDays}"></span> 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>원</span> <strong>할인 쿠폰</strong>
  107. </th:block>
  108. </div>
  109. </li>
  110. </th:block>
  111. </ul>
  112. </div>
  113. <!-- //210414_추가 : img => html 구조 변경 -->
  114. </div>
  115. </div>
  116. </div>
  117. <div class="inner">
  118. <div class="announce_txt " th:if="${fsrcInfoTop != null}">
  119. <div class="note_txt">
  120. <img src="/images/mo/ico_content_find03.png" alt="유의사항">
  121. <p>유의사항</p>
  122. </div>
  123. <div class="announce_list" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcMob,'&amplt;','<'),'&ampgt;','>')}">
  124. <!-- <ul>
  125. <li>본 이벤트는 ID당 1회만 참여 가능합니다.</li>
  126. <li>설문조사 참여 시 포인트를 지급해드립니다. (이벤트 종료 후, 일괄 지급)</li>
  127. <li>지급된 포인트는 [ 마이페이지 > 나의 지갑 ] 메뉴에서 확인할 수 있습니다.</li>
  128. </ul> -->
  129. </div>
  130. </div>
  131. </div>
  132. <div class="inner">
  133. <div class="other_promotion_slide">
  134. <div class="tit">
  135. <h4>다른 이벤트 보기</h4>
  136. </div>
  137. <div class="swiper-container">
  138. <div class="swiper-wrapper">
  139. <th:block th:each="PlanData, PlanStat : ${planList}">
  140. <div class="swiper-slide">
  141. <a href="javascript:void(0);" th:onclick="cfnGoToPlanDetail([[${PlanData.planSq}]])">
  142. <div class="img">
  143. <img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}">
  144. </div>
  145. <div class="txt">
  146. <p class="subject" th:text="${PlanData.planNm}"></p>
  147. </div>
  148. </a>
  149. </div>
  150. </th:block>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </section>
  156. <!-- (공통) 공유팝업 -->
  157. <div class="modal fade" id="tglShare" tabindex="-1" role="dialog"
  158. aria-labelledby="aModalLabel" aria-hidden="true">
  159. <div class="modal-dialog" role="document">
  160. <div class="modal-content">
  161. <div class="modal-header">
  162. <h5 class="modal-title" id="aModalLabel">공유하기</h5>
  163. </div>
  164. <div class="modal-body">
  165. <!-- toggle contents -->
  166. <div id="layerShare" class="setShare open"
  167. th:with="stylelUrl=${@environment.getProperty('domain.front')}, planView=${@environment.getProperty('upload.image.view')}">
  168. <span>
  169. <button type="button" id="kakao-link-btn" class="kk"
  170. th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainMimg}');|">
  171. <span>카카오톡</span>
  172. </button>
  173. <button type="button" class="fb"
  174. th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
  175. <span>페이스북</span>
  176. </button>
  177. <button type="button" class="tw"
  178. th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|">
  179. <span>트위터</span>
  180. </button>
  181. <button type="button" class="url btn_copy">
  182. <span>URL</span>
  183. </button>
  184. </span>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. </div>
  190. <script>
  191. // 공유팝업
  192. $('.share_btn').click(function(e){
  193. e.preventDefault();
  194. $('#tglShare').modal("show");
  195. });
  196. </script>
  197. </main> <script th:inline="javascript">
  198. /*<![CDATA[*/
  199. let today = new Date();
  200. let year = today.getFullYear();
  201. let date = today.getDate();
  202. let month =today.getMonth()+1;
  203. let calendar = [[${month}]];
  204. let planInfo = [[${planInfo}]];
  205. var custAttendList = [[${custAttendList}]];
  206. var appendHtml = function () {
  207. $("#monthTbody").html('');
  208. $.each(calendar, function(idx, item) {
  209. html = '<tr>\n';
  210. if (item.sun!=null && item.sun!='') {
  211. html += ' <td id="td_'+item.sun+'">\n';
  212. html += ' <div class="date" id="'+item.sun+'">'+item.sun+'</div>\n';
  213. html += ' </td>\n ';
  214. }else{
  215. html += ' <td>\n';
  216. html += ' <div class="date"></div>\n';
  217. html += ' </td>\n ';
  218. }
  219. if (item.mon!=null && item.mon!='') {
  220. html += ' <td id="td_'+item.mon+'">\n';
  221. html += ' <div class="date" id="'+item.mon+'">'+item.mon+'</div>\n';
  222. html += ' </td>\n ';
  223. }else{
  224. html += ' <td>\n';
  225. html += ' <div class="date"></div>\n';
  226. html += ' </td>\n ';
  227. }
  228. if (item.tue!=null && item.tue!='') {
  229. html += ' <td id="td_'+item.tue+'">\n';
  230. html += ' <div class="date" id="'+item.tue+'">'+item.tue+'</div>\n';
  231. html += ' </td>\n ';
  232. }else{
  233. html += ' <td>\n';
  234. html += ' <div class="date"></div>\n';
  235. html += ' </td>\n ';
  236. }
  237. if (item.wed!=null && item.wed!='') {
  238. html += ' <td id="td_'+item.wed+'">\n';
  239. html += ' <div class="date" id="'+item.wed+'">'+item.wed+'</div>\n';
  240. html += ' </td>\n ';
  241. }else{
  242. html += ' <td>\n';
  243. html += ' <div class="date"></div>\n';
  244. html += ' </td>\n ';
  245. }
  246. if (item.thu!=null && item.thu!='') {
  247. html += ' <td id="td_'+item.thu+'">\n';
  248. html += ' <div class="date" id="'+item.thu+'">'+item.thu+'</div>\n';
  249. html += ' </td>\n ';
  250. }else{
  251. html += ' <td>\n';
  252. html += ' <div class="date"></div>\n';
  253. html += ' </td>\n ';
  254. }
  255. if (item.fri!=null && item.fri!='') {
  256. html += ' <td id="td_'+item.fri+'">\n';
  257. html += ' <div class="date" id="'+item.fri+'">'+item.fri+'</div>\n';
  258. html += ' </td>\n ';
  259. }else{
  260. html += ' <td>\n';
  261. html += ' <div class="date" ></div>\n';
  262. html += ' </td>\n ';
  263. }
  264. if (item.sat!=null && item.sat!='') {
  265. html += ' <td id="td_'+item.sat+'">\n';
  266. html += ' <div class="date" id="'+item.sat+'">'+item.sat+'</div>\n';
  267. html += ' </td>\n ';
  268. }else{
  269. html += ' <td>\n';
  270. html += ' <div class="date"></div>\n';
  271. html += ' </td>\n ';
  272. }
  273. html += '</tr>\n';
  274. $("#monthTbody").append(html);
  275. if (cfCheckLogin()) {
  276. $.each(custAttendList, function(idx1, item1) {
  277. $('.day').html('<span>' + custAttendList.length + '</span>일');
  278. if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
  279. || item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){
  280. $("#td_"+item1.entryDt).attr("class","complete");
  281. }
  282. })
  283. }
  284. })
  285. }
  286. var fnAttendEntry = function () {
  287. if (!cfCheckLogin()) {
  288. mcxDialog.alert("로그인 후 참여 가능합니다.");
  289. return false;
  290. }
  291. let data = {planSq : planInfo.planSq};
  292. let jsonData = JSON.stringify(data);
  293. gagajf.ajaxJsonSubmit('/planning/event/attend/entry', jsonData, fnInfoConfirmCallBack);
  294. }
  295. var fnInfoConfirmCallBack = function(result) {
  296. mcxDialog.alert(result.msg);
  297. appendHtml();
  298. $("#td_"+date).attr("class","complete");
  299. $('.day').html('<span>' + (custAttendList.length +1) + '</span>일');
  300. };
  301. $(document).ready(function() {
  302. $("#monthHead").html("<strong>"+month+"월</strong> 출석체크");
  303. appendHtml();
  304. if (!cfCheckLogin()) {
  305. $(".day").html("<span>0</span>일");
  306. }else{
  307. $.each(custAttendList, function(idx, item) {
  308. $('.day').html('<span>' + custAttendList.length + '</span>일');
  309. if(item.entryDt == date){
  310. $("#td_"+date).attr("class","complete");
  311. }else{
  312. $("#td_"+date).attr("class","today");
  313. }
  314. })
  315. }
  316. $(".title").html("<strong>"+month+"월</strong> 출석체크");
  317. //공유 버튼 토글
  318. $("button[data-name=openShare]").on("click", function(){
  319. $(this).toggleClass("on").next(".shareWrap").toggleClass("on");
  320. return false;
  321. });
  322. //영역밖 클릭으로 공유토글 닫기
  323. $("body").on('click', function(e) {
  324. if(!$(".shareWrap.on").parent().has(e.target).length) {
  325. $("button[data-name=openShare]").removeClass("on");
  326. $(".shareWrap").removeClass("on");
  327. };
  328. });
  329. $('.btn_copy').bind('click', function() {
  330. copyToClipboard();
  331. });
  332. /* SLIDE - 다른 기획전,이벤트 보기 */
  333. var ev_ohter_slide = new Swiper('.other_ev_slide .swiper-container', {
  334. slidesPerView: 'auto',
  335. spaceBetween: 8,
  336. centerMode:true,
  337. //navigation: {
  338. // nextEl: '.other_ev_slide .swiper-button-next',
  339. // prevEl: '.other_ev_slide .swiper-button-prev',
  340. //},
  341. });
  342. })
  343. /*]]>*/
  344. </script>
  345. </th:block>
  346. </body>
  347. </html>