|
|
/**
|
|
|
* 订单确认
|
|
|
* @author: xuqi<qi.xu@yoho.cn>
|
|
|
* @date: 2015/11/12
|
|
|
*/
|
|
|
|
|
|
var $ = require('yoho-jquery'),
|
|
|
lazyLoad = require('yoho-jquery-lazyload'),
|
|
|
cookie = require('yoho-cookie');
|
|
|
|
|
|
var tip = require('../plugin/tip'),
|
|
|
loading = require('../plugin/loading'),
|
|
|
order = require('./order-info'),
|
|
|
richTip = require('../plugin/rich-tip');
|
|
|
|
|
|
var $invoice = $('.invoice'),
|
|
|
$couponUse = $('.coupon-use.used'),
|
|
|
$addressWrap = $('.address-wrap'),
|
|
|
$coinCheck = $('.coin-check'),
|
|
|
$coinLi = $('li.coin'),
|
|
|
$subBlock = $('.sub-block'),
|
|
|
$ticketsMobile = $('#mobile'),
|
|
|
payType,
|
|
|
queryString = $.queryString(),
|
|
|
orderInfo = order.orderInfo,
|
|
|
isSubmiting,
|
|
|
dispatchInfo,
|
|
|
total,
|
|
|
isTickets = $('#ticketsPage').val(),
|
|
|
productSku = $('#productSku').val(),
|
|
|
buyNumber = $('#buyNumber').val(),
|
|
|
headerTop = $('#yoho-header').outerHeight(),
|
|
|
isYohoCoinClick = $coinLi.data('yoho-coin-click') * 1, // 判断有货币是否可以单击
|
|
|
addressTop = $('.address-wrap').outerHeight();
|
|
|
|
|
|
var orderCont = cookie.get('order-info') && JSON.parse(cookie.get('order-info'));
|
|
|
var invoiceCont = {
|
|
|
7: '服装',
|
|
|
1: '图书',
|
|
|
9: '配件',
|
|
|
11: '日用品',
|
|
|
3: '办公用品',
|
|
|
6: '体育用品',
|
|
|
10: '数码产品'
|
|
|
},
|
|
|
invoicesType = {
|
|
|
1: '纸质',
|
|
|
2: '电子'
|
|
|
};
|
|
|
|
|
|
require('../common');
|
|
|
|
|
|
lazyLoad();
|
|
|
|
|
|
// 初始化发票信息
|
|
|
function invoiceInit() {
|
|
|
if (orderCont.invoiceType) {
|
|
|
$('.invoice-type').text(invoiceCont[orderCont.invoiceType] + '(' + invoicesType[orderCont.invoicesType] + ')');
|
|
|
} else {
|
|
|
$('.invoice-type').text('服装(电子)');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function getQueryParam() {
|
|
|
var queryArray = location.search.substr(1).split('&'),
|
|
|
i,
|
|
|
subArr = [],
|
|
|
obj = {};
|
|
|
|
|
|
for (i = 0; i < queryArray.length; i++) {
|
|
|
subArr = queryArray[i].split('=');
|
|
|
obj[subArr[0]] = subArr[1];
|
|
|
subArr = [];
|
|
|
}
|
|
|
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
function isLimitGood() {
|
|
|
return getQueryParam().limitproductcode;
|
|
|
}
|
|
|
|
|
|
|
|
|
if (window.getUid() !== orderInfo('uid')) {
|
|
|
order.init();
|
|
|
window.location.reload();
|
|
|
}
|
|
|
|
|
|
if ($couponUse.data('name') !== orderInfo('couponName')) {
|
|
|
orderInfo('couponCode', null);
|
|
|
orderInfo('couponName', null);
|
|
|
}
|
|
|
|
|
|
// 来自购物车的链接默认不使用优惠券
|
|
|
if (document.referrer && document.referrer.indexOf('/cart/index/index') !== -1) {
|
|
|
orderInfo('couponCode', null);
|
|
|
orderInfo('couponName', null);
|
|
|
}
|
|
|
|
|
|
isLimitGood() && (function() {
|
|
|
var a = [];
|
|
|
|
|
|
var data = getQueryParam();
|
|
|
|
|
|
data.type = 'limitcode';
|
|
|
|
|
|
a.push(data);
|
|
|
orderInfo('skuList', JSON.stringify(a));
|
|
|
orderInfo('limitUrlSufix', location.search);
|
|
|
}());
|
|
|
|
|
|
if (queryString.cartType || queryString.carttype || !orderInfo('cartType')) {
|
|
|
orderInfo('cartType', queryString.cartType || queryString.carttype || 'ordinary');
|
|
|
}
|
|
|
|
|
|
// function dispacthTapEvt(e) {
|
|
|
// var $cur = $(e.target).closest('li');
|
|
|
|
|
|
// if ($cur.length === 0 || $cur.hasClass('chosed')) {
|
|
|
// return;
|
|
|
// }
|
|
|
|
|
|
// $cur.siblings('li.chosed').removeClass('chosed');
|
|
|
// $cur.addClass('chosed');
|
|
|
// }
|
|
|
|
|
|
$('.checkbox').on('touchstart', function(e) {
|
|
|
var $this = $(this);
|
|
|
|
|
|
if ($(e.target).closest('.coin-check').length && !isYohoCoinClick) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if ($this.hasClass('icon-cb-radio')) {
|
|
|
$this.removeClass('icon-cb-radio').addClass('icon-radio');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if ($this.hasClass('icon-radio')) {
|
|
|
$this.removeClass('icon-radio').addClass('icon-cb-radio');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
$invoice.on('touchend', '.checkbox', function() {
|
|
|
var $this = $(this);
|
|
|
|
|
|
if ($this.hasClass('icon-cb-radio')) {
|
|
|
$invoice.addClass('focus');
|
|
|
orderInfo('invoiceText', '');
|
|
|
orderInfo('invoiceType', '7');
|
|
|
orderInfo('receiverMobile', $('.user-mobile').val());
|
|
|
orderInfo('invoicesType', '2');
|
|
|
orderInfo('invoiceTitle', '个人');
|
|
|
}
|
|
|
if ($this.hasClass('icon-radio')) {
|
|
|
$invoice.removeClass('focus');
|
|
|
orderInfo('invoiceText', null);
|
|
|
orderInfo('invoiceType', null);
|
|
|
orderInfo('receiverMobile', null);
|
|
|
orderInfo('invoicesType', null);
|
|
|
orderInfo('invoiceTitle', null);
|
|
|
}
|
|
|
|
|
|
orderCont = cookie.get('order-info') && JSON.parse(cookie.get('order-info'));
|
|
|
invoiceInit();
|
|
|
});
|
|
|
|
|
|
|
|
|
function updateDeliverId(id) {
|
|
|
var $moreJit = $('.more-jit a').get(0),
|
|
|
url;
|
|
|
|
|
|
if ($moreJit) {
|
|
|
url = $moreJit.href;
|
|
|
} else {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (url.indexOf('deliveryId') < 0) {
|
|
|
$moreJit.href = url + '&deliveryId=' + id;
|
|
|
} else {
|
|
|
$moreJit.href = url.replace(/deliveryId=(\d)/, 'deliveryId=' + id);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function orderCompute() {
|
|
|
var yohoCoin = orderInfo('yohoCoin'),
|
|
|
deliverId = orderInfo('deliveryId'),
|
|
|
data = {
|
|
|
cartType: orderInfo('cartType') || 'ordinary',
|
|
|
deliveryId: orderInfo('deliveryId'),
|
|
|
paymentType: orderInfo('paymentType'),
|
|
|
couponCode: orderInfo('couponCode'),
|
|
|
yohoCoin: yohoCoin,
|
|
|
skuList: isLimitGood() ? orderInfo('skuList') : undefined
|
|
|
};
|
|
|
|
|
|
// 门票
|
|
|
if (isTickets) {
|
|
|
data = {
|
|
|
type: 'tickets',
|
|
|
productSku: productSku,
|
|
|
buyNumber: buyNumber,
|
|
|
yohoCoin: yohoCoin
|
|
|
};
|
|
|
}
|
|
|
|
|
|
loading.showLoadingMask();
|
|
|
$.ajax({
|
|
|
method: 'POST',
|
|
|
url: '/cart/index/new/orderCompute',
|
|
|
data: data
|
|
|
}).then(function(res) {
|
|
|
if ($.type(res) !== 'object') {
|
|
|
window.location.reload();
|
|
|
} else {
|
|
|
if (typeof res.last_order_amount !== undefined) {
|
|
|
res.last_order_amount = (+res.last_order_amount).toFixed(2);
|
|
|
}
|
|
|
|
|
|
if (res.use_yoho_coin) {
|
|
|
$coinCheck.find('em').html('- ¥ ' + res.use_yoho_coin);
|
|
|
$coinCheck.find('em').show();
|
|
|
}
|
|
|
$coinLi.find('.msg').html(res.yohoCoinCompute.yohoCoinMsg);
|
|
|
isYohoCoinClick = res.yohoCoinCompute.yohoCoinClick * 1;
|
|
|
$('.coin').data('yoho-coin', res.yohoCoinCompute.yohoCoin);
|
|
|
|
|
|
total = '';
|
|
|
if (res.promotion_formula_list) {
|
|
|
$.each(res.promotion_formula_list, function(index, value) {
|
|
|
total += '<li>' +
|
|
|
'<p>' + value.promotion + '</p>' +
|
|
|
'<span>' + value.promotion_amount + '</span>' +
|
|
|
'</li>';
|
|
|
});
|
|
|
$('.price-cost span').html('¥' + res.last_order_amount);
|
|
|
$('.bill span').html('¥' + res.last_order_amount);
|
|
|
$('.total').html(total);
|
|
|
}
|
|
|
|
|
|
updateDeliverId(deliverId);
|
|
|
}
|
|
|
}).fail(function() {
|
|
|
window.location.reload();
|
|
|
}).always(function() {
|
|
|
loading.hideLoadingMask();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
function submitOrder() {
|
|
|
var invoiceText = $invoice.find('[name="invoice-title"]').val() || orderInfo('invoiceText'),
|
|
|
msg = $('#msg').find('input').val() || orderInfo('msg');
|
|
|
|
|
|
if (isSubmiting) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// if (orderInfo('invoice')) {
|
|
|
// if (!invoiceText) {
|
|
|
// tip.show('请输入发票抬头');
|
|
|
// return;
|
|
|
// }
|
|
|
// if (invoiceText.length > 30) {
|
|
|
// tip.show('发票抬头不得超过30个汉字');
|
|
|
// return;
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
if (msg) {
|
|
|
if (msg.length > 40) {
|
|
|
tip.show('留言不得超过40个汉字');
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
loading.showLoadingMask();
|
|
|
isSubmiting = true;
|
|
|
$.ajax({
|
|
|
method: 'POST',
|
|
|
url: '/cart/index/new/orderSub',
|
|
|
data: {
|
|
|
addressId: orderInfo('addressId'),
|
|
|
cartType: orderInfo('cartType') || 'ordinary',
|
|
|
deliveryId: orderInfo('deliveryId'),
|
|
|
deliveryTimeId: orderInfo('deliveryTimeId'),
|
|
|
invoiceText: orderInfo('invoice') ? invoiceText : null,
|
|
|
invoiceType: orderInfo('invoice') ? ($invoice.find('.invoice-type').val() ||
|
|
|
orderInfo('invoiceType')) : null,
|
|
|
msg: msg,
|
|
|
paymentTypeId: orderInfo('paymentTypeId'),
|
|
|
paymentType: orderInfo('paymentType'), // 支付方式
|
|
|
couponCode: orderInfo('couponCode'),
|
|
|
yohoCoin: orderInfo('yohoCoin'),
|
|
|
skuList: isLimitGood() ? orderInfo('skuList') : undefined
|
|
|
}
|
|
|
}).then(function(res) {
|
|
|
var url;
|
|
|
|
|
|
if (!res) {
|
|
|
tip.show('系统繁忙,请稍后再试!');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
if (payType === 2) {
|
|
|
|
|
|
// 货到付款的进入订单页面
|
|
|
url = '/home/orderDetail?order_code=' + res.data.order_code;
|
|
|
} else {
|
|
|
url = '/home/orders/paynew?order_code=' + res.data.order_code;
|
|
|
}
|
|
|
|
|
|
/* tar add 161116 */
|
|
|
if (window._yas && window._yas.sendCustomInfo) {
|
|
|
window._yas.sendCustomInfo({
|
|
|
op: 'YB_SC_TOPAY_CLICK',
|
|
|
param: JSON.stringify({
|
|
|
C_ID: window._ChannelVary[cookie.get('_Channel')],
|
|
|
ORDER_CODE: res.data.order_code + '',
|
|
|
PRD_NUM: $('#goods-num').val(),
|
|
|
ORDER_AMOUNT: res.data.order_amount
|
|
|
})
|
|
|
}, true);
|
|
|
}
|
|
|
|
|
|
/* tar add 190222 */
|
|
|
if (window._fxcmd) {
|
|
|
window._fxcmd.push(['trackOrder', {
|
|
|
oid: res.data.order_code,
|
|
|
otp: res.data.order_amount,
|
|
|
u_info: cookie.get('_UID'),
|
|
|
u_type: cookie.get('_isNewUser') ? 1 : 0
|
|
|
}, []]);
|
|
|
}
|
|
|
|
|
|
cookie.remove(['order-info', 'activity-info']);
|
|
|
window.location.href = url;
|
|
|
} else if (res.code === 409) {
|
|
|
richTip.show(res.message, res.buttons);
|
|
|
} else if (res.message) {
|
|
|
tip.show(res.message);
|
|
|
}
|
|
|
}).fail(function() {
|
|
|
tip.show('系统繁忙,请稍后再试!');
|
|
|
}).always(function() {
|
|
|
isSubmiting = false;
|
|
|
loading.hideLoadingMask();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 界面点击,状态存 cookie
|
|
|
if (!orderInfo('addressId')) {
|
|
|
orderInfo('addressId', $addressWrap.data('id'));
|
|
|
}
|
|
|
|
|
|
$('.delivery-id').on('touchend', 'li', function() {
|
|
|
orderInfo('deliveryId', $(this).data('id'));
|
|
|
|
|
|
// 实付金额发生变化,使用有货币为0
|
|
|
orderInfo('yohoCoin', 0);
|
|
|
$('.coin').find('.checkbox').removeClass('icon-cb-radio').addClass('icon-radio');
|
|
|
|
|
|
orderCompute();
|
|
|
});
|
|
|
|
|
|
$('.payment-type').on('touchend', 'li', function() {
|
|
|
var $paymentType = $('.icon-cb-radio', this);
|
|
|
|
|
|
orderInfo('paymentTypeId', $paymentType.data('id')); // 支付方式id
|
|
|
orderInfo('paymentType', $paymentType.data('payment-type')); // 支付方式
|
|
|
});
|
|
|
|
|
|
$('.dispatch-time').on('touchend', 'li', function() {
|
|
|
orderInfo('deliveryTimeId', $(this).data('id'));
|
|
|
});
|
|
|
|
|
|
$('.yoho-coin-help-dialog-bg, .yoho-coin-footer').on('touchend', function(e) {
|
|
|
e.preventDefault();
|
|
|
$('.yoho-coin-help-dialog-bg').addClass('hide');
|
|
|
$('.yoho-coin-help-dialog').addClass('hide');
|
|
|
});
|
|
|
|
|
|
$('.coin').on('touchend', function(e) {
|
|
|
var $this = $(this);
|
|
|
|
|
|
if ($(e.target).closest('.yoho-coin-help').length) {
|
|
|
$('.yoho-coin-help-dialog-bg').removeClass('hide');
|
|
|
$('.yoho-coin-help-dialog').removeClass('hide');
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if ($(e.target).closest('.coin-check').length <= 0) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (!isYohoCoinClick) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if ($this.find('.checkbox').hasClass('icon-cb-radio')) {
|
|
|
orderInfo('yohoCoin', $this.data('yoho-coin'));
|
|
|
$this.find('.can-use').hide();
|
|
|
} else {
|
|
|
orderInfo('yohoCoin', 0);
|
|
|
$this.find('.coin-check em').hide();
|
|
|
$this.find('.can-use').show();
|
|
|
$this.find('.used').hide();
|
|
|
}
|
|
|
orderCompute();
|
|
|
});
|
|
|
|
|
|
$invoice.on('touchend', '.checkbox', function(e) {
|
|
|
var $this = $(this);
|
|
|
|
|
|
orderInfo('invoice', $this.hasClass('icon-cb-radio'));
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
});
|
|
|
|
|
|
$invoice.find('[name="invoice-title"]').on('blur', function() {
|
|
|
orderInfo('invoiceText', $(this).val());
|
|
|
}).end().find('.invoice-type').on('change', function() {
|
|
|
orderInfo('invoiceType', $(this).val());
|
|
|
});
|
|
|
|
|
|
$('#msg').find('textarea').on('blur', function() {
|
|
|
orderInfo('msg', $(this).val());
|
|
|
});
|
|
|
|
|
|
$('form').on('submit', function() {
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
// xwg 2016/3/21 13:22
|
|
|
$('.dispatch').on('touchend', 'h3', function() {
|
|
|
if ($(this).siblings('ul').is(':hidden')) {
|
|
|
$('.dispatch h3').removeClass('border-none');
|
|
|
$(this).addClass('border-none');
|
|
|
$('.down').removeClass('hide');
|
|
|
$('.up').addClass('hide');
|
|
|
$('.up', this).removeClass('hide');
|
|
|
$('.down', this).addClass('hide');
|
|
|
$('.dispatch ul').hide();
|
|
|
$(this).siblings('ul').show();
|
|
|
} else {
|
|
|
$(this).removeClass('border-none');
|
|
|
$('.down', this).removeClass('hide');
|
|
|
$('.up', this).addClass('hide');
|
|
|
$(this).siblings('ul').hide();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
$subBlock.on('touchstart', 'li', function() {
|
|
|
// 送货时间提示语li,不响应事件
|
|
|
if ($(this).hasClass('dispatch-time-info')) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
$.each($(this).parents('ul').find('i'), function() {
|
|
|
$(this).parents('ul').find('i').removeClass('icon-cb-radio').addClass('icon-radio');
|
|
|
});
|
|
|
let self = $(this);
|
|
|
|
|
|
setTimeout(function() {
|
|
|
self.parents('ul').hide();
|
|
|
}, 300);
|
|
|
|
|
|
$('.down').removeClass('hide');
|
|
|
$('.up').addClass('hide');
|
|
|
$('.dispatch h3').removeClass('border-none');
|
|
|
dispatchInfo = $(this).find('span').html();
|
|
|
$(this).parents('.sub-block').find('h3 span').html(dispatchInfo);
|
|
|
if ($(this).find('i').hasClass('icon-cb-radio')) {
|
|
|
$(this).find('i').addClass('icon-radio');
|
|
|
} else if ($(this).find('i').hasClass('icon-radio')) {
|
|
|
$(this).find('i').addClass('icon-cb-radio');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
$('.bill a').on('touchstart', function() {
|
|
|
var $paymentType;
|
|
|
|
|
|
if (isTickets) {
|
|
|
ticketsConfirm(); // eslint-disable-line
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
$paymentType = $('.payment-type .icon-cb-radio');
|
|
|
orderInfo('paymentTypeId', $paymentType.data('id')); // 支付方式id
|
|
|
orderInfo('paymentType', $paymentType.data('payment-type')); // 支付方式
|
|
|
|
|
|
payType = $paymentType.data('payment-type');
|
|
|
submitOrder();
|
|
|
});
|
|
|
|
|
|
function phoneHidden(phone) {
|
|
|
phone = phone || '';
|
|
|
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
|
|
|
}
|
|
|
|
|
|
$('.info-phone').html(phoneHidden($('.info-phone').html()));
|
|
|
|
|
|
if (orderInfo('address') && orderInfo('address').is_support === 'N') {
|
|
|
orderInfo('deliveryId', $('.delivery-id .icon-cb-radio').data('id'));
|
|
|
orderCompute();
|
|
|
}
|
|
|
|
|
|
// 电子票下单
|
|
|
function ticketsConfirm() {
|
|
|
var data = {
|
|
|
productSku: productSku,
|
|
|
buyNumber: buyNumber,
|
|
|
mobile: $ticketsMobile.val(),
|
|
|
useYohoCoin: orderInfo('yohoCoin')
|
|
|
};
|
|
|
|
|
|
if (!$ticketsMobile.val()) {
|
|
|
tip.show('手机号必填');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
$.ajax({
|
|
|
url: '/cart/index/submitTicket',
|
|
|
type: 'POST',
|
|
|
dataType: 'json',
|
|
|
data: data,
|
|
|
success: function(ticket) {
|
|
|
|
|
|
// 下单成功调整支付页面
|
|
|
if (ticket.code === 200) {
|
|
|
window.location.href = '/home/orders/paynew?order_code=' + ticket.data.order_code;
|
|
|
} else {
|
|
|
tip.show(ticket.message);
|
|
|
}
|
|
|
|
|
|
},
|
|
|
error: function() {
|
|
|
tip.show('网络异常~');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 校验手机号
|
|
|
$ticketsMobile.blur(function() {
|
|
|
var reg = /^[0123456789]{1,30}$/;
|
|
|
var mobile = $ticketsMobile.val();
|
|
|
|
|
|
if (!reg.test(mobile)) {
|
|
|
tip.show('手机号码不正确!');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 初始化发票信息内容
|
|
|
invoiceInit();
|
|
|
|
|
|
$(window).scroll(function() {
|
|
|
|
|
|
if ($(this).scrollTop() >= (headerTop + addressTop)) {
|
|
|
$('.address-bottom').show();
|
|
|
} else {
|
|
|
$('.address-bottom').hide();
|
|
|
}
|
|
|
}); |
|
|
require('./order-ensure'); |
|
|
\ No newline at end of file |
...
|
...
|
|