select-coupon.page.js 5.17 KB
/*
 * @Author: Targaryen
 * @Date: 2017-06-23 11:43:44
 * @Last Modified by: Targaryen
 * @Last Modified time: 2017-06-27 14:58:41
 */
require('cart/select-coupon.page.css');
const qs = require('yoho-qs');
let $ = require('yoho-jquery'),
    ellipsis = require('yoho-mlellipsis'),
    loading = require('plugin/loading'),
    tip = require('plugin/tip'),
    conponTmpl = require('cart/select-coupon/coupon.hbs'),
    conponNotAvaliableTmpl = require('cart/select-coupon/coupon-not-avaliable.hbs'),
    orderInfo = require('./order-info').orderInfo;

let isGetData;

let $newCoupon = $('#new-coupon'),
    linkUrl = document.referrer,
    $couponList = $('#coupon-list');

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

require('common');

function fixedLayOut() {
    let $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();

function goToBack() {
    if (linkUrl) {
        window.location.href = linkUrl;
    } else {
        history.go(-1);
    }
}

$newCoupon.on('submit', function() {
    let $this = $(this);
    let couponCode = $this.find('[name="couponCode"]').val();

    if (!couponCode) {
        tip.show('请输入优惠券码');
        return false;
    }
    $.ajax({
        method: 'POST',
        url: '/cart/index/buynow/usePromotionCode',
        data: {
            promotion_code: couponCode,
            buy_number: qs.buy_number
        }
    }).then(function(res) {
        if (res.code === 200) {
            tip.show('优惠券可用');

            // 实付金额发生变化,使用有货币为0
            orderInfo('use_yoho_coin', 0);
            orderInfo('coupon_code', res.data.coupon_code);
            orderInfo('couponName', res.data.coupon_title);
            goToBack();
        } else {
            tip.show(res.message);
        }
    }).fail(function() {
        tip.show('网络错误');
    });
    return false;
});

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

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

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

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

    // 实付金额发生变化,使用有货币为0
    orderInfo('use_yoho_coin', 0);
    goToBack();
});

$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) {
    let notAvailableCoupons,
        coupons;

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

    // 没有优惠券
    if (!(notAvailableCoupons.length || coupons.length)) {
        $('.coupon-wrap').html($('#tmpl-no-coupon').html());
        fixedLayOut();
        return;
    }


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

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

    // 渲染可用的优惠券
    $couponList.append(conponTmpl({
        coupons: coupons
    })).find('.employ-main').on('touchstart', function() {
        let couponCode = $(this).data('coupon-code');

        $.ajax({
            method: 'POST',
            url: '/cart/index/buynow/useCoupon',
            data: {
                product_sku: qs.product_sku,
                buy_number: qs.buy_number,
                coupon_code: couponCode
            }
        }).then(function(res) {
            if (res.code === 200) {
                orderInfo('coupon_code', res.data.coupon_code);
                orderInfo('couponName', res.data.coupon_title);

                // 实付金额发生变化,使用有货币为0
                orderInfo('use_yoho_coin', 0);
                goToBack();
            } 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 getCouponData() {

    if (isGetData) {
        return;
    }

    loading.showLoadingMask();
    isGetData = true;

    $.ajax({
        type: 'GET',
        url: '/cart/index/buynow/listCoupon',
        data: {
            product_sku: qs.product_sku,
            buy_number: qs.buy_number
        },
        dataType: 'json'
    }).then(getCouponHandle).always(function() {
        isGetData = false;
        loading.hideLoadingMask();
    });
}

getCouponData();