select-giftcard.js 2.31 KB
import $ from 'yoho-jquery';
import Page from 'yoho-page';

class SelectGiftCard extends Page {
    constructor(order) {
        super();
        this.order = order;
        this.orderInfo = order.orderInfo;

        this.selector = {
            rule: $('#rule'),
            page: $('.select-giftcard-page'),
            giftcard: $('.giftcard'),
            useGiftCardBtn: $('#useGiftCardBtn'),
            noGiftCardBtn: $('#noGiftCardBtn')
        };
        this.init();
        this.bindEvents();
    }

    init() {
        this.selector.page.css('min-height', () => {
            return $(window).height() - $('#yoho-header').height();
        });
        this.linkUrl = document.referrer;
    }

    bindEvents() {
        this.selector.giftcard.on('click', '.checkbox', this.checkboxClickHandle.bind(this));
        this.selector.useGiftCardBtn.on('click', this.useGiftCard.bind(this));
        this.selector.noGiftCardBtn.on('click', this.noGiftCard.bind(this));
    }

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

    /**
     * 使用礼品卡
     */
    useGiftCard() {
        let selectedGiftCards = [];

        this.selector.giftcard.each((index, elem) => {
            let theElem = $(elem);

            if (theElem.hasClass('checked')) {
                selectedGiftCards.push(theElem.data('code'));
            }
        });

        this.orderInfo('gift_card_code', selectedGiftCards.join(','));
        this.goToBack();
    }

    /**
     * 不使用礼品卡
     */
    noGiftCard() {
        this.orderInfo('gift_card_code', null);
        this.goToBack();
    }

    /**
     * 改变 使用 按钮状态
     */
    changeUseBtnStatus() {
        if (this.selector.giftcard.hasClass('checked')) {
            this.selector.useGiftCardBtn.addClass('active');
        } else {
            this.selector.useGiftCardBtn.removeClass('active');
        }
    }

    /**
     * 选择礼品卡
     */
    checkboxClickHandle(event) {
        let theGiftCard = $(event.delegateTarget);

        if (theGiftCard.hasClass('checked')) {
            theGiftCard.removeClass('checked');
        } else {
            theGiftCard.addClass('checked');
        }

        this.changeUseBtnStatus();
    }
}

export default SelectGiftCard;