...
|
...
|
@@ -2,9 +2,535 @@ |
|
|
* @Author: Targaryen
|
|
|
* @Date: 2017-06-21 10:30:21
|
|
|
* @Last Modified by: Targaryen
|
|
|
* @Last Modified time: 2017-06-21 16:32:13
|
|
|
* @Last Modified time: 2017-06-21 18:03:11
|
|
|
*/
|
|
|
require('buynow/order-ensure.page.css');
|
|
|
const $ = require('yoho-jquery');
|
|
|
const lazyLoad = require('yoho-jquery-lazyload');
|
|
|
const cookie = require('yoho-cookie');
|
|
|
|
|
|
let tip = require('plugin/tip'),
|
|
|
loading = require('plugin/loading'),
|
|
|
order = require('../cart/order-info'),
|
|
|
richTip = require('plugin/rich-tip');
|
|
|
|
|
|
let $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(),
|
|
|
$message = $('#msg'),
|
|
|
$noPrintPrice = $('.no-print-price');
|
|
|
|
|
|
require('common');
|
|
|
|
|
|
lazyLoad();
|
|
|
|
|
|
function getQueryParam() {
|
|
|
let 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() {
|
|
|
let a = [];
|
|
|
|
|
|
let 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');
|
|
|
}
|
|
|
|
|
|
$('.checkbox').on('touchstart', function(e) {
|
|
|
let $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() {
|
|
|
let $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);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
function updateDeliverId(id) {
|
|
|
let $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() {
|
|
|
let 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') : void 0
|
|
|
};
|
|
|
|
|
|
// 门票
|
|
|
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() {
|
|
|
let invoiceText = $invoice.find('[name="invoice-title"]').val() || orderInfo('invoiceText'),
|
|
|
msg = $('#msg').find('input').val() || orderInfo('msg');
|
|
|
|
|
|
if (isSubmiting) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
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,
|
|
|
isPrintPrice: orderInfo('isPrintPrice'),
|
|
|
paymentTypeId: orderInfo('paymentTypeId'),
|
|
|
paymentType: orderInfo('paymentType'), // 支付方式
|
|
|
couponCode: orderInfo('couponCode'),
|
|
|
yohoCoin: orderInfo('yohoCoin'),
|
|
|
skuList: isLimitGood() ? orderInfo('skuList') : void 0
|
|
|
}
|
|
|
}).then(function(res) {
|
|
|
let 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 170426 品众代码去除 */
|
|
|
/* tar note 170601 品众代码恢复 */
|
|
|
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() {
|
|
|
let $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) {
|
|
|
let $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) {
|
|
|
let $this = $(this);
|
|
|
|
|
|
orderInfo('invoice', $this.hasClass('icon-cb-radio'));
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
});
|
|
|
|
|
|
/**
|
|
|
* 是否打印价格
|
|
|
*/
|
|
|
$noPrintPrice.on('touchend', '.checkbox', function(e) {
|
|
|
let $this = $(this);
|
|
|
|
|
|
orderInfo('isPrintPrice', $this.hasClass('icon-cb-radio') ? 'N' : 'Y');
|
|
|
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() {
|
|
|
let $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() {
|
|
|
let 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() {
|
|
|
let reg = /^[0123456789]{1,30}$/;
|
|
|
let mobile = $ticketsMobile.val();
|
|
|
|
|
|
if (!reg.test(mobile)) {
|
|
|
tip.show('手机号码不正确!');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 留言点击滚动屏幕
|
|
|
$message.on('click', function() {
|
|
|
$('html,body').animate({
|
|
|
scrollTop: $message.offset().top
|
|
|
}, 500);
|
|
|
});
|
|
|
|
|
|
$(window).scroll(function() {
|
|
|
|
|
|
if ($(this).scrollTop() >= (headerTop + addressTop)) {
|
|
|
$('.address-bottom').show();
|
|
|
} else {
|
|
|
$('.address-bottom').hide();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
lazyLoad($('img.lazy')); |
...
|
...
|
|