vr-shopxo-plugin/shopxo/public/static/index/default/js/buy.js

212 lines
7.9 KiB
JavaScript
Executable File

var store = $.AMUI.store;
if(store.enabled)
{
// 选择缓存key
var store_use_new_address_status_key = 'store-buy-use-new-address-status-count';
} else {
alert(lang_store_enabled_tips || '您的浏览器不支持本地存储。请禁用“专用模式”,或升级到现代浏览器。');
}
$(function()
{
// 选中处理
if(store.enabled)
{
// 是否使用新地址
var store_address_use_status = store.get(store_use_new_address_status_key);
if(store_address_use_status !== undefined)
{
// 如果新的地址大于使用新地址标记数量则使用第一个地址
if(store_address_use_status < $('ul.address-list li').length)
{
store.set(store_use_new_address_status_key, undefined);
var anchor = $('.address').attr('id') || '';
window.location.href = UrlFieldReplace('address_id', $('ul.address-list li:first').data('value'), null, anchor);
}
}
}
// 地址选择
$(document).on('click', 'ul.address-list li', function(e)
{
if($(window).width() < 641)
{
if(!$('.address').hasClass('mobile-address'))
{
$('.address').addClass('mobile-address');
$(document.body).css({"overflow": "hidden", "position":"fixed"});
e.stopPropagation();
}
} else {
var anchor = $(this).parents('.address').attr('id') || '';
window.location.href = UrlFieldReplace('address_id', $(this).data('value'), null, anchor);
}
});
// 手机模式下选择地址
$(document).on('click', '.address.mobile-address ul.address-list li', function()
{
var default_address_id = $('.address ul.address-list li.address-default').data('value');
var address_id = $(this).data('value');
if(default_address_id == address_id)
{
$('.mobile-address-close-submit').trigger('click');
} else {
var anchor = $(this).parents('.address').attr('id') || '';
window.location.href = UrlFieldReplace('address_id', address_id, null, anchor);
}
});
// 手机模式下关闭地址选中
$(document).on('click', '.mobile-address-close-submit', function()
{
$('.address').removeClass('mobile-address');
$(document.body).css({"overflow": "auto", "position":"unset"});
});
// 设为默认地址
$(document).on('click', '.address-default-submit', function(e)
{
ConfirmNetworkAjax($(this));
e.stopPropagation();
});
// 混合列表选择
$(document).on('click', '.business-list ul li', function()
{
var $parent = $(this).parents('.business-list');
var field = $parent.data('field') || null;
var value = $(this).data('value') || null;
if(field != null && value != null)
{
var anchor = $parent.attr('id') || $(this).parents('.buy-items').attr('id') || '';
window.location.href = UrlFieldReplace(field, value, null, anchor);
}
});
// 弹出地址选择
$(document).on('click', '.address-submit-save', function(e)
{
ModalLoad($(this).data('url'), $(this).data('title'), 'common-address-modal');
// 阻止事件冒泡
e.stopPropagation();
// 使用新地址标记
store.set(store_use_new_address_status_key, $('ul.address-list li').length);
});
// 阻止事件冒泡
$(document).on('click', '.address-submit-delete', function(e)
{
ConfirmDataDelete($(this));
e.stopPropagation();
});
// 提交订单
$(document).on('click', 'form.nav-buy .buy-submit', function()
{
// 0销售型, 1同城, 2自提点 校验地址
var site_type = parseInt($('form.nav-buy').data('site-type') || 0);
if(site_type <= 2)
{
var address_id = parseInt($('form.nav-buy input[name="address_id"]').val());
if(address_id == -1)
{
Prompt(lang_address_choice_tips || '请选择地址');
return false;
}
}
// 自提联系人、电话、时间是否需要填写
var $extraction_contact_name = $('input[form-name="extraction_contact_name"]');
if($extraction_contact_name.length > 0 && $extraction_contact_name.attr('required') && $extraction_contact_name.val().length == 0)
{
Prompt($extraction_contact_name.attr('data-validation-message') || '请填写姓名和电话');
return false;
}
var $extraction_contact_tel = $('input[form-name="extraction_contact_tel"]');
if($extraction_contact_tel.length > 0 && $extraction_contact_tel.attr('required') && $extraction_contact_tel.val().length == 0)
{
Prompt($extraction_contact_tel.attr('data-validation-message') || '请填写姓名和电话');
return false;
}
var $appoint_time = $('input[form-name="appoint_time"]');
if($appoint_time.length > 0 && $appoint_time.attr('required') && $appoint_time.val().length == 0)
{
Prompt($appoint_time.attr('data-validation-message') || '请选择时间');
return false;
}
// 非预约模式校验支付方式
var is_booking = $('form.nav-buy').data('is-booking') || 0;
var actual_price = parseFloat($('form.nav-buy').data('base-actual-price')) || 0;
if(is_booking != 1 && actual_price > 0)
{
var payment_id = parseInt($('form.nav-buy input[name="payment_id"]').val()) || 0;
if(payment_id === 0)
{
Prompt(lang_payment_choice_tips || '请选择支付');
return false;
}
}
// 备注
$('form.nav-buy input[name="user_note"]').val($('.buy-message .memo-input').val());
});
// 自提点地址
$extraction_popup = $('#extraction-address-popup');
$extraction_popup.find('.extraction-address-item button').on('click', function()
{
var anchor = $(this).parents('.address').attr('id') || '';
window.location.href = UrlFieldReplace('address_id', $(this).data('value'), null, anchor);
});
$(document).on('click', '.extraction-default .extraction-address-item', function(e)
{
if($(window).width() < 641)
{
$extraction_popup.modal();
}
});
// 销售+自提 切换
$(document).on('click', '.buy-header-nav li a', function()
{
var value = $(this).data('value') || 0;
var url = UrlFieldReplace('address_id', null);
var anchor = $(this).parents('.buy-header-nav').attr('id') || '';
window.location.href = UrlFieldReplace('site_model', value, url, anchor);
});
// 地址扩展字段填写同步和更新
var address_extend_field_key = 'buy-address-extend-field-';
$(document).on('blur', '.address-extend-field-container input', function()
{
var form_name = $(this).attr('form-name');
var value = $(this).val();
store.set(address_extend_field_key+form_name, value);
$('form.nav-buy input[name="'+form_name+'"]').val(value);
});
$(document).on('change', '.address-extend-field-container input', function()
{
var form_name = $(this).attr('form-name');
var value = $(this).val();
store.set(address_extend_field_key+form_name, value);
$('form.nav-buy input[name="'+form_name+'"]').val(value);
});
// 初始化赋值
if($('.address-extend-field-container input').length > 0)
{
$('.address-extend-field-container input').each(function()
{
var form_name = $(this).attr('form-name');
var value = store.get(address_extend_field_key+form_name);
if(value !== undefined)
{
$(this).val(value);
$('form.nav-buy input[name="'+form_name+'"]').val(value);
}
});
}
});