BestMainFormWeb.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  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 : BestMainFormWeb.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.13 bin2107 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <div id="container" class="container dp">
  22. <div class="breadcrumb">
  23. <ul>
  24. <li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
  25. <li class="bread_2depth">베스트</li>
  26. </ul>
  27. </div>
  28. <div class="wrap">
  29. <div class="content wide dp_best"> <!-- 페이지특정 클래스 = dp_best -->
  30. <div class="cont_head">
  31. <div>
  32. <h3>베스트</h3>
  33. </div>
  34. </div>
  35. <div class="cont_body">
  36. <div class="taps">
  37. <div>
  38. <ul id="cateListArea">
  39. <li class="active" id="li0"><a href="javascript:void(0);" onclick="fnBestListSearch(this,'');">전체</a></li>
  40. <th:block th:each="item, stat : ${bestCateList}">
  41. <li class="" th:id="${'li'+item.cateNo}"><a href="javascript:void(0);" th:onclick="fnBestListSearch(this,[[${item.cateNo}]]);" th:text="${item.cateNm}"></a></li>
  42. </th:block>
  43. </ul>
  44. </div>
  45. </div>
  46. <!-- 지금 많이 보고 있어요 -->
  47. <div class="dp_best_live" id="itemViewArea">
  48. <div class="sec_head">
  49. <p class="dp_live_txt"><img src="/images/pc/dp_best_livetxt.jpg" alt="STYLE24 실시간 베스트 상품! "></p>
  50. <p class="displayH">지금 많이 <br> <span>보고 있어요</span></p>
  51. <button type="button"><span><em class="time" th:text="${#calendars.format(#calendars.createNow(), 'HH:mm')}">17:30</em> 기준</span></button>
  52. </div>
  53. <div class="sec_body">
  54. <div class="swiper-container dp_live_slider">
  55. <div class="swiper-wrapper">
  56. <th:block th:each="item, status : ${viewBestGoodsList}">
  57. <div class="swiper-slide">
  58. <div class="item_prod">
  59. <div class="item_state">
  60. <button type="button" class="itemLike" th:classappend="${item.wishCnt > 0} ? 'likeit active'" onclick="cfnPutWishList(this);" th:attr="goodscd=${item.itemId}">관심상품 추가</button>
  61. <a th:href="${item.itemUrl}" class="itemLink">
  62. <div class="itemPic">
  63. <img alt="" class="vLHTC pd_img" th:src="${item.imageUrl}">
  64. </div>
  65. <div class="itemName" th:text="${item.itemName}"></div>
  66. <div class="viewCount">
  67. <span th:text="${item.count < 10 ? '10명 미만' : item.count + '명 보는중'}"></span>
  68. </div>
  69. </a>
  70. </div>
  71. </div>
  72. </div>
  73. </th:block>
  74. </div>
  75. <div class="swiper-controls">
  76. <div class="swiper-scrollbar"></div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <!-- 지금 많이 보고 있어요 -->
  82. </div>
  83. </div>
  84. <div class="content dp_best_top100">
  85. <div class="cont_head">
  86. <div>
  87. <h3>베스트 TOP100</h3>
  88. </div>
  89. </div>
  90. <div class="cont_body">
  91. <div class="ui_row">
  92. <div class="ui_col_12">
  93. <form class="form_wrap">
  94. <div class="form_field">
  95. <div class="select_custom select_sex">
  96. <div class="combo">
  97. <div class="select">구매 성별 전체</div>
  98. <ul class="list">
  99. <!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가 -->
  100. <li class="selected">전체</li>
  101. <li>남성</li>
  102. <li>여성</li>
  103. </ul>
  104. </div>
  105. </div>
  106. <div class="select_custom select_age">
  107. <div class="combo">
  108. <div class="select">구매 연령 전체</div>
  109. <ul class="list">
  110. <!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가 -->
  111. <li class="selected">전체</li>
  112. <li>10대</li>
  113. <li>20대</li>
  114. <li>30대</li>
  115. <li>40대</li>
  116. <li>50대 이상</li>
  117. </ul>
  118. </div>
  119. </div>
  120. </div>
  121. </form>
  122. </div>
  123. </div>
  124. <div id="infiniteContainer" class="list_content">
  125. <div id="listBoxOuter" class="itemsGrp">
  126. <ul class="productlist quarter" id="listBox">
  127. </ul>
  128. </div>
  129. </div>
  130. <!-- <div class="list_content">-->
  131. <!-- <div class="itemsGrp" id="listBox"> -->
  132. <!-- itemsGrp rank hot deal -->
  133. <!--<div class="item_prod">
  134. <div class="item_state">
  135. <button type="button" class="itemLike">관심상품 추가</button>
  136. <a href="#none" class="itemLink">
  137. <div class="rank ranker"><span>1</span></div>
  138. <div class="itemPic">
  139. <img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
  140. </div>
  141. <p class="itemBrand">BRAND NAME</p>
  142. <div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
  143. <p class="itemPrice">80,100
  144. <span class="itemPrice_original">89,000</span>
  145. <span class=" itemPercent">10%</span>
  146. </p>
  147. <div class="itemcolorchip">
  148. <span class="chip_color35" value="ABM">BEIGE</span>
  149. <span class="chip_color54" value="BDS">BLACK</span>
  150. <span class="chip_color40" value="YBR">WHITE</span>
  151. </div>
  152. <p class="itemBadge">
  153. <span class="badge13">베스트 </span>
  154. </p>
  155. <div class="itemComment">#주문 폭주 상품</div>
  156. </a>
  157. </div>
  158. </div>-->
  159. <!-- </div>-->
  160. <!-- </div>-->
  161. </div>
  162. </div>
  163. <div class="last_page" id="divLastPage" style="display: none;">
  164. <span>마지막 페이지입니다.</span>
  165. </div>
  166. </div>
  167. </div>
  168. <form id="bestGoodsForm" name="bestGoodsForm">
  169. <input type="hidden" name="pageNo" id="pageNo" value ="1"/>
  170. <input type="hidden" name="pageSize" value ="50"/>
  171. <input type="hidden" name="cateNo" value=""/>
  172. <input type="hidden" name="sortGb"/>
  173. </form>
  174. <script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
  175. <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
  176. <script th:src="@{'/biz/goods.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goods.js"></script>
  177. <script th:inline="javascript">
  178. /*<![CDATA[*/
  179. var bestCateList = [[${bestCateList}]];
  180. $(document).ready( function() {
  181. // 베스트TOP100 정렬
  182. var select_sex = new sCombo('.select_sex.select_custom');
  183. var select_age = new sCombo('.select_age.select_custom');
  184. /* SLIDE - 지금많이 보고있어요 */
  185. var dp_live_slide = new Swiper ('.dp_best_live .dp_live_slider', {
  186. slidesPerView: 6,
  187. spaceBetween: 20,
  188. speed : 1000,
  189. freeMode: true,
  190. autoplay: false,
  191. scrollbar: {
  192. el: '.dp_best_live .swiper-scrollbar',
  193. hide: false,
  194. },
  195. });
  196. });
  197. var fnBestListSearch = function (obj, cateNo){
  198. // if(gagajf.isNull(cateNo)){
  199. // cateNo = 0;
  200. // }
  201. console.log('here1');
  202. $.each($("#cateListArea").find('li'), function() {
  203. $(this).removeClass();
  204. });
  205. if(gagajf.isNull(cateNo)){
  206. $("#li0").addClass('active');
  207. }else{
  208. $("#li"+cateNo).addClass('active');
  209. }
  210. $("#bestGoodsForm input[name=cateNo]").val(cateNo);
  211. // 카테고리별 실시간 베스트 상품 조회 getRealtimeViewBestGoodsList
  212. // fnRealtimeViewBestList(cateNo);
  213. // fnCategoryGoodsInfiniteScrollInit();
  214. gagaInfiniteScroll.getHistory();
  215. }
  216. //
  217. /*
  218. let fnRealtimeViewBestList = function(cateNo) {
  219. $.getJSON('/display/realtime/best/list'
  220. , function(result, status) {
  221. if (result.length > 0) {
  222. searchEngineAllCate = result;
  223. // GNB탭 > 브랜드 생성
  224. // fnCreateGnbBrandGroup();
  225. fnCreateGnbTab();
  226. }
  227. });
  228. }
  229. */
  230. var fnRealtimeViewBestList = function (cateNo){
  231. $("#bestGoodsForm input[name=cateNo]").val(cateNo);
  232. gagajf.ajaxFormSubmit("/display/realtime/best/list", document.bestGoodsForm, callbackRealtimeView);
  233. }
  234. var callbackRealtimeView = function (result){
  235. console.log('[callbackRealtimeView]');
  236. console.log('result::'+result);
  237. console.log(result);
  238. $("#itemViewArea").html('');
  239. }
  240. var totalCnt = 0;
  241. var idx = 1;
  242. // 상품 검색
  243. var fnGetInfiniteScrollDataList = function (pageNum){
  244. console.log('here2');
  245. console.log('here2 pageNum::'+pageNum);
  246. $("#bestGoodsForm input[name=pageNo]").val(pageNum+1);
  247. // if(idx==1 || totalCnt > Number($("#bestGoodsForm").find("input[name=pageSize]").val())){
  248. // idx++;
  249. gagajf.ajaxFormSubmit("/display/best/main/goods/list", document.bestGoodsForm, gagaInfiniteScroll.jsonToHtml);
  250. // }
  251. }
  252. var fnDrawInfiniteScrollData = function (result){
  253. console.log('here3');
  254. console.log(result);
  255. totalCnt = result.paging.totalCount;
  256. gagaInfiniteScroll.pageStatus.totalCount = totalCnt;
  257. var ithrCd = '';
  258. var contentLoc = '';
  259. let dataListLen = 0;
  260. if(result.dataList != null){
  261. dataListLen = result.dataList.length-1;
  262. }
  263. if (dataListLen > 0) {
  264. idx++;
  265. var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];;
  266. let lastPage = result.paging.pageNo;
  267. let endRow = result.paging.endRow - result.paging.pageSize;
  268. var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow);
  269. gagaInfiniteScroll.draw(htm);
  270. console.log('1818');
  271. }else{
  272. if(idx > 1) { // 데이터가 1건 이상
  273. if(totalCnt > Number($("#bestGoodsForm").find("input[name=pageSize]").val())){
  274. if($("#bestGoodsForm input[name=pageNo]").val()==1){
  275. $('#listBox').html('<li class="none">상품정보가 존재하지 않습니다.</li>');
  276. }
  277. $("#divLastPage").show();
  278. }
  279. }else{
  280. }
  281. console.log('18');
  282. gagaInfiniteScroll.draw('not');
  283. }
  284. }
  285. // 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
  286. $(window).on("pageshow", function(event) {
  287. if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
  288. var historyData = sessionStorage.getItem(document.location.href);
  289. if(historyData!=null){
  290. historyData = JSON.parse(historyData);
  291. }else{
  292. historyData = {};
  293. }
  294. fnBestListSearch();
  295. console.log('1');
  296. }else{
  297. fnCategoryGoodsInfiniteScrollInit();
  298. console.log('2');
  299. fnBestListSearch();
  300. }
  301. });
  302. /*]]>*/
  303. </script>
  304. </th:block>
  305. </body>
  306. </html>