stepper.js 3.08 KB
/**
 * [购物车] 修改商品数量
 * @author: jinhu.dong<jinhu.dong@yoho.cn>
 * @date: 2016/07/11
 * @module shopping/stepper
 */

var Util = require('./util');
var $ = require('yoho-jquery');

var Stepper = {
    /*
     * 减少商品数量
     * @function [decrease]
     * @params { String } goodType 商品类型
     * @params { String } sku 商品sku
     * @params { String } currNum 商品当前购买数量
     */
    decrease: function(goodType, sku, currNum) {
        if (parseInt(currNum, 10) <= 1) {
            // return callback(1);
        } else {
            Util.ajax({
                url: '/shopping/cart/product/change_num',
                type: 'POST',
                data: {
                    changeType: 'DECREASE',
                    sku: sku,
                    goodType: goodType
                },
                success: function(res) {
                    Util.refreshCart(res, function() {
                        Stepper.init();
                    });
                }
            });
        }

    },

    /*
     * 增加商品数量
     * @function [increase]
     * @params { String } goodType 商品类型
     * @params { String } sku 商品sku
     */
    increase: function(goodType, sku) {
        Util.ajax({
            url: '/shopping/cart/product/change_num',
            type: 'POST',
            data: {
                changeType: 'INCREASE',
                sku: sku,
                goodType: goodType
            },
            success: function(res) {
                Util.refreshCart(res, function() {
                    Stepper.init();
                });
            }
        });
    },

    /*
     * 初始化
     * @function [init]
     */
    init: function() {
        var _this = this,
            $target,
            sku,
            goodType;

        var steppers = $('.stepper'),
            $input;

        // 数量为1的不能再减少
        steppers.find('input').each(function() {
            $input = $(this);
            if ($(this).val() === '1') {
                $input.parent().prev().addClass('disable');
            }
        });

        // 减少
        steppers.on('click', '.minus', function() {
            $target = $(this);

            if (!$target.hasClass('disable') && !$target.parents('.cart-pro-list').hasClass('invalid-pros')) {
                sku = $.parseJSON($target.parents('ul').children().first().attr('data-product_info')).product_sku;
                goodType = $target.parent().attr('data-producttype');
                _this.decrease(goodType, sku, $target.next().find('input').val());
            }
        });

        // 增加
        steppers.on('click', '.plus', function() {
            $target = $(this);

            if (!$target.hasClass('disable') && !$target.parents('.cart-pro-list').hasClass('invalid-pros')) {
                sku = $.parseJSON($target.parents('ul').children().first().attr('data-product_info')).product_sku;
                goodType = $target.parent().attr('data-producttype');
                _this.increase(goodType, sku);
            }
        });
    }
};

module.exports = Stepper;