SocialMainFormMob.html 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  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 : SocialMainFormMob.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.12 sowon 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <main role="" id="" class="container dp">
  22. <section class="content dp_hotdeal">
  23. <div class="nodata" style="display: none;">
  24. <div class="txt_box">
  25. <p>진행하는 핫딜이 없습니다.</p>
  26. </div>
  27. <div class="btn_box">
  28. <button class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);">
  29. <span>홈으로 가기</span>
  30. </button>
  31. </div>
  32. </div>
  33. <th:block th:if="${socialInfo != null}">
  34. <div class="inner wide">
  35. <div class="hotdeal">
  36. <div id="countdown">
  37. <span>남은시간 </span>
  38. <span id="h-hours"></span>
  39. <span id="h-minutes"></span>
  40. <span id="h-seconds"></span>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="inner">
  45. <div class="list_content">
  46. <div class="itemsGrp rowtype"><!-- itemsGrp rank hot deal --> <!-- rowtype 추가시 가로형태로 출력 -->
  47. <div class="list_content">
  48. <div class="itemsGrp" id="listBox">
  49. </div>
  50. </div>
  51. <div class="list_last" id="divLastPage" style="display: none;">마지막페이지 입니다.</div>
  52. </div>
  53. </div>
  54. </div>
  55. </th:block>
  56. </section>
  57. </main>
  58. <form id="socialForm" name="socialForm" action="#" th:action="@{'/social/list'}">
  59. <input type="hidden" name="pageNo" id="pageNo" value ="1"/>
  60. <input type="hidden" name="pageSize" value ="10"/>
  61. </form>
  62. <script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
  63. <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
  64. <!-- <script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script> -->
  65. <script th:inline="javascript">
  66. let socialInfo = [[${socialInfo}]];
  67. let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
  68. var socialAddCart = function (obj) {
  69. let btnType = "C";
  70. let params = [];
  71. let cart = new Object();
  72. cart.goodsCd = $(obj).attr("goodsCd");
  73. cart.optCd = $(obj).attr("optCd");
  74. cart.goodsQty = $(obj).attr("minOrdQty");
  75. cart.goodsType = $(obj).attr("goodsType");
  76. cart.cartGb = btnType;
  77. cart.afLinkCd = $(obj).attr("afLinkCd");
  78. cart.ithrCd = "";
  79. cart.contentsLoc = "";
  80. cart.planDtlSq = "";
  81. params.push(cart);
  82. // 장바구니담기
  83. if (params.length > 0){
  84. cfnAddCart(params);
  85. }
  86. }
  87. let fnGetSocialList = function(result) {
  88. var html = '';
  89. $.each(result.dataList, function(idx, item) {
  90. html += '<div class="item_prod">';
  91. if (item.stockQtySum == 0) {
  92. html += ' <div class="item_state sold_out"> ';
  93. }else{
  94. html += ' <div class="item_state"> ';
  95. }
  96. if (item.likeIt == 'likeit') {
  97. html += ' <button type="button" class="itemLike likeit " onclick="cfnMoPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
  98. }else{
  99. html += ' <button type="button" class="itemLike" onclick="cfnMoPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
  100. }
  101. html += ' <a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
  102. html += ' <div class="shape ranker"><span>특가</span></div>';
  103. html += ' <div class="itemPic">';
  104. html += ' <img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
  105. html += ' </div>';
  106. html += ' <p class="itemBrand">'+item.brandGroupNm+'</p>';
  107. html += ' <div class="itemName">'+item.goodsNm+'</div>';
  108. html += ' <p class="itemPrice">';
  109. if (item.currPrice != item.listPrice) {
  110. html += ' <span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
  111. }
  112. html += item.currPrice.addComma();
  113. if (item.dcRate != 0) {
  114. html += ' <span class=" itemPercent">'+item.dcRate.addComma()+'%</span>';
  115. }
  116. html += ' </p>';
  117. if(item.goodsTnm != null){
  118. html += ' <div class="itemComment">'+item.goodsTnm+'</div>';
  119. }
  120. html += ' <div class="itemEt">';
  121. html += ' <div class="shopBag">';
  122. html += ' <button class="btn btn_default" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'"><span>쇼핑백담기</span></button>';
  123. html += ' </div>';
  124. html += ' </div>';
  125. html += ' </a>';
  126. html += ' </div>';
  127. html += '</div>';
  128. });
  129. return html;
  130. }
  131. var fnSocialListSearch = function() {
  132. fnSocialInfiniteScrollInit();
  133. gagaInfiniteScroll.getHistory();
  134. }
  135. // 인피니트 스크롤 초기화
  136. var fnSocialInfiniteScrollInit = function(){
  137. sessionStorage.removeItem(document.location.href);
  138. //History 초기화
  139. $("#listBox").html("");
  140. }
  141. //인피니트 스크롤 이벤트 발생 시 데이터 가져오기
  142. var fnGetInfiniteScrollDataList = function(pageNum) {
  143. $("#socialForm input[name=pageNo]").val(pageNum+1);
  144. gagajf.ajaxFormSubmit("/social/list",document.socialForm, gagaInfiniteScroll.jsonToHtml);
  145. }
  146. var fnDrawInfiniteScrollData = function (result){
  147. let totalCnt = result.totalCnt;
  148. gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
  149. if (result.dataList != null && result.dataList.length > 0) {
  150. $(".nodata").hide();
  151. let lastPage = result.paging.pageable.pageNo;
  152. let endRow = result.endRow - result.paging.pageable.pageSize;
  153. var htm = fnGetSocialList(result, lastPage, endRow);
  154. gagaInfiniteScroll.draw(htm);
  155. }else{
  156. if($("#socialForm input[name=pageNo]").val()==1){
  157. $(".nodata").show();
  158. }
  159. $("#divLastPage").show();
  160. gagaInfiniteScroll.draw('not');
  161. }
  162. }
  163. //사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
  164. $(window).on("pageshow", function(event) {
  165. if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
  166. var historyData = sessionStorage.getItem(document.location.href);
  167. if(historyData!=null){
  168. historyData = JSON.parse(historyData);
  169. }else{
  170. historyData = {};
  171. }
  172. fnSocialListSearch();
  173. }else{
  174. fnSocialListSearch();
  175. }
  176. });
  177. $(function(){
  178. fnSocialListSearch();
  179. /* 핫딜 countDown */
  180. function hotdealTimer() {
  181. var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
  182. endTime = (Date.parse(endTime) / 1000);
  183. var now = new Date();
  184. now = (Date.parse(now) / 1000);
  185. var timeLeft = endTime - now;
  186. var days = Math.floor(timeLeft / 86400);
  187. var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
  188. var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
  189. var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
  190. if (hours < '10') { hours = '0' + hours; }
  191. if (minutes < '10') { minutes = '0' + minutes; }
  192. if (seconds < '10') { seconds = '0' + seconds; }
  193. //$('#d-days').html(days);
  194. $('#h-hours').html(hours + ' :');
  195. $('#h-minutes').html(minutes+ ' :');
  196. $('#h-seconds').html(seconds);
  197. }
  198. setInterval(function() { hotdealTimer(); }, 1000);
  199. /* countDown */
  200. });
  201. </script>
  202. </th:block>
  203. </body>
  204. </html>