<!-- 剩余可销售商品数量 大于 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'
})
}

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

小程序wepy购物车的逻辑的更多相关文章

  1. 微信小程序wepy开发循环wx:for需要注意

    微信小程序wepy开发循环wx:for需要注意 item index值必须在wx:for之后使用 <view wx:for="{{tablist}}" class=" ...

  2. 微信小程序 - 实现购物车结算

    示例源码下载:小程序-实现购物车结算

  3. 微信小程序:JS 交互逻辑

    微信小程序:JS 交互逻辑 一.JS 交互逻辑 一个服务仅仅只有界面展示是不够的,还需要和用户做交互:响应用户的点击.获取用户的位置等等.在小程序里边,我们就通过编写 JS 脚本文件来处理用户的操作. ...

  4. 微信小程序实战 购物车功能

    代码地址如下:http://www.demodashi.com/demo/12400.html 一.准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com/ ...

  5. 小程序--wepy省市区三级联动选择

    产品老哥对项目再一次进行关爱, 新增页面, 新增需求, 很完美........ 不多说, 记录一下新增东西中的省市区联动选择, (这里全国地区信息是在本地, 但不建议这么做, 因为js文件太大.. 建 ...

  6. 小程序wepy.js框架总结

    wepy.js借鉴了Vue的语法风格和功能特性,对官方提供的框架进行了封装,更贴近于MVVM架构模式,让开发者更加容易上手,增加开发效率.(脏数据处理--是否有标识.是否有响应) 前端开发的对组件化开 ...

  7. 微信小程序 + wepy快速开发

    wepy官网:https://tencent.github.io/wepy/document.html,想要了解全面最好去官网,以下只是指出项目里常用地方. 1.页面跳转 (1)//有返回跳转wepy ...

  8. 微信小程序之购物车功能

    前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法非常像,接下来就看看小程序可以怎样实现购物车功能. 需求 先来弄清楚购物车的需求. 单选.全选和取消, ...

  9. 提取微信小程序“头脑王者”业务逻辑

    产品经理今天让我整理微信小程序"头脑王者"的产品逻辑,花了一天时间在XMind写了写,整理后的内容如图,分享给大家希望大家可以多多点评,互相学习,不知道应该写什么,重要的内容都在图 ...

随机推荐

  1. Unity VS2017 调试外部DLL

    之前写的C++ DLL VS2012 都可以附加进程的方式调试Unity中的调用 这次用了一个C# DLL VS2017 在Unity 2018上无法附加进程的方式调试 经过一番折腾, 主要是两个问题 ...

  2. CSS关于选择器和继承的一些小问题:

    选择器的分组 对选择器进行分组,这样在同一组的选择器就可以分享相同的声明.使用逗号将需要分组的选择器分开 h1,h2,h3,h4,h5{ color:green; font-family:" ...

  3. sql强大的行转列功能(内置函数pivot及注意事项)

    语法: PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) ) ...

  4. oracle更改数据库字符集

    shutdown immediate; startup mount; alter system enable restricted session; alter system set job_queu ...

  5. CentOS 7.6最小化安装(系统盘和数据盘分离安装)

    CentOS 7.6最小化安装(系统盘和数据盘分离安装) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建虚拟机 鉴于大家使用的平台操作系统可能不尽相同,博主精力有限,仅演示 ...

  6. Python sorted 函数用法

    1.背景   在python中,通常需要使用排序函数.而对字典针对一个键值进行排序会经常使用到.记录sorted 函数的键值排序用法. 2.代码 data 一个list,list 中的元素由字典组成 ...

  7. Maven简易笔记

    Maven笔记 Maven笔记 Maven组成 安装配置 基本概念 Maven目录的典型结构 POM文件格式 GAV 依赖 依赖管理与父项目 关于父项目的一点主意事项 repository Maven ...

  8. egg.js 完整实例2后台管理系统

    项目地址 github.com/richard1015… 技术栈 Vue.js.iview.websocket.Amap 演示地址: 后台管理 schoolmgr.zhuzhida.vip 前台展示 ...

  9. TODO的作用及如何使用

    https://blog.csdn.net/jerry11112/article/details/82966142 文章标题:[C#]TODO的作用 可以方便后续找到要做的功能点.

  10. java加密算法-DES

    public class DESUtil { private static String strdefaultkey = "13456789abcd";//默认的key priva ...