thinkphp6 购物车数量加减价格变化

 商城购物车

//加
$('.plus').click(function () {
   var current_number = $(this).prev().val();
   if (current_number == 10){
      return false;
   }else{
      var current_number = parseInt(current_number)+1;
      $(this).prev().val(current_number);
   }
   //修改小计
   var price = $(this).closest('ul').find('.price').text();
   var sum = price * parseInt(current_number);
   $(this).closest('ul').find('.sum').text(sum);
   var id = $(this).closest('ul').find('.row_check').val();
   //重新计算已选商品数量和金额
   change_total();
   //ajax
   $.ajax({
      url:'changeNumber',
      type:'post',
      data:{id:id,current_number:current_number},
      success:function(res){

      }
   })
})
//减
$('.mins').click(function () {
   var current_number = $(this).next().val();
   if (current_number == 1){
      return false;
   }else{
      var current_number = parseInt(current_number)-1;
      $(this).next().val(current_number);
   }
   //修改小计
   var price = $(this).closest('ul').find('.price').text();
   var sum = price * parseInt(current_number);
   $(this).closest('ul').find('.sum').text(sum);
   var id = $(this).closest('ul').find('.row_check').val();
   //重新计算已选商品数量和金额
   change_total();
   //ajax
   $.ajax({
      url:'changeNumber',
      type:'post',
      data:{id:id,current_number:current_number},
      success:function(res){

      }
   })
})
//失焦事件
$('.current_number').blur(function () {
   var current_number = $(this).val();
   if (current_number <= 1){
      current_number = 1;
      $(this).val(current_number);
   }else if (current_number >= 10){
      current_number = 10;
      $(this).val(current_number);
   }
   //修改小计
   var price = $(this).closest('ul').find('.price').text();
   var sum = price * parseInt(current_number);
   $(this).closest('ul').find('.sum').text(sum);
   var id = $(this).closest('ul').find('.row_check').val();
   //ajax
   $.ajax({
      url:'changeNumber',
      type:'post',
      data:{id:id,current_number:current_number},
      success:function(res){

      }
   })
})
//全选
$('.check_all').change(function(){
   //获取全选的选中状态 checked属性
   $('.row_check').prop('checked',$(this).prop('checked'));
   //重新计算已选商品数量和金额
   change_total();
   //修改选中状态到购物车数据中
   var data = {
      'id':'all',
      'status':$(this).prop('checked') ? 1 : 0
   };
   //ajax
   $.ajax({
      url:'changestatus',
      type:'post',
      data:data,
      success:function(res){
         if (res.code != 200){
            alert(res.msg);return;
         }
      }
   })
})
//单个选中状态
$('.row_check').click(function () {
   //判断 全选是否应该选中
   check_all();
   //重新计算已选商品数量和金额
   change_total();
   //修改选中状态到购物车数据中
   var data = {
      'id':$(this).val(),
      'status':$(this).prop('checked') ? 1 : 0
   };
   // ajax
   $.ajax({
      url:'changestatus',
      type:'post',
      data:data,
      success:function(res){
         if (res.code != 200){
            alert(res.msg);return;
         }
      }
   })
})
//页面刷新,直接判断 全选是否应该选中
function check_all(){
   //判断 选中的行数 和 总行数 是否相等
   var status = $('.row_check:checked').length == $('.row_check').length;
   //设置全选的选中状态 checked属性
   $('.check_all').prop('checked',status);
}
//页面加载调用
check_all();
//重新计算已选中的商品价格、数量
function change_total() {
   //获取到选中行 row_check选中的
   var total_number = 0;
   var total_price = 0;
   $('.row_check:checked').each(function (i,v) {
      total_number += parseInt($(v).closest('ul').find('.current_number').val());
      total_price += parseFloat($(v).closest('ul').find('.sum').html());
   });
   //将累加的价格和数量放到页面中
   $('#total_number').html(total_number);
   $('#total_price').html('¥' + total_price);
};
//页面加载调用
change_total();
//删除
$('.delete').click(function () {
   //获取id
   var id = $(this).closest('ul').find('.row_check').val();
   var that = $(this);
   $.ajax({
      url:'delcart',
      data:{id:id},
      type:'get',
      datatype:'json',
      success:function (res) {
         if (res.code == 200){
            $(that).closest('.cart-list').remove();
         }
      }
   })
})
//结算页面
$('.sum-btn').click(function () {
   //获取选中的商品对应的长度
   var checked_lenth = $('.row_check:checked').length;
   if (checked_lenth == 0){
      alert('请选择一件商品');
      return false;
   }
   location.href = 'getOrderInfo';
})

控制器

 /**
     * 修改商品选中状态
     * @param $data
     * @return bool
     */
    public static function xiustatus($data){
        //判断是否登录
        if (session('?user')){
          //全部修改
            if ($data['id'] == 0){
                \app\home\model\Cart::where('user_id',session('user.id'))->update(['is_selected' => $data['status']]);
            }else{
                \app\home\model\Cart::where('id',$data['id'])->update(['is_selected' => $data['status']]);
            }
            return true;
        }else{
            return false;
        }
    }

    /**
     * 修改商品的数量
     * @param $id
     * @param $current_number
     * @return bool
     */
    public static function changeNumber($id,$current_number){
        if (session('?user')){
            \app\home\model\Cart::where('id',$id)->update(['number'=>$current_number]);
            return true;
        }else{
            return false;
        }
    }

    /**
     * 删除购物车商品
     * @param $id
     * @return bool|void
     */
    public static function delcart($id){
        if (session('?user')){
            \app\home\model\Cart::where('id',$id)->delete();
            return true;
        }else{
            //未登录删除cookie
            $data = json_decode(cookie('cart'),true) ? : [];
            //$id 下标
            unset($data[$id]);
            //保存cookie
            cookie('cart',json_encode($data),86400*7);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值