cart.js 5.43 KB
/**
 * 购物车页面操作
 * @author: feng.chen<feng.chen@yoho.cn>
 * @date: 2016/12/29
 */

'use strict';

let $ = require('yoho-jquery'),
    tip = require('../../plugin/tip'),
    dialog = require('../../plugin/dialog');

let cartObj = {
    init(handle) {
        let self = this;

        self.handle = handle;

        $('.cart-nav').on('click', 'li', function(e) {
            self.cartNavClick(e);
        });
        $('.more-box>.down-arrow').on('click', function(e) {
            self.arrowClick(e);
        });
        $('.btn-balance').on('click', function() {
            self.balanceClick();
        });
        $('.promo-item').on('click', function(e) {
            self.promoItemClick(e);
        });
        $('.all-gift-box').on('click', '.gift-item', (e) => {
            self.allGiftBoxClick(e);
        });
        $('.nav-btn').on('click', () => {
            self.navClick();
        });
        self.initPresellTip();
    },
    navClick() {
        let self = this;

        $('.main-wrap').toggleClass('edit');
        if ($('.main-wrap').hasClass('edit')) {
            self.handle.editMode = true;
            $('.chk.edit').removeClass('checked');
        } else {
            self.handle.editMode = false;
        }
    },
    arrowClick(e) {
        $(e.currentTarget).parent().toggleClass('down');
    },
    cartNavClick(e) {
        let self = this;
        let type = $(e.currentTarget).data('type');

        window.setCookie('cartType', type);
        self.handle.refreshPage('');
    },
    initPresellTip() {
        if (typeof window.cookie === 'function' && window.cookie('_hasShowCartPresellTip') === 'y') {
            $('#presell-tip').removeClass('show').addClass('hide');
        } else {
            $('#presell-tip').removeClass('hide').addClass('show');
            setTimeout(function() {
                $('#presell-tip').removeClass('show').addClass('hide');
                window.setCookie('_hasShowCartPresellTip', 'y');
            }, 3000);
        }
    },
    promoItemClick(e) {
        let cartType = window.cookie('cartType') || 'ordinary';
        let promotionId = $(e.currentTarget).data('id');
        let promotionType = $(e.currentTarget).data('type');
        let promotionTitle = encodeURIComponent($(e.currentTarget).data('title'));
        let title = '促销商品';

        if (promotionType === 'Gift') {
            if ($(e.currentTarget).data('status') === 30) {
                window.location.href = `/cart/index/new/gift?promotion_id=${promotionId}&title=${title}&intro_text=${promotionTitle}&cartType=${cartType}&edit=1`;
            } else {
                window.location.href = `/cart/index/new/gift?promotion_id=${promotionId}&title=${title}&intro_text=${promotionTitle}&cartType=${cartType}`;
            }

        } else if (promotionType === 'Needpaygift') {
            if ($(e.currentTarget).data('status') === 30) {
                window.location.href = `/cart/index/new/advanceBuy?promotion_id=${promotionId}&title=${title}&intro_text=${promotionTitle}&cartType=${cartType}&edit=1`;
            } else {
                window.location.href = `/cart/index/new/advanceBuy?promotion_id=${promotionId}&title=${title}&intro_text=${promotionTitle}&cartType=${cartType}`;
            }

        } else {
            window.location.href = `/product/index/index?promotion_id=${promotionId}&title=${title}&intro_text=${promotionTitle}&cartType=${cartType}`;
        }
    },
    allGiftBoxClick(e) {
        let cartType = window.cookie('cartType') || 'ordinary';

        if ($(e.currentTarget).hasClass('advanceBuy')) {
            window.location.href = '/cart/index/new/advanceBuy?cartType=' + cartType;
        } else {
            window.location.href = '/cart/index/new/gift?cartType=' + cartType;
        }
    },
    balanceClick() {
        let cartType = window.cookie('cartType') || 'ordinary';

        if (window._yas && window._yas.sendCustomInfo) {
            let productId = Array.from($('.good-item.is-checked').map((i, e) => $(e).data('id')));

            setTimeout(function() {
                if (window._yas && window._yas.sendCustomInfo) {
                    window._yas.sendCustomInfo({
                        op: 'YB_SC_TOBUY_CLICK',
                        param: JSON.stringify({
                            C_ID: window.C_ID,
                            PRD_ID: productId.join(','),
                        })
                    }, true);
                }
            }, 200);
        }
        let lowStocks = $('.good-item.low-stocks.is-checked').length;

        if (lowStocks > 0) {
            tip.show(`所选商品中有${lowStocks}种库存不足的商品`);
            return false;
        }
        if ($('.all-gift-box>.freebie').length) {
            dialog.showDialog({
                dialogText: '您还未选择赠品,是否去选择赠品',
                hasFooter: {
                    leftBtnText: '我不要赠品',
                    rightBtnText: '去选择'
                }
            }, function() {
                window.location.href = '/cart/index/new/gift?cartType=' + cartType;
            }, function() {
                window.location.href = '/cart/index/orderEnsure?cartType=' + cartType;
            });
            return false;
        }
        if (!$('.good-item.is-checked').length) {
            tip.show('请先勾选商品');
            return false;
        }
        window.location.href = '/cart/index/new/orderEnsure?cartType=' + cartType;
    }
};

module.exports = cartObj;