SocialMainFormWeb.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  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="web/common/layout/DefaultLayoutWeb">
  6. <!--
  7. *******************************************************************************
  8. * @source : SocialMainFormWeb.html
  9. * @desc : 소셜메인(핫딜메인) Page
  10. *============================================================================
  11. * Pastelmall
  12. * Copyright(C) 2020 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.3.11 sowon 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <!-- container -->
  22. <div id="container" class="container dp">
  23. <div class="breadcrumb">
  24. <ul>
  25. <li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
  26. <li class="bread_2depth">핫딜</li>
  27. </ul>
  28. </div>
  29. <div class="wrap">
  30. <div class="nodata" style="display: none;">
  31. <div class="txt_box">
  32. <p>진행하는 핫딜이 없습니다.</p>
  33. </div>
  34. <div class="btn_box">
  35. <button class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);">
  36. <span>홈으로 가기</span>
  37. </button>
  38. </div>
  39. </div>
  40. <th:block th:if="${socialInfo != null}">
  41. <div id="socialDiv" style="display: none;">
  42. <div class="content wide dp_hotdeal"> <!-- 페이지특정 클래스 = dp_hotdeal -->
  43. <div class="cont_body">
  44. <div class="hotdeal">
  45. <img src="/images/pc/thumb/hotdeal_bg2.jpg" alt="핫한 아이템을 핫한 가격에 LAST DAY DEAL">
  46. <div id="countdown">
  47. <span id="h-hours"></span>
  48. <span id="h-minutes"></span>
  49. <span id="h-seconds"></span>
  50. </div>
  51. </div>
  52. <div class="list_content">
  53. <div class="itemsGrp rowtype"> <!-- itemsGrp rank hot deal --> <!-- rowtype 추가시 가로형태로 출력 -->
  54. <section id="infiniteContainer">
  55. <div id="listBoxOuter">
  56. <ul id="listBox">
  57. </ul>
  58. </div>
  59. </section>
  60. </div>
  61. <div class="last_page" id="divLastPage" style="display: none;">
  62. <span>마지막 페이지입니다.</span>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. </th:block>
  69. </div>
  70. </div>
  71. <form id="socialForm" name="socialForm" action="#" th:action="@{'/social/list'}">
  72. <input type="hidden" name="pageNo" id="pageNo" value ="1"/>
  73. <input type="hidden" name="pageSize" value ="10"/>
  74. </form>
  75. <script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
  76. <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
  77. <script th:inline="javascript">
  78. let socialInfo = [[${socialInfo}]];
  79. var socialAddCart = function (obj) {
  80. let btnType = "C";
  81. let params = [];
  82. let cart = new Object();
  83. cart.goodsCd = $(obj).attr("goodsCd");
  84. cart.optCd = $(obj).attr("optCd");
  85. cart.goodsQty = $(obj).attr("minOrdQty");
  86. cart.goodsType = $(obj).attr("goodsType");
  87. cart.cartGb = btnType;
  88. cart.afLinkCd = $(obj).attr("afLinkCd");
  89. cart.ithrCd = "";
  90. cart.contentsLoc = "";
  91. cart.planDtlSq = "";
  92. params.push(cart);
  93. // 장바구니담기
  94. if (params.length > 0){
  95. cfnAddCart(params);
  96. }
  97. }
  98. var socialSetAddCart = function (obj) {
  99. let cartGoodsList = [];
  100. var optCdArr = $(obj).attr("optCd").split(",");
  101. var compsGoodsCdArr = $(obj).attr("compsGoodsCd").split(",");
  102. let compsList = [];
  103. let goodsList = {
  104. cartCompsList : new Array()
  105. }
  106. for(let j = 0 ; j < optCdArr.length ; j++) {
  107. let temp = new Object;
  108. temp.goodsCd = $(obj).attr("goodsCd");
  109. temp.optCd = optCdArr[j];
  110. temp.goodsQty = $(obj).attr("minOrdQty");
  111. temp.goodsType = "G056_S";
  112. temp.itemCd = compsGoodsCdArr[j];
  113. temp.cartGb = "C";
  114. temp.afLinkCd = $(obj).attr("afLinkCd");
  115. temp.ithrCd = "";
  116. temp.contentsLoc = "";
  117. temp.planDtlSq = "";
  118. compsList.push(temp);
  119. }
  120. goodsList.cartCompsList = compsList;
  121. cartGoodsList.push(goodsList);
  122. cfnAddCart(cartGoodsList);
  123. }
  124. let fnGetSocialList = function(result) {
  125. var html = '';
  126. $.each(result.dataList, function(idx, item) {
  127. html += ' <div class="item_prod">\n';
  128. if (item.stockQtySum > 0 || item.stockQtySum == null) {
  129. html += ' <div class="item_state">\n';
  130. }else{
  131. html += ' <div class="item_state soldout">\n';
  132. }
  133. if (item.likeIt == 'likeit') {
  134. html += ' <button type="button" class="itemLike active" onclick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
  135. }else{
  136. html += ' <button type="button" class="itemLike" onclick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
  137. }
  138. html += ' <a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >\n';
  139. html += ' <div class="itemPic">\n';
  140. html += ' <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=550">\n';
  141. html += ' </div>\n';
  142. html += ' <div class="itemSpecialPrice"><span>특가</span></div>\n';
  143. html += ' <p class="itemBrand">'+item.brandGroupNm+'</p>\n';
  144. html += ' <div class="itemName">'+item.goodsNm+'</div>\n';
  145. html += ' <p class="itemPrice">\n';
  146. html += item.currPrice.addComma() +'원';
  147. if (item.currPrice != item.listPrice) {
  148. html += ' <span class="itemPrice_original">'+item.listPrice.addComma()+'원</span>\n';
  149. }
  150. if (item.dcRate != 0) {
  151. html += ' <span class=" itemPercent">'+item.dcRate.addComma()+'%</span>\n';
  152. }
  153. html += ' </p>\n';
  154. if(item.goodsTnm != null){
  155. html += ' <div class="itemComment">'+item.goodsTnm+'</div>\n';
  156. }
  157. html += ' </a>\n';
  158. if (item.goodsType == 'G056_N') {
  159. html += ' <div class="shopBagBtn">\n';
  160. html += ' <button type="button" class="btn btn_defalt" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'">\n';
  161. html += ' <span>쇼핑백 담기</span>\n';
  162. html += ' </button>\n';
  163. html += ' </div>\n';
  164. }else if(item.goodsType == 'G056_D'){
  165. html += ' <div class="shopBagBtn">\n';
  166. html += ' <button type="button" class="btn btn_defalt" onclick="socialGoodsDeal()">\n';
  167. html += ' <span>쇼핑백 담기</span>\n';
  168. html += ' </button>\n';
  169. html += ' </div>\n';
  170. }else{
  171. html += ' <div class="shopBagBtn">\n';
  172. html += ' <button type="button" class="btn btn_defalt" onclick="socialSetAddCart(this)" compsGoodsCd=\''+item.compsGoodsCd+'\', goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'">\n';
  173. html += ' <span>쇼핑백 담기</span>\n';
  174. html += ' </button>\n';
  175. html += ' </div>\n';
  176. }
  177. html += ' </div>\n';
  178. html += '</div>\n';
  179. });
  180. return html;
  181. }
  182. // 딜상품일 경우 alert
  183. var socialGoodsDeal = function() {
  184. mcxDialog.alert("해당 상품은 옵션 선택 후 쇼핑백 담기가 가능합니다.");
  185. return;
  186. }
  187. var fnSocialListSearch = function() {
  188. fnSocialInfiniteScrollInit();
  189. gagaInfiniteScroll.getHistory();
  190. }
  191. // 인피니트 스크롤 초기화
  192. var fnSocialInfiniteScrollInit = function(){
  193. sessionStorage.removeItem(document.location.href);
  194. //History 초기화
  195. $("#listBox").html("");
  196. }
  197. //인피니트 스크롤 이벤트 발생 시 데이터 가져오기
  198. var fnGetInfiniteScrollDataList = function(pageNum) {
  199. $("#socialForm input[name=pageNo]").val(pageNum+1);
  200. gagajf.ajaxFormSubmit("/social/list",document.socialForm, gagaInfiniteScroll.jsonToHtml);
  201. }
  202. var fnDrawInfiniteScrollData = function (result){
  203. let totalCnt = result.totalCnt;
  204. gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
  205. if (result.dataList != null && result.dataList.length > 0) {
  206. $(".nodata").hide();
  207. $("#socialDiv").show();
  208. let lastPage = result.paging.pageable.pageNo;
  209. let endRow = result.endRow - result.paging.pageable.pageSize;
  210. var htm = fnGetSocialList(result, lastPage, endRow);
  211. gagaInfiniteScroll.draw(htm);
  212. }else{
  213. if($("#socialForm input[name=pageNo]").val()==1){
  214. $(".nodata").show();
  215. $("#socialDiv").hide();
  216. }
  217. $("#divLastPage").show();
  218. gagaInfiniteScroll.draw('not');
  219. }
  220. }
  221. $(function(){
  222. fnSocialListSearch();
  223. /* 핫딜 countDown */
  224. function hotdealTimer() {
  225. var endTime = socialInfo.socialEddt.toDate("YYYYMMDD");
  226. //var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
  227. endTime = (Date.parse(endTime) / 1000);
  228. var now = new Date();
  229. now = (Date.parse(now) / 1000);
  230. var timeLeft = endTime - now;
  231. var days = Math.floor(timeLeft / 86400);
  232. var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
  233. var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
  234. var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
  235. if (hours < '10') { hours = '0' + hours; }
  236. if (minutes < '10') { minutes = '0' + minutes; }
  237. if (seconds < '10') { seconds = '0' + seconds; }
  238. //$('#d-days').html(days);
  239. $('#h-hours').html(hours);
  240. $('#h-minutes').html(minutes);
  241. $('#h-seconds').html(seconds);
  242. }
  243. if (socialInfo != null) {
  244. setInterval(function() { hotdealTimer(); }, 1000);
  245. }
  246. /* countDown */
  247. });
  248. /* $(window).on("pageshow", function(event) {
  249. if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
  250. var historyData = sessionStorage.getItem(document.location.href);
  251. if(historyData!=null){
  252. historyData = JSON.parse(historyData);
  253. }else{
  254. historyData = {};
  255. }
  256. fnSocialListSearch();
  257. }else{
  258. fnSocialListSearch();
  259. }
  260. });
  261. */
  262. </script>
  263. </th:block>
  264. </body>
  265. </html>