• 小程序wepy购物车的逻辑


     <!-- 剩余可销售商品数量 大于 0,且购买未达上限-->
                <view wx:if="{{(detaildata.boughtNum < detaildata.buy_limit) && detaildata.stock_num > 0}}">
                    <button class="nav-detail add-car" open-type="getUserInfo"  bindgetuserinfo="addcar" plain="true">加入购物车</button>
                    <button open-type="getUserInfo" class="nav-detail go-buy" bindgetuserinfo="toBuy" plain="true">马上购买</button>
                </view>
                <!-- 达到购买上限 -->
                <view  wx:if="{{detaildata.boughtNum >= detaildata.buy_limit && detaildata.stock_num > 0}}" class="inline-block maincolor achievelimit">本商品已达到个人购买上限 逛逛其他的吧</view>
                <!-- 已抢光了 -->
                <view wx:if="{{detaildata.stock_num == 0}}" class="inline-block maincolor achievelimit" style="line-height:60rpx;text-align:center;">宝贝已抢光了</view>
    


    
            // 加入购物车
            async addcar(){
                var self = this;
                let result = await api.shoppingCardList({}).then(res=>res)
                if(result.data.code == 200){
                    self.carlist = result.data.data.onsale
                    self.carlistnum = result.data.data.onsale.length > 0?String(result.data.data.onsale.length):0
                    self.$apply();
                    if(self.carlist.length > 0){  //当购物车列表有数据,判断购物车是否有该商品
                        for(var i=0;i < self.carlist.length;i++){
                            if(self.carlist[i].prdId == self.prdId){ //当购物车已有该商品
                                if(parseInt(self.carlist[i].buy_num) >= self.detaildata.buy_limit_remain || parseInt(self.carlist[i].buy_num) >= self.detaildata.buy_limit){ 
                                    //判断购物车该商品的购买量是否已达上限
                                    self.$parent.toasttips('你已达到每人限购的数量', 'none')
                                    return;
                                }
                            }
                        }
                    }
                    // 没达到上限,可继续购买
                    self.addincar();
                                    
                }else if(result.data.code == 204){
                    // 无记录
                    self.carlist = []
                    self.$apply();
                    self.addincar();
                }else if(result.data.code == 401){
                    // 存储触发登录的来源
                    wx.setStorageSync('prodetailsource','addbuy')
                    // 未登录
                    self.$broadcast('userLogin')
                }
            }
    
     // 添加购物车
            addincar(){
                var self = this;
                const add2ShoppingCard = api.add2ShoppingCard(self.prdId,1);
    
                    add2ShoppingCard.then((result) => {
                        
                        if(result.data.code == 200){
                            this.$parent.globalData.is_shoppingCard_update = true;
    
                            self.$parent.toasttips('添加成功,在购物车等亲', 'none')
                            self.getcarlist()
                            
                        }else if(result.data.code == 401){
                            // 存储触发登录的来源
                            wx.setStorageSync('prodetailsource','addbuy')
                            // 未登录
                            self.$broadcast('userLogin')
                        }
    
                    }).catch((err) => {
                          
                    });
            }
    

    封装好的api

    //获取购物车商品列表
    const shoppingCardList = params => {
        return requestData(`${baseBuyUrl}/cart/list`)
    }
    
    //购物车add
    const add2ShoppingCard = (prdId, num) => {
        return requestData(`${baseBuyUrl}/cart/add`,{
            data:{
                prdId: prdId,
                num: num
            },
            header: {
                'content-type': 'application/x-www-form-urlencoded',
                'skey':wx.getStorageSync('getstoreskey')
            },
            method:'POST'
        })
    }
    

    主要是在点击购物车的时候,先获取购物车所有的数据,如果没有再去调添加到购物车的接口.

  • 相关阅读:
    Vmware 虚拟硬盘 合并多个分割文件
    一步步带你做vue后台管理框架(三)——登录功能
    一步步带你做vue后台管理框架(二)——上手使用
    webpack教程(六)——分离组件代码
    webpack教程(五)——图片的加载
    webpack教程(四)——css的加载
    input输入框自动填充黄色背景解决方案
    webpack教程(三)——热刷新
    webpack教程(二)——webpack.config.js文件
    webpack教程(一)——初体验
  • 原文地址:https://www.cnblogs.com/antyhouse/p/9517866.html
Copyright © 2020-2023  润新知