cart.page.js 2.91 KB
var $ = require('yoho-jquery');
var Cart = require('./cart');
var Stepper = require('./stepper');

$(function() {

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

    // 全选和单选
    $('.toggle-chk, .toggle-chk-item').on('click', function() {
        var $this = $(this),
            $checkoutBtn = $('#checkout_btn'),
            checkAll = $this.hasClass('chk-all'),
            checkProId = [];

        var data;

        if ($this.hasClass('chk-group')) {
            // 取消选择
            $this.removeClass('chk-group');
            $checkoutBtn.addClass('disable');

            if (checkAll) {
                Cart.unCheckAllPros();
            } else {
                Cart.resetCheckAllStyle();
                $this.next().val('');
            }
        } else {
            if (checkAll) {
                data = { productId: 'ALL' };
            } else {
                checkProId = $this.parent().attr('data-productId');
                data = { productId: checkProId};
            }

            // 检查库存
            $.ajax({
                type: 'GET',
                url: '/shopping/cart/product/check_inventory',
                data: data,
                dataType: 'json'
            }).done(function(res) {
                if (res.valid) {
                    $this.addClass('chk-group');
                    $checkoutBtn.removeClass('disable');

                    if (checkAll) {
                        Cart.checkAllPros(res.invalidProIds);
                    } else {
                        $this.next().val(checkProId);

                        // 判断是否需要全选
                        Cart.toggleCheckAll();
                    }
                } else {
                    if (checkAll) {
                        // 全选商品中存在库存不足
                        // 如果有有效商品
                        if ($('.toggle-chk-item').length) {
                            $this.addClass('chk-group');
                            Cart.checkAllPros(res.invalidProIds);
                        }
                        Cart.toggleNotEnough($this, 'ALL');
                    } else {
                        // 单选商品库存不足
                        Cart.toggleNotEnough($this);

                    }
                }
            }).fail(function() {
                // 通用处理错误
                // TODO
            });

        }
    });

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

    // 删除商品
    $('.remove-item').on('click', function() {
        Cart.removePro($(this).attr('data-productId'));
    });

    // 移入收藏夹
    $('.send-to-favorite').on('click', function() {
        Cart.sendToFavorite($(this).attr('data-productId'));
    });

    // 编辑商品颜色和属性
    $('.editable').on('click', function() {
        Cart.editColorOrSize($(this).attr('data-productId'));
    });
});