select-invoice.page.js 5.53 KB
/**
 * 发票信息
 * @author: wsl<shuiling.wang@yoho.cn>
 * @date: 2016/6/14
 */
require('cart/select-invoice.page.css');
let $ = require('yoho-jquery'),
    tip = require('../plugin/tip'),
    dialog = require('../plugin/dialog'),
    order = require('./order-info');

let $invoiceNotice = $('.invoice-notice'),
    $companyArea = $('.company-area'),
    $editFlag = $('.edit-flag'),
    $chooseCont = $('.choose-cont'),
    $invoiceType = $('.invoice-type'),
    $tel = $('.tel'),
    $company = $('.company'),
    $telArea = $('.tel-area'),
    orderInfo = order.orderInfo,
    linkUrl = document.referrer,
    $chooseContLi = $('.invoice-cont').find('.icon-cb-radio').parent(),
    $copyTel = $('.copy-tel'),
    isModifyTel = false;

let myreg = /^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;

let C_ID = window._ChannelVary[window.cookie('_Channel')] || 1;

require('../common');

if (window.getUid() !== orderInfo('uid')) {
    order.init();
    window.location.reload();
}

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

// 单选效果
function chooseAction(pDom, dom) {
    if (dom.hasClass('icon-cb-radio')) {
        return;
    } else {
        pDom.find('.choose').removeClass('icon-cb-radio icon-radio').addClass('icon-radio');
        dom.removeClass('icon-radio').addClass('icon-cb-radio');
        dom.parent().addClass('on');
        dom.parent().siblings().removeClass('on');
        $editFlag.val('true');
    }
}

// 确认表单事件
function confirmAction() {
    let type = $invoiceType.find('.on').data('id'),
        title = $('.invoice-top').find('.on').text(),
        tel = $tel.attr('data-tel'),
        company = $company.val(),
        cont = $chooseCont.data('id');

    if ($editFlag.val() === 'true') {
        if (type === 2 && !myreg.test($tel.attr('data-tel'))) {
            tip.show('请输入正确手机号');
            $tel.focus();
            return false;
        } else if (title === '单位' && company.length === 0) {
            tip.show('请填写发票抬头');
            $company.focus();
            return false;
        } else if (title === '单位' && company.length > 30) {
            tip.show('发票抬头不得超过30个汉字');
            $company.focus();
            return false;
        } else {
            dialog.showDialog({
                dialogText: '确认保存修改内容?',
                hasFooter: {
                    leftBtnText: '取消',
                    rightBtnText: '确定'
                }
            }, function() {
                orderInfo('invoiceText', (title === '单位' ? company : ''));
                orderInfo('invoiceType', cont);
                orderInfo('receiverMobile', tel);
                orderInfo('invoicesType', type);
                orderInfo('invoiceTitle', title);

                if (isModifyTel && $copyTel !== tel) {
                    orderInfo('isModifyTel', true);
                } else {
                    orderInfo('isModifyTel', false);
                }

                dialog.showDialog({
                    dialogText: '保存成功',
                    autoHide: true,
                    fast: true
                });
                goToBack();
            }, function() {
                goToBack();
            });
        }
    } else {
        goToBack();
    }
}

$chooseCont.html($chooseContLi.text()).attr('data-id', $chooseContLi.find('span').data('id'));

// 发票抬头、发票内容选择
$('.invoice-top span, .invoice-cont li').not('.invoice-cont .cont-title').on('touchstart', function() {
    chooseAction($(this).parent(), $(this).find('.choose'));

    if ($(this).parent().hasClass('invoice-cont')) {
        $chooseCont.html($(this).text()).attr('data-id', $(this).find('span').data('id'));
    }

    if ($(this).text() === '单位') {
        $companyArea.slideDown();
    }

    if ($(this).text() === '个人') {
        $companyArea.slideUp();
    }
});

// 发票类型选择
$('.invoice-type span').on('touchstart', function() {
    if ($(this).hasClass('on')) {
        return;
    } else {
        $(this).addClass('on').siblings().removeClass('on');
        $editFlag.val('true');

        // 纸质发票不显示手机号
        if ($(this).index() === 1) {
            $telArea.slideUp();
        } else {
            $telArea.slideDown();
        }
    }
});

// 发票须知
$('.invoice-btn').on('touchstart', function() {
    $invoiceNotice.fadeIn();
    return false;
});

// 关闭发票须知弹框
$('.think-ok, .mask-bg').on('touchstart', function() {
    $invoiceNotice.fadeOut();
});

// 电话清空
$('.istel').one('input', function() {
    $(this).val('').removeClass('istel');
});

$tel.on('input', function() {
    $(this).attr('data-tel', $(this).val());
    $editFlag.val('true');
    isModifyTel = true;
});

$company.on('input', function() {
    $editFlag.val('true');
});

// 确认及返回事件
$('.confirm-btn, .nav-back').on('touchstart', function(e) {

    setTimeout(function() {
        if (window._yas && window._yas.sendCustomInfo) {
            window._yas.sendCustomInfo({
                op: 'YB_SC_INVOICE_INFO_SAVE',
                param: JSON.stringify({
                    C_ID: C_ID,
                    INVOICE_TYPE: $invoiceType.find('.on').data('id'),
                    INVOICE_TITLE: $('.invoice-top').find('.on').text(),
                    INVOICE_CONTENT: $chooseCont.data('id')
                })
            }, true);
        }
    }, 200);

    e.preventDefault();
    confirmAction();
});

// initData();