购物车优化

feat/task1-c-wallet
devil_gong 2018-10-11 18:29:03 +08:00
parent ea7d81b07c
commit e9b1a76cab
6 changed files with 84 additions and 58 deletions

View File

@ -43,8 +43,10 @@ class BuyController extends CommonController
{
if(IS_POST)
{
redirect(U('Home/Buy/Index', $_POST));
} else {
// 获取商品列表
$params = $_POST;
$params = $_GET;
$params['user'] = $this->user;
$ret = BuyService::BuyTypeGoodsList($params);
@ -75,9 +77,6 @@ class BuyController extends CommonController
$this->assign('msg', isset($ret['msg']) ? $ret['msg'] : L('common_param_error'));
$this->display('/Public/TipsError');
}
} else {
$this->assign('msg', L('common_unauthorized_access'));
$this->display('/Public/TipsError');
}
}

View File

@ -161,7 +161,8 @@ class CommonController extends Controller
$this->assign('goods_category_list', GoodsService::GoodsCategory());
// 购物车商品总数
$this->assign('common_cart_total', BuyService::CartTotal(['user'=>$this->user]));
$common_cart_total = BuyService::CartTotal(['user'=>$this->user]);
$this->assign('common_cart_total', ($common_cart_total > 99) ? '99+' : $common_cart_total);
// 当前控制器名称
$this->assign('controller_name', CONTROLLER_NAME);

View File

@ -21,7 +21,7 @@
<div class="control">
<h3>确认收货地址</h3>
<notempty name="user_address_list">
<button class="am-btn am-btn-danger am-btn-xs address-submit-save" type="button" data-url="{{:U('Home/UserAddress/SaveInfo')}}">使用新地址</button>
<button class="am-btn am-btn-primary am-btn-xs address-submit-save" type="button" data-url="{{:U('Home/UserAddress/SaveInfo')}}">使用新地址</button>
</notempty>
</div>
<notempty name="user_address_list">

View File

@ -7,6 +7,9 @@
</li>
<li <if condition="strtolower(CONTROLLER_NAME.ACTION_NAME) eq 'cartindex'">class="active"</if>>
<a <if condition="empty($user)">href="javascript:;" class="login-event"<else /> href="{{:U('Home/Cart/Index')}}"</if>><i class="am-icon-shopping-basket"></i>购物车</a>
<notempty name="common_cart_total">
<span class="am-badge am-badge-danger am-round top-nav-cart-total hot-icon">{{$common_cart_total}}</span>
</notempty>
</li>
<li <if condition="strtolower(CONTROLLER_NAME.ACTION_NAME) eq 'userindex'">class="active"</if>>
<a <if condition="empty($user)">href="javascript:;" class="login-event"<else /> href="{{:U('Home/User/Index')}}"</if>><i class="am-icon-user"></i>我的</a>

View File

@ -108,10 +108,11 @@ color: #F5F5F2;font-size: 14px;cursor:pointer;border-radius:0px 0px ;}
.mobile-navigation{position: fixed;bottom:0px ;width: 100%;z-index: 999;background:#fff ;}
.mobile-navigation li{width: 25%;padding:2px ;background:#fff ;border-top:1px solid #f5f5f5 ;float: left;text-align: center;font-size: 12px;}
.mobile-navigation li{width: 25%;padding:2px ;background:#fff ;border-top:1px solid #f5f5f5 ;float: left;text-align: center;font-size: 12px; position: relative; }
.mobile-navigation li a { text-decoration: none; }
.mobile-navigation li i{display: block;font-size: 16px;}
.mobile-navigation li i{display: block;font-size: 16px; z-index: 1; }
.mobile-navigation li.active a{color:#d2364c ;}
.hot-icon { position: absolute; top: 1%; left: 53%; z-index: 2; border: 1px solid #fff; }
@media only screen and (max-width: 640px) {

View File

@ -22,63 +22,85 @@ $(function()
$('.cart-nav input[name="ids"]').val(ids.toString() || 0);
}
/**
* 购物车数量更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-10-11
* @desc description
* @param {[object]} self [氮气罐对象]
* @param {[int]} stock [数量]
*/
function CardNumberUpdate(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;
}
self.parents('.stock-tag').find('input').val(stock);
var temp_price = FomatFloat(stock*price, 2);
self.parents('tr').find('.total-price-content').text('¥'+temp_price);
// 开启进度条
$.AMUI.progress.start();
// ajax请求
$.ajax({
url: self.parents('.stock-tag').data('ajax-url'),
type: 'post',
dataType: "json",
timeout: 10000,
data: {"id": id, "goods_id": goods_id, "stock": stock},
success: function(result)
{
$.AMUI.progress.done();
if(result.code == 0)
{
PromptCenter(result.msg, 'success');
// 计算选择的商品总数和总价
cart_base_total();
} else {
PromptCenter(result.msg);
}
},
error: function(xhr, type)
{
$.AMUI.progress.done();
PromptCenter('网络异常错误');
}
});
}
// 购物车数量操作
$('.stock-tag .stock-submit').on('click', function()
{
var id = parseInt($(this).parents('tr').data('id'));
var goods_id = parseInt($(this).parents('tr').data('goods-id'));
var inventory = parseInt($(this).parent().data('inventory'));
var price = parseFloat($(this).parent().data('price'));
var stock = parseInt($(this).parent().find('input').val());
var stock = parseInt($(this).parents('.stock-tag').find('input').val());
var type = $(this).data('type');
var temp_stock = (type == 'add') ? stock+1 : stock-1;
if(temp_stock > inventory)
CardNumberUpdate($(this), temp_stock);
});
$('.stock-tag input[type="number"]').on('blur', function()
{
var stock = $(this).val() || null;
if(stock == null)
{
temp_stock = inventory;
}
if(temp_stock <= 0)
{
temp_stock = 1;
}
$(this).parent().find('input').val(temp_stock);
var temp_price = FomatFloat(temp_stock*price, 2);
$(this).parents('tr').find('.total-price-content').text('¥'+temp_price);
// 数量不一样则更新
if(stock != temp_stock)
{
// 开启进度条
$.AMUI.progress.start();
// ajax请求
$.ajax({
url: $(this).parent().data('ajax-url'),
type: 'post',
dataType: "json",
timeout: 10000,
data: {"id": id, "goods_id": goods_id, "stock": temp_stock},
success: function(result)
{
$.AMUI.progress.done();
if(result.code == 0)
{
PromptCenter(result.msg, 'success');
// 计算选择的商品总数和总价
cart_base_total();
} else {
PromptCenter(result.msg);
}
},
error: function(xhr, type)
{
$.AMUI.progress.done();
PromptCenter('网络异常错误');
}
});
stock = 1;
}
$(this).val(stock);
CardNumberUpdate($(this), stock);
});
// 全选/反选