goodsSession.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. //****************상품목록 start **********************************
  2. var categoryGoodsList = [];
  3. var cnt = 1;
  4. var email = '';
  5. var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow) {
  6. console.log('fnCreateGoodsList');
  7. var tag = '';
  8. var rank = 0;
  9. if(lastPage!='1'){
  10. rank = endRow;
  11. }
  12. $.each(result.dataList, function(idx, item) {
  13. if (idx < 4) {
  14. categoryGoodsList.push(item.goodsCd);
  15. }
  16. tag += '<div class="item_prod">';
  17. tag += ' <div class="item_state">';
  18. tag += ' <button type="button" class="itemLike">관심상품 추가</button>';
  19. tag += ' <a href="#none" class="itemLink">';
  20. tag += ' <div class="rank ranker"><span>'+(rank+(idx+1))+'</span></div>';
  21. tag += ' <div class="itemPic">';
  22. tag += ' <img alt="BLUE-a" class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'">';
  23. tag += ' </div>';
  24. tag += ' <p class="itemBrand">BRAND NAME</p>';
  25. tag += ' <div class="itemName">'+item.goodsFullNm+'</div>';
  26. tag += ' <p class="itemPrice">80,100';
  27. tag += ' <span class="itemPrice_original">89,000</span>';
  28. tag += ' <span class=" itemPercent">10%</span>';
  29. tag += ' </p>';
  30. tag += ' <div class="itemcolorchip">';
  31. tag += ' <span class="chip_color35" value="ABM">BEIGE</span>';
  32. tag += ' <span class="chip_color54" value="BDS">BLACK</span>';
  33. tag += ' <span class="chip_color40" value="YBR">WHITE</span>';
  34. tag += ' </div>';
  35. tag += ' <p class="itemBadge">';
  36. tag += ' <span class="badge13">베스트 </span>';
  37. tag += ' </p>';
  38. tag += ' <div class="itemComment">#주문 폭주 상품</div>';
  39. tag += ' </a>';
  40. tag += ' </div>';
  41. tag += '</div>';
  42. });
  43. console.log('fnCreateGoodsList11');
  44. if (cnt == 1) {
  45. // <!-- Criteo 카테고리/리스팅 태그 -->
  46. window.criteo_q = window.criteo_q || [];
  47. var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
  48. window.criteo_q.push(
  49. {event: "setAccount", account: 26073}, // 이 라인은 업데이트하면 안됩니다
  50. {event: "setEmail", email: email}, // 유저가 로그인이 안되 있는 경우 빈 문자열을 전달
  51. {event: "setSiteType", type: deviceType},
  52. {event: "viewList", item: categoryGoodsList} // 가장 위에있는 3개의 상품 ID를 전달
  53. );
  54. // <!-- END 카테고리/리스팅 태그 -->
  55. cnt++;
  56. }
  57. console.log('fnCreateGoodsList1122233');
  58. return tag;
  59. }
  60. // 인피니트 스크롤 초기화
  61. var fnCategoryGoodsInfiniteScrollInit = function(){
  62. sessionStorage.removeItem(document.location.href);
  63. //History 초기화
  64. $("#listBox").html("");
  65. }
  66. //****************상품목록 end **********************************
  67. //****************상품상세 start **********************************
  68. // 브랜드 인기상품 (모바일)
  69. var jfGoodsCustRecommendSearch = function(params) {
  70. gagajf.ajaxSubmit("/goods/detail/goodsOther/frame", "html", "goodsCustRecommendArea", params);
  71. }
  72. //상품베너, 다른컬러, 함께본(카테고리 ) 상품
  73. var jfGoodsOtherSearch = function(params) {
  74. gagajf.ajaxSubmit("/goods/detail/goodsOther/frame", "html", "goodsOtherArea", params);
  75. }
  76. //상품평
  77. var jfGoodsReviewSearch = function(params) {
  78. gagajf.ajaxSubmit("/goods/detail/goodsReview/frame", "html", "goodsReviewArea", params);
  79. }
  80. //상품문의
  81. var jfGoodsQnaSearch = function(params) {
  82. gagajf.ajaxSubmit("/goods/detail/goodsQna/frame", "html", "goodsQnaArea", params);
  83. }
  84. //재고수정시
  85. var jfStockChange = function(gb){
  86. var obj = $("#goodsQty");
  87. var objQty = parseInt($("#goodsQty").val());
  88. if(gb == 'minus'){
  89. if(gagajf.isNull($("#cartForm input[name=sizeCd]").val())){
  90. mcxDialog.alert("사이즈를 선택하세요.");
  91. } else if(objQty <= parseInt($("#cartForm input[name=minOrdQty]").val()) && !gagajf.isNull($("#cartForm input[name=sizeCd]").val())){
  92. mcxDialog.alert("구매하실 수 있는 최소 수량입니다.");
  93. } else {
  94. obj.val(objQty-1);
  95. }
  96. } else {
  97. if(gagajf.isNull($("#cartForm input[name=sizeCd]").val())){
  98. mcxDialog.alert("사이즈를 선택하세요.");
  99. }else if(objQty < parseInt($("#cartForm input[name=maxOrdQty]").val())){
  100. obj.val(objQty+1);
  101. }else{
  102. mcxDialog.alert("구매하실 수 있는 최대 수량입니다.");
  103. }
  104. }
  105. $("#cartForm input[name=ordQty]").val(obj.val());
  106. }
  107. //장바구니담기(단품)
  108. /**
  109. * @type : function
  110. * @access : public
  111. * @desc : 바로구매, 장바구니 담기
  112. * <pre>
  113. * addCart(btnType,goodsType);
  114. * </pre>
  115. * @param : btnType - 장바구니. '' , 바로구매 : 'DIRECT'. 필수
  116. * @param : layer - 레이어 여부. 딜상품일 경우 . '' : 본창, 'layer':레이어창
  117. * @since : 2020/07/23
  118. * @author : eskim
  119. */
  120. var addCart = function(btnType, layer){
  121. var params = [];
  122. var goodsType = $("#cartForm input[name=goodsType]").val();
  123. if (goodsType == 'N'){
  124. if (gagajf.isNull($("#cartForm input[name=sizeCd]").val())) {
  125. mcxDialog.alertC('사이즈를 선택해 주십시오.');
  126. return;
  127. }
  128. var obj = new Object();
  129. obj.btnType = btnType;
  130. obj.goodsType = $("#cartForm input[name=goodsType]").val();
  131. obj.goodsCd = $("#cartForm input[name=goodsCd]").val();
  132. obj.itemCd = $("#cartForm input[name=goodsCd]").val();
  133. obj.sizeCd = $("#cartForm input[name=sizeCd]").val();
  134. obj.goodsQty = $("#cartForm input[name=ordQty]").val();
  135. obj.itemQty = 1;
  136. obj.planDtlSq =$("#cartForm input[name=planDtlSq]").val();
  137. params.push(obj);
  138. }else if (goodsType == 'S'){
  139. var target=$('.sizelistCart');
  140. var targetSize=target.length;
  141. var itemSize = target.find('.item').find('input[type=radio]:checked').length;
  142. if (targetSize != itemSize){
  143. mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
  144. return false;
  145. }
  146. target.find('.item').find('input[type=radio]:checked').each(function() {
  147. var arrInfo = $(this).val().split('|'); // 상품코드|사이즈|구성수량
  148. var obj = new Object();
  149. obj.btnType = btnType;
  150. obj.goodsType = $("#cartForm input[name=goodsType]").val();
  151. obj.goodsCd = $("#cartForm input[name=goodsCd]").val();
  152. obj.itemCd = arrInfo[0];
  153. obj.sizeCd = arrInfo[1];
  154. obj.goodsQty = $("#cartForm input[name=ordQty]").val();
  155. obj.itemQty = Number(arrInfo[2]);
  156. obj.planDtlSq =$("#cartForm input[name=planDtlSq]").val();
  157. params.push(obj);
  158. });
  159. }else{
  160. if (layer == 'layer'){
  161. var goodsSize = $("#optionListLayer").children('ul').length
  162. if (goodsSize <= 0){
  163. mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
  164. return false;
  165. }
  166. $('#optionListLayer > ul').each(function() {
  167. var arrInfo = $(this).find('input[name="coption"]').val().split(':');
  168. var obj = new Object();
  169. obj.btnType = btnType;
  170. obj.goodsType = $("#cartForm input[name=goodsType]").val();
  171. obj.goodsCd = $("#cartForm input[name=goodsCd]").val();
  172. obj.itemCd = arrInfo[0];
  173. obj.sizeCd = arrInfo[1];
  174. obj.goodsQty = $(this).find('input[name="cea"]').val();
  175. obj.itemQty = 1;
  176. obj.planDtlSq = $("#cartForm input[name=planDtlSq]").val();
  177. params.push(obj);
  178. });
  179. }else{
  180. if (_frontGb == "P"){
  181. var goodsSize = $("#optionListDiv").children('ul').length
  182. if (goodsSize <= 0){
  183. mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
  184. return false;
  185. }
  186. $('#optionListDiv > ul').each(function() {
  187. var arrInfo = $(this).find('input[name="coption"]').val().split(':');
  188. $(this).find('input[name="coption"]').attr('goodsCd')
  189. var obj = new Object();
  190. obj.btnType = btnType;
  191. obj.goodsType = $("#cartForm input[name=goodsType]").val();
  192. obj.goodsCd = $("#cartForm input[name=goodsCd]").val();
  193. obj.itemCd = arrInfo[0];
  194. obj.sizeCd = arrInfo[1];
  195. obj.goodsQty = $(this).find('input[name="cea"]').val();
  196. obj.itemQty = 1;
  197. obj.planDtlSq = $("#cartForm input[name=planDtlSq]").val();
  198. params.push(obj);
  199. });
  200. }else{
  201. var goodsSize = $("#optionListDiv").children('dl').length
  202. if (goodsSize <= 0){
  203. mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
  204. return false;
  205. }
  206. $('#optionListDiv > dl').each(function() {
  207. var arrInfo = $(this).find('input[name="coption"]').val().split(':');
  208. $(this).find('input[name="coption"]').attr('goodsCd')
  209. var obj = new Object();
  210. obj.btnType = btnType;
  211. obj.goodsType = $("#cartForm input[name=goodsType]").val();
  212. obj.goodsCd = $("#cartForm input[name=goodsCd]").val();
  213. obj.itemCd = arrInfo[0];
  214. obj.sizeCd = arrInfo[1];
  215. obj.goodsQty = $(this).find('input[name="cea"]').val();
  216. obj.itemQty = 1;
  217. obj.planDtlSq = $("#cartForm input[name=planDtlSq]").val();
  218. params.push(obj);
  219. });
  220. }
  221. }
  222. }
  223. //DIRECT : 바로 구매. '' : 장바구니
  224. cfnPutCartList(params);
  225. }
  226. //url 복사
  227. var jfCopyLinkUrl = function(goodsCd){
  228. cfnCopyLinkUrl(location.protocol + _PAGE_GOODS_DETAIL + goodsCd);
  229. }
  230. //SNS 연동
  231. var jfSendToSns = function(goodsCd, goodsNm, goodsImg, snsGb) {
  232. var linkUrl = location.protocol + _PAGE_GOODS_DETAIL + goodsCd;
  233. if (goodsImg.indexOf("http") <= -1 || goodsImg.indexOf("https") <= -1){
  234. var _goodsImgUrl = _uploadGoodsUrl;
  235. goodsImg = "https:"+goodsImg;
  236. }
  237. if (snsGb == "FB"){
  238. cfnSendToFaceBook(linkUrl,goodsNm ,goodsImg);
  239. }else if (snsGb == "KK"){
  240. if (_frontGb == "P"){
  241. cfnSendToKakao(linkUrl,goodsNm ,goodsImg);
  242. }else{
  243. cfnSendToKakaoMob(linkUrl,goodsNm ,goodsImg);
  244. }
  245. }
  246. }
  247. //****************상품상세 end **********************************
  248. //****************상품검색 start **********************************
  249. // 상품 정렬
  250. var fnSortChange = function(sortGb) {
  251. if($("#searchForm input:hidden[name=sortGb]").val()==sortGb){
  252. return;
  253. }
  254. if (_frontGb == "P"){
  255. $('.productsection .filterbutton').html('필터 열기<span>현재 상태 : 닫힘</span>').removeClass('active');
  256. $('.filterlist').css({'height':'0'});
  257. }else{
  258. areaClose();
  259. }
  260. $("#searchForm input[name=sortGb]").val(sortGb);
  261. fnCategoryGoodsInfiniteScrollInit();
  262. fnGoodsListSearch();
  263. }
  264. var filterHtml = '';
  265. var filterStatHtml = '';
  266. // 필터 적용
  267. var fnFilterSearch = function() {
  268. $(".filterstate .filter_div").empty();
  269. fnCategoryGoodsInfiniteScrollInit();
  270. filterHtml = '';
  271. filterStatHtml = '';
  272. gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
  273. gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
  274. fnFilterSet('brand');
  275. fnFilterSet('size');
  276. fnFilterSet('color');
  277. fnFilterSet('price');
  278. if (_frontGb == "P"){
  279. $('.productsection .filterbutton').html('필터 열기<span>현재 상태 : 닫힘</span>').removeClass('active');
  280. $('.filterlist').css({'height':'0'});
  281. }else{
  282. areaClose();
  283. }
  284. fnGoodsListSearch();
  285. }
  286. var fnFilterSet = function(searchId) {
  287. $("#searchForm input:hidden[name="+searchId+"Search]").remove();
  288. $(".filterstate li[name="+searchId+"Stat]").remove();
  289. var tag = '';
  290. $('#filterForm input[name='+searchId+']:checked').each(function(){
  291. tag = '<input type="hidden" name="'+searchId+'Search" value="'+$(this).val()+'"/>\n';
  292. $("#searchForm").append(tag);
  293. filterHtml += tag;
  294. if(_frontGb != "P"){
  295. tag = '<button type="button" class="removefilter" onclick="fnFilterStatRemove(\''+searchId+'\', \''+$(this).val()+'\');">'+$(this).closest('li').children('label').text()+'</button>';
  296. $(".filterstate .filter_div").append(tag);
  297. }else{
  298. tag = '<li name="'+searchId+'Stat">'+$(this).closest('li').children('label').text()+'<button type="button" onclick="fnFilterStatRemove(\''+searchId+'\', \''+$(this).val()+'\');">DELETE</button></li>';
  299. $(".filterstate").append(tag);
  300. }
  301. filterStatHtml += tag;
  302. });
  303. gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
  304. gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
  305. }
  306. var fnFilterStatRemove = function(searchId, val){
  307. $('#filterForm input[name='+searchId+']:checked').each(function(){
  308. if($(this).val()==val){
  309. $(this).attr("checked", false);
  310. $(this).parent().removeClass("active");
  311. }
  312. });
  313. fnFilterSearch();
  314. }
  315. // 필터 초기화
  316. var fnFilterReset = function() {
  317. filterReset();
  318. }
  319. //****************상품검색 end **********************************