cart.page.js 5.18 KB
/**
 * [购物流程] 购物袋
 * @author: jinhu.dong<jinhu.dong@yoho.cn>
 * @date: 2016/7/1
 */

var $ = require('yoho-jquery');
var Cart = require('./cart/cart');
var Stepper = require('./cart/stepper');
var recProduct = require('../product/item/recommend-product');

require('../common/return-top');

$(function() {
    var $this;
    var editable = true;
    var $goodsChk = $('.pros-group .chk-group');
    var chkLen = $goodsChk.length;

    // 关闭info-bar
    $('.info-bar .close').on('click', function() {
        $('.info-bar').hide();
    });

    $('#cart_content').delegate('.toggle-chk, .toggle-chk-item', 'click', function() {
        // 全选和单选
        Cart.toggleCheck.call(Cart, this);
    }).delegate('.remove-item', 'click', function() {
        // 删除商品
        // 失效商品删除,不用显示在删除模块
        var productExtraInfo = $(this).attr('data-product_extra_info'),
            productExtraInfoArr = productExtraInfo ? [$.parseJSON(productExtraInfo)] : [];

        Cart.removePro(
            [$.parseJSON($(this).parents('ul').children().first().attr('data-product_info'))],
            productExtraInfoArr
        );
    }).delegate('#remove_selected', 'click', function(e) {
        // 删除多个商品
        // 重构
        // 选择的商品
        var selectedProducts = [],
            product;

        e.preventDefault();
        $('#cart_content').find('li.chk').each(function() {
            product = $(this);
            if (product.find('label.chk-group').length) {
                selectedProducts.push($.parseJSON(product.attr('data-product_info')));
            }
        });
        Cart.removePro(selectedProducts);
    }).delegate('.send-to-favorite', 'click', function() {
        // 移入收藏夹
        // 重构
        Cart.sendToFavorite([$.parseJSON($(this).parents('ul').children().first().attr('data-product_info'))]);
    }).delegate('#send_favorite', 'click', function(e) {
        // 将多个商品移入收藏夹
        // 重构
        // 选择的商品
        var selectedProducts = [],
            product;

        e.preventDefault();
        $('#cart_content').find('li.chk').each(function() {
            product = $(this);
            if (product.find('label.chk-group').length) {
                selectedProducts.push($.parseJSON(product.attr('data-product_info')));
            }
        });
        Cart.sendToFavorite(selectedProducts);
    }).delegate('.editable', 'click', function() {
        $this = $(this);

        if (editable) {
            editable = false;

            // 编辑商品颜色和属性
            Cart.editColorOrSize(
                $this.attr('data-productid'),
                $this.attr('data-productskn'),
                $this.find('.default-color').text(),
                $this.find('.default-size').text(),
                function() {
                    editable = true;
                },
                $this
            );

            $('body').off('click').on('click', function() {
                if ($('.edit-color-size').length) {
                    $('.edit-color-size').remove();
                    editable = true;
                }
            });
        }
    }).delegate('#checkout_btn', 'click', function(e) {
        e.preventDefault();
        if ($('.chk-group').length) {
            // 防止回退history.go(-1)时页面状态不改变
            // 这里可以添加loading效果
            // window.location.reload();
            Cart.checkStorage(function() {
                if (!$(this).hasClass('disable')) {
                    window.location.href = '/shopping/order';
                }
            });
        }
        return false;
    });

    // 商品删除模块
    $('#removed_products').delegate('.send-to-favorite', 'click', function() {
        var $removedProduct = $(this).parents('.removed-product');

        var info = $.parseJSON($(this).attr('data-product_info'));

        Cart.sendToFavorite([info], function() {
            if ($('#removed_products .removed-product').length > 1) {
                $removedProduct.remove();
            } else {
                $('#removed_products').html('');
            }

            // clear removed memory
            Cart.clearRemovedMemory(info.productSku);
        });
    }).delegate('.buy-again', 'click', function() {
        var productInfo = $.parseJSON($(this).attr('data-rebuy_info')),
            $removedProduct = $(this).parents('.removed-product');

        Cart.addToCart(productInfo, function() {
            Cart.refreshCart(function() {
                if ($('#removed_products .removed-product').length > 1) {
                    $removedProduct.remove();
                } else {
                    $('#removed_products').html('');
                }

                // clear removed memory
                Cart.clearRemovedMemory(productInfo.productSku);
            });
        });
    });

    $('#remove_invalid').off().on('click', function() {
        Cart.removeInvalid();
    });

    // 变动商品数量
    Stepper.init();

    // 为您优选、最近浏览
    recProduct.init({
        dom: '.recommend-product'
    });

    if (chkLen > 0) {
        $(window).scrollTop($goodsChk.eq(0)[0].offsetTop);
    }
});