/** * 购物车Logic * @author: xuqi<qi.xu@yoho.cn> * @date: 2015/10/20 */ var $ = require('jquery'), lazyLoad = require('yoho.lazyload'), Hammer = require('yoho.hammer'); var chosePanel = require('./chose-panel'), dialog = require('../me/dialog'), tip = require('../plugin/tip'); var $cartContent = $('.cart-content'), cartType = $('#cartType').val(), hasShowCartPresellTip = false; var navHammer, advanceBuyHammer, freebieHammer; var hasChecked = $('.cart-content:not(.hide) .icon-cb-checked').length > 0 ? true : false; //是否有选中商品 function shouldSelectGift() { var $freebie = $('.freebie'); if ($freebie.length <= 0) { return false; } return true; } function shouldLowStocks() { var $lowStocks = $('.low-stocks'), result = false; if ($lowStocks.length <= 0) { return result; } $lowStocks.each(function(idx, item) { if ($(item).parent().parent().parent().siblings('.checkbox').hasClass('icon-cb-checked')) { result = true; return false; } }); return result; } function showChooseGifDialog() { dialog.showDialog({ dialogText: '您还未选择赠品,是否去选择赠品', hasFooter: { leftBtnText: '我不要赠品', rightBtnText: '去选择' } }, function() { window.location.href = $('.freebie').find('a').attr('href'); }, function() { window.location.href = '/cart/index/orderEnsure?cartType=' + cartType; }); } require('./good'); lazyLoad($('img.lazy')); if (typeof window.cookie === 'function' && 'y' === window.cookie('_hasShowCartPresellTip')) { $('#presell-tip').removeClass('show').addClass('hide'); hasShowCartPresellTip = true; } else { $('#presell-tip').removeClass('hide').addClass('show'); } if ('advance' === cartType) { $cartContent.toggleClass('hide'); $('#common-cart-nav').removeClass('active'); $('#presell-cart-nav').addClass('active'); } if ($('.cart-nav').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'); hasChecked = $('.cart-content:not(.hide) .icon-cb-checked').length > 0 ? true : false; //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(e) { window.location.href = '/cart/index/advanceBuy?cartType=' + cartType; }); } if ($('.freebie').length > 0) { freebieHammer = new Hammer(document.getElementsByClassName('freebie')[0]); freebieHammer.on('tap', function(e) { window.location.href = '/cart/index/gift?cartType=' + cartType; }); } $('.btn-balance').on('touchend', function() { if (shouldLowStocks()) { tip.show('库存不足无法结算'); return false; } if (shouldSelectGift()) { showChooseGifDialog(); return false; } if (hasChecked) { window.location.href = '/cart/index/orderEnsure?cartType=' + cartType; } else { tip.show('请先勾选商品'); } }); $('.chose').on('touchend', function() { chosePanel.show(); }); if ($('.shopping-cart-good').length <= 0) { require('../product/recommend-for-you'); } function notAllowScroll() { var docH = $(document).height(), winH = $(window).height(); if (docH - winH <= 10) { $('body').css('overflow', 'hidden'); } } notAllowScroll(); //提前触发lazyload $(window).scrollTop(1).scrollTop(0);