/** * 购物车Logic * @author: xuqi<qi.xu@yoho.cn> * @date: 2015/10/20 */ var $ = require('jquery'), ellipsis = require('mlellipsis'), Hammer = require('yoho.hammer'); var chosePanel = require('./chose-panel'), dialog = require('../me/dialog'), loading = require('../plugin/loading'), tip = require('../plugin/tip'); var $cartContent = $('.cart-content'), cartType = $('#cartType').val(), $cartNav = $('.cart-nav'), $cartPage = $('.shopping-cart-page'), hasShowCartPresellTip = false; var navHammer, advanceBuyHammer, freebieHammer, switchChose = false; var isRefreshByDelete = window.cookie('_yoho-cart-refreshByDelete') === 'true' ? true : false; var lowStockCount = 0; loading.showLoadingMask(); function needLoadRecommandForYou() { return window.isCookiesEnabled() ? $('.cart-goods').length <= 0 && !isRefreshByDelete : $('.cart-goods').length <= 0; } if (needLoadRecommandForYou()) { require('../product/recommend-for-you'); } else { if (isRefreshByDelete) { $('body').css('background-color', '#f0f0f0'); } require('./good'); } $cartPage.css('display', 'block'); loading.hideLoadingMask(); window.setCookie('_yoho-cart-refreshByDelete', false); ellipsis.init(); function cartContentShow() { return $cartContent.not('.hide'); } function mlellipsisHiddenNames() { cartContentShow().find('.shopping-cart-good .name').each(function() { this.mlellipsis(2); }); switchChose = true; } function hasChecked() { return cartContentShow().find('.cart-goods .icon-cb-checked').length > 0 ? true : false; } function shouldSelectGift() { var $freebie = cartContentShow().find('.freebie'); if ($freebie.length <= 0) { return false; } return true; } function shouldLowStocks() { var $lowStocks, result = false; if (cartType === 'ordinary') { $lowStocks = $('.common .low-stocks'); } else if (cartType === 'advance') { $lowStocks = $('.presell .low-stocks'); } if ($lowStocks.length <= 0) { return result; } $lowStocks.each(function(idx, item) { if ($(item).parent().parent().parent().siblings('.checkbox').hasClass('icon-cb-checked')) { lowStockCount += 1; result = true; } }); return result; } function showChooseGifDialog() { dialog.showDialog({ dialogText: '您还未选择赠品,是否去选择赠品', hasFooter: { leftBtnText: '我不要赠品', rightBtnText: '去选择' } }, function() { window.location.href = cartContentShow().find('.freebie > a').attr('href'); }, function() { var info = window.cookie('order-info'); if (info) { window.setCookie('order-info', ''); } window.location.href = '/cart/index/orderEnsure?cartType=' + cartType; }); } if (typeof window.cookie === 'function' && window.cookie('_hasShowCartPresellTip') === 'y') { $('#presell-tip').removeClass('show').addClass('hide'); hasShowCartPresellTip = true; } else { $('#presell-tip').removeClass('hide').addClass('show'); } if (cartType === 'advance') { $cartContent.toggleClass('hide'); $('#common-cart-nav').removeClass('active'); $('#presell-cart-nav').addClass('active'); mlellipsisHiddenNames(); $(window).trigger('scroll'); } if ($cartNav.length > 0) { navHammer = new Hammer(document.getElementsByClassName('cart-nav')[0]); navHammer.on('tap', function(e) { var $this = $(e.target).closest('li'); if ($this.hasClass('active')) { return; } if (cartType === 'ordinary') { cartType = 'advance'; $('#cartType').val('advance'); } else { cartType = 'ordinary'; $('#cartType').val('ordinary'); } $this.siblings('.active').removeClass('active'); $this.addClass('active'); // 切换普通商品和预售商品购物车显示 $cartContent.toggleClass('hide'); if (switchChose === false) { mlellipsisHiddenNames(); } // trigger lazyload $(window).trigger('scroll'); }); if (!hasShowCartPresellTip) { setTimeout(function() { $('#presell-tip').removeClass('show').addClass('hide'); window.setCookie('_hasShowCartPresellTip', 'y'); }, 3000); } } if ($('.advance-buy').length > 0) { advanceBuyHammer = new Hammer(document.getElementsByClassName('advance-buy')[0]); advanceBuyHammer.on('tap', function() { window.location.href = '/cart/index/advanceBuy?cartType=' + cartType; }); } if ($('.freebie').length > 0) { freebieHammer = new Hammer(document.getElementsByClassName('freebie')[0]); freebieHammer.on('tap', function() { window.location.href = '/cart/index/gift?cartType=' + cartType; }); } $('.btn-balance').on('touchend', function() { var info = window.cookie('order-info'); lowStockCount = 0; if (shouldLowStocks()) { tip.show('所选商品中有' + lowStockCount + '种库存不足的商品'); return false; } if (shouldSelectGift()) { showChooseGifDialog(); return false; } if (hasChecked()) { if (info) { window.setCookie('order-info', ''); } window.location.href = '/cart/index/orderEnsure?cartType=' + cartType; } else { tip.show('请先勾选商品'); } }); $('.off-shell-goods').on('touchstart touchend', function(e) { var $this = $(e.target).closest('span'); if ($this.hasClass('icon-del')) { return; } tip.show('商品已下架'); return false; }); $('.chose').on('touchend', function() { chosePanel.show(); }); $cartNav.on('touchstart', 'li', function() { $(this).addClass('bytouch'); }).on('touchend touchcancel', function() { $cartNav.find('li').removeClass('bytouch'); }); // 提前触发lazyload $(window).scrollTop(1).scrollTop(0);