237 lines
7.8 KiB
JavaScript
Executable File
237 lines
7.8 KiB
JavaScript
Executable File
$(function()
|
|
{
|
|
/**
|
|
* 计算选择的商品总数和总价
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 1.0.0
|
|
* @date 2020-03-21
|
|
* @desc description
|
|
*/
|
|
function CartBaseTotal()
|
|
{
|
|
var total_stock = 0;
|
|
var total_price = 0.00;
|
|
var goods_ids = [];
|
|
var ids = [];
|
|
$('.am-table input[type="checkbox"]').each(function(k, v)
|
|
{
|
|
if($(this).prop('checked'))
|
|
{
|
|
var $stock = $(this).parents('tr').find('.stock-tag');
|
|
var stock = parseInt($stock.find('input').val());
|
|
var price = parseFloat($stock.attr('data-price'));
|
|
total_stock += stock;
|
|
total_price += stock*price;
|
|
ids.push($(this).val());
|
|
goods_ids.push($(this).parents('tr').attr('data-goods-id'))
|
|
}
|
|
});
|
|
ids = ids.toString() || 0;
|
|
goods_ids = goods_ids.toString() || 0;
|
|
$('.cart-nav .selected-tips strong').text(total_stock);
|
|
$('.cart-nav .nav-total-price').text(__currency_symbol__+FomatFloat(total_price));
|
|
$('.cart-nav input[name="ids"]').val(ids.toString() || 0);
|
|
$('.cart-nav .nav-delete-submit').attr('data-id', ids);
|
|
$('.cart-nav .nav-collect-submit').attr('data-id', goods_ids);
|
|
}
|
|
|
|
/**
|
|
* 购物车数量更新
|
|
* @author Devil
|
|
* @blog http://gong.gg/
|
|
* @version 1.0.0
|
|
* @date 2018-10-11
|
|
* @desc description
|
|
* @param {[object]} self [操作按钮对象]
|
|
* @param {[int]} stock [数量]
|
|
*/
|
|
function CartNumberUpdate(self, stock)
|
|
{
|
|
var id = parseInt(self.parents('tr').data('id'));
|
|
var goods_id = parseInt(self.parents('tr').data('goods-id'));
|
|
var inventory = parseInt(self.parents('.stock-tag').data('inventory'));
|
|
var price = parseFloat(self.parents('.stock-tag').data('price'));
|
|
var type = self.data('type');
|
|
|
|
if(stock > inventory)
|
|
{
|
|
stock = inventory;
|
|
}
|
|
if(stock <= 0)
|
|
{
|
|
stock = 1;
|
|
}
|
|
|
|
// 开启进度条
|
|
$.AMUI.progress.start();
|
|
|
|
// ajax请求
|
|
$.ajax({
|
|
url: RequestUrlHandle($('.cart-content').data('ajax-url')),
|
|
type: 'post',
|
|
dataType: "json",
|
|
timeout: 10000,
|
|
data: {"id": id, "goods_id": goods_id, "stock": stock},
|
|
success: function(res)
|
|
{
|
|
$.AMUI.progress.done();
|
|
if(res.code == 0)
|
|
{
|
|
var $stock = self.parents('.stock-tag');
|
|
$stock.attr('data-price', res.data.price);
|
|
$stock.find('input').val(res.data.stock);
|
|
self.parents('tr').find('.line-price').text(res.data.show_price_symbol+res.data.price+res.data.show_price_unit);
|
|
self.parents('tr').find('.total-price-content').text(__currency_symbol__+res.data.total_price);
|
|
|
|
Prompt(res.msg, 'success');
|
|
|
|
// 计算选择的商品总数和总价
|
|
CartBaseTotal();
|
|
} else {
|
|
Prompt(res.msg);
|
|
}
|
|
},
|
|
error: function(xhr, type)
|
|
{
|
|
$.AMUI.progress.done();
|
|
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
|
|
}
|
|
});
|
|
}
|
|
|
|
// 购物车数量操作
|
|
$(document).on('click', '.stock-tag .stock-submit', function()
|
|
{
|
|
// 数量参数
|
|
var $parent = $(this).parents('.stock-tag');
|
|
var $input = $parent.find('input[type="number"]');
|
|
var min = parseInt($input.data('min-limit') || 1);
|
|
var max = parseInt($input.data('max-limit'));
|
|
var unit = $input.data('unit') || '';
|
|
var stock = parseInt($input.val());
|
|
var type = $(this).data('type');
|
|
if(type == 'add')
|
|
{
|
|
var temp_stock = stock+1;
|
|
if(max > 0 && temp_stock > max)
|
|
{
|
|
$input.val(max);
|
|
Prompt((window['lang_goods_stock_max_tips'] || '最大限购数量')+max+unit);
|
|
return false;
|
|
}
|
|
} else {
|
|
var temp_stock = stock-1;
|
|
if(temp_stock < min)
|
|
{
|
|
$input.val(min);
|
|
Prompt((window['lang_goods_stock_min_tips'] || '最低起购数量')+min+unit);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
CartNumberUpdate($(this), temp_stock);
|
|
});
|
|
|
|
// 输入事件
|
|
$(document).on('blur', '.stock-tag input[type="number"]', function()
|
|
{
|
|
// 数量参数
|
|
var $input = $(this);
|
|
var min = parseInt($input.data('min-limit') || 1);
|
|
var max = parseInt($input.data('max-limit'));
|
|
var unit = $input.data('unit') || '';
|
|
var stock = parseInt($input.val());
|
|
if(isNaN(stock))
|
|
{
|
|
stock = min;
|
|
}
|
|
if(max > 0 && stock > max)
|
|
{
|
|
stock = max;
|
|
}
|
|
if(stock < min)
|
|
{
|
|
stock = min;
|
|
}
|
|
$(this).val(stock);
|
|
CartNumberUpdate($(this), stock);
|
|
});
|
|
|
|
// 全选/反选
|
|
$(document).on('click', '.select-all-event', function()
|
|
{
|
|
if($(this).find('input').is(':checked'))
|
|
{
|
|
$(this).find('span.el-text').text(window['lang_select_reverse_name'] || '反选');
|
|
$('.am-table').find('input[type="checkbox"]').not(':disabled').uCheck('check');
|
|
} else {
|
|
$(this).find('span.el-text').text(window['lang_select_all_name'] || '全选');
|
|
$('.am-table').find('input[type="checkbox"]').not(':disabled').uCheck('uncheck');
|
|
}
|
|
|
|
// 计算选择的商品总数和总价
|
|
CartBaseTotal();
|
|
});
|
|
|
|
// 选择
|
|
$(document).on('click', '.am-table input[type="checkbox"]', function()
|
|
{
|
|
// 计算选择的商品总数和总价
|
|
CartBaseTotal();
|
|
});
|
|
|
|
// 导航固定
|
|
var $nav = $('.cart-nav');
|
|
var nav_top = $nav.length > 0 ? $nav.offset().top : 0;
|
|
function CartNavPop()
|
|
{
|
|
var scroll = $(document).scrollTop();
|
|
var height = $nav.innerHeight();
|
|
var location = scroll+$(window).height()-height;
|
|
var bottom = ($(window).width() < 641) ? height+'px' : '0';
|
|
if($(window).width() < 641)
|
|
{
|
|
location -= $('.mobile-navigation').innerHeight();
|
|
var bottom = height+'px';
|
|
} else {
|
|
var bottom = 0;
|
|
}
|
|
if(location < nav_top)
|
|
{
|
|
$nav.css({"position":"fixed", "bottom":bottom, "width":$('.cart-content').width()+"px", "z-index":1000}).addClass('am-box-shadow-top am-background-white');
|
|
$nav.find('.am-container').addClass('am-radius-bottom-right-0 am-radius-bottom-left-0 am-radius-bottom-left-0');
|
|
$('body').css({"padding-bottom":height+"px"});
|
|
} else {
|
|
$nav.css({"position":"relative", "bottom":0, "z-index":0, "width":"100%"}).removeClass('am-box-shadow-top am-background-white');
|
|
$nav.find('.am-container').removeClass('am-radius-bottom-right-0 am-radius-bottom-left-0');
|
|
$('body').css({"padding-bottom":"0"});
|
|
}
|
|
}
|
|
CartNavPop();
|
|
$(window).scroll(function()
|
|
{
|
|
CartNavPop();
|
|
});
|
|
|
|
// 浏览器窗口实时事件
|
|
$(window).resize(function()
|
|
{
|
|
CartNavPop();
|
|
});
|
|
|
|
// 结算事件
|
|
$(document).on('click', '.separate-submit', function()
|
|
{
|
|
// 计算选择的商品总数和总价
|
|
CartBaseTotal();
|
|
|
|
// 获取购物车id
|
|
var ids = $(this).parents('form').find('input[name="ids"]').val() || 0;
|
|
if(ids == 0)
|
|
{
|
|
Prompt(window['lang_goods_no_choice_tips'] || '请选择商品');
|
|
return false;
|
|
}
|
|
});
|
|
}); |