cart.page.js 4.49 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');

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

$(function() {
    var $this;
    var editable = true;

    // 关闭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;
                });

            $('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');

        Cart.sendToFavorite([$.parseJSON($(this).attr('data-product_info'))], function() {
            if ($('#removed_products .removed-product').length > 1) {
                $removedProduct.remove();
            } else {
                $('#removed_products').html('');
            }
        });
    }).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('');
                }
            });
        });
    });

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