select-coupon.js 4.81 KB
/**
 * 优惠券选择
 * @author: bikai<kai.bi@yoho.cn>
 * @date: 2015/12/10
 */

var $ = require('jquery'),
    Handlebars = require('yoho.handlebars'),
    Hammer = require('yoho.hammer'),
    ellipsis = require('mlellipsis'),
    loading = require('../plugin/loading'),
    tip = require('../plugin/tip'),
    orderInfo = require('./order-info').orderInfo;

var isGetData;

var conponTmpl = Handlebars.compile($('#tmpl-coupon').html()),
    conponNotAvaliableTmpl = Handlebars.compile($('#tmpl-coupon-not-avaliable').html()),
    $newCoupon = $('#new-coupon'),
    $couponList = $('#coupon-list');

var winH = $(window).height();

require('../common');

function fixedLayOut() {
    var $null = $('.null'),
        navH = $('.nav-title').height(),
        nullH = $null.height();

    if ($null.length === 0) {
        return false;
    }

    $null.css({
        top: winH / 2 - nullH / 2 + navH
    });
}

ellipsis.init();

$newCoupon.on('submit', function() {
    var $this = $(this);

    if (!$this.find('[name="couponCode"]').val()) {
        tip.show('请输入优惠券码');
        return false;
    }
    $.ajax({
        method: 'POST',
        url: '/cart/index/couponSearch',
        data: $this.serialize()
    }).then(function(res) {
        if (res.message) {
            tip.show(res.message);
        }
        if (res.code === 200) {
            tip.show('优惠券可用');
            orderInfo('couponCode', res.data.coupon_code);
            orderInfo('couponName', res.data.coupon_title);
            window.location.href = '/cart/index/orderEnsure';
        }
    }).fail(function() {
        tip.show('网络错误');
    });
    return false;
});

$couponList.on('touchstart', '.employ-main', function() {
    var $this = $(this);

    $this.siblings().removeClass('focus');
    $this.addClass('focus');
}).on('touchend touchcancel', '.employ-main', function() {
    var $this = $(this);

    $this.siblings().removeClass('focus');
    $this.removeClass('focus');
});

$('body').on('touchend', '.not-use', function() {
    orderInfo('couponCode', null);
    orderInfo('couponName', null);
});


$newCoupon.find('input').on('input', function() {
    if ($(this).val() !== '') {
        $newCoupon.find('.submit').css('background', '#444');
    } else {
        $newCoupon.find('.submit').css('background', '#b0b0b0');
    }
});

function getCouponHandle(allCoupons) {
    var notAvailableCoupons,
        coupons;

    // 空数组表示没有优惠券
    if ($.isArray(allCoupons)) {
        $('.coupon-wrap').html($('#tmpl-no-coupon').html());
        fixedLayOut();
        return;
    }

    // 把可用和不可用的优惠券分离出来
    notAvailableCoupons = allCoupons.notAvailableCoupons;
    coupons = allCoupons.coupons;

    $.each(coupons, function(i, coupon) {
        coupon.couponValue = Math.floor(coupon.couponValue);
    });

    $.each(notAvailableCoupons, function(i, coupon) {
        coupon.couponValue = Math.floor(coupon.couponValue);
    });

    // 渲染可用的优惠券
    $couponList.append(conponTmpl({
        coupons: coupons
    })).find('.employ-main').each(function(i, elem) {
        var employHammer = new Hammer(elem);

        employHammer.on('tap', function(e) {
            var $this = $(e.srcEvent.currentTarget);
            var couponCode = $this.data('coupon-code');

            $.ajax({
                method: 'POST',
                url: '/cart/index/couponSearch',
                data: {
                    couponCode: couponCode
                }
            }).then(function(res) {
                if (res.code === 200) {

                    //tip.show('优惠券可用');
                    orderInfo('couponCode', res.data.coupon_code);
                    orderInfo('couponName', res.data.coupon_title);
                    window.location.href = '/cart/index/orderEnsure';
                } else if (res.message) {
                    tip.show(res.message);
                }
            }).fail(function() {
                tip.show('网络错误');
            });
        });
    });

    if (notAvailableCoupons.length) {
        $('.not-avaliable-coupon-line').show();
    }
    $('#coupon-list-not').append(conponNotAvaliableTmpl({
        notAvailableCoupons: notAvailableCoupons
    }));
    window.rePosFooter();

}

function getCouponDate() {

    if (isGetData) {
        return;
    }

    loading.showLoadingMask();
    isGetData = true;

    $.ajax({
        type: 'GET',
        url: '/cart/index/couponList',
        dataType: 'json'
    }).then(getCouponHandle).fail(function() {

        // tip.show('加载优惠券失败');
    }).always(function() {
        isGetData = false;
        loading.hideLoadingMask();
    });
}

getCouponDate();

// $(window).scroll(function() {
//     if ($(window).scrollTop() + $(window).height() > $('body').height() * 0.9) {
//         getCouponDate();
//     }
// });