微信小程序 购物车流程
购物车流程
一、需求分析
a:全选,单选,根据选中的计算数目和总价
b:单个商品加减
c:删除一个商品
wxml 布局
<view>
<view v-if="flag">
购物车空空如也请<navigator open-type="switchTab" url="/pages/home/home">选购 </navigator> </view>
<view v-else> <view class="container">
<checkbox-group @change="selectedall">
<checkbox value="cb" :checked="isAllchecked" />
</checkbox-group>
<view class="cartitem" v-for="(item,index) of cartlist" :key="index">
<checkbox-group @change="selected(item)">
<checkbox value="cb" :checked="item.flag" />
</checkbox-group> <image class="img" :src="item.proimg" mode=""></image>
<view class="jieshao">
<view class="proname">
{{item.proname}}
</view>
<view class="proprice">
¥{{item.price}}
</view>
<button size="mini"ass="mini-btn" @click="add(item)" > + </button>
{{item.num}}
<button size="mini" class="mini-btn" @click="reduce(item)" > - </button>
<button class="mini-btn del" type="warn" size="mini" @click="del(item,index)">删除</button>
</view> </view>
</view>
</view>
<view> 总数:{{totalNum}}</view>
<view> 总价:{{totalPrice}}</view>
</view>
计算总价
//总价格
totalPrice() {
let totalPrice =0
this.cartlist.map(item=>{
if(item.flag){
totalPrice+=item.num*item.price
}else{
totalPrice+=0
} })
return totalPrice
}
选择事件
点击时选中,再点击又变成没选中状态。在赋值列表数据之前 给每一项添加一个flag字段来控制选中和未选中状态


选择事件
// 单个选中
selected(item){
console.log("test",item)
item.flag = !item.flag
console.log(this.cartlist)
//如果某一项没被选中 那么全选不选中
//如果单独某一先被选中了 检测其他是否选中 如果都选中 全选选中
if(!item.flag){
this.isAllchecked=false
}else{
//检测其余项是否被选中
const test =this.cartlist.every(item=>{
return item.flag===true
})
if(test){
this.isAllchecked=true
}else{
this.isAllchecked=false
}
}
全选事件
全选就是根据全选状态 isAllchecked 去改变每个商品的 selected
// 全选
selectedall() {
this.isAllchecked=!this.isAllchecked
console.log(this.isAllchecked)
//为真 修改数据每一项的值都为真
if(this.isAllchecked){
this.cartlist.map(item=>{
item.flag = true
})
}else{
this.cartlist.map(item=>{
item.flag=false
})
}
},
增减数量
// 减少
reduce(item){
let num =item.num
//如果当前个数为1 不操作 如果大于1 减一草错
if(num> 1){
num-=1
}else{
num = 1
}
let userid =uni.getStorageSync("userid")
let token =uni.getStorageSync("token")
request({
url:"/cart/update",
data:{
token,
cartid:item.carrtid,
num
} }).then(res=>{
if(res.data.code==="10019"){
toast({title:"请先登录"})
uni.navigateTo({
url:"/pages/login/login"
})
}else{
toast({title:"修改数量成功"})
if(num>1){
item.num-=1 //更改数量
}else {
item.num=0
} }
}) }, /* 增加 */
add(item){ let num =item.num
//如果当前个数为1 不操作 如果大于1 减一草错
if(num> 1){
num+=1
}else{
num = 1
}
let userid =uni.getStorageSync("userid")
let token =uni.getStorageSync("token")
request({
url:"/cart/update",
data:{
token,
cartid:item.carrtid,
num
} }).then(res=>{
if(res.data.code==="10019"){
toast({title:"请先登录"})
uni.navigateTo({
url:"/pages/login/login"
})
}else{
toast({title:"修改数量成功"})
item.num+=1 //更改数量
}
}) },
删除事件
// 删除
del(item,index){
let token=uni.getStorageSync("token")
console.log(token)
console.log(item.cartid)
request({
url:"/cart/delete",
data:{
token,
cartid:item.cartid
}
}).then(res=>{
console.log(res)
if(res.data.code === "10019"){
uni.navigateTo({
url:"/pages/login/login"
})
toast({title:"请先登录"})
}else{
toast({title:"删除数据成功"})
this.cartlist.splice(index,1)//删除当前的
//全部数据删除后
this.cartlist.length===0 ? this.flag=true : this.flag=false
}
})
},
完成图

微信小程序 购物车流程的更多相关文章
- 微信小程序开发流程
2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线,一夜之间,小程序可谓家喻户晓,但通过接下来的几个月的观察,微信小程序并没有想象中的那么火爆.进入4月以来,微信小程序团队进行 ...
- 微信小程序购物车产品计价
微信小程序购物车产品计价: 问题:当选中商品,价格累加时会出现无限循环小数 解答:在计算前先parseFloat(变量),再计算的最后使用(变量).toFixed(2)保留两位小数 例如: jiaCa ...
- thinkphp开发微信小程序后台流程
thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...
- 微信小程序全选,微信小程序checkbox,微信小程序购物车
微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组 1.标题titl ...
- 微信小程序登录流程及解析用户openid session_key,获取用户信息
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持.从2018年4月30日开始,小程序与小游戏的体验版.开发版调用 wx.getUserInfo 接口,将无 ...
- 微信小程序登录流程
小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...
- 商业版微信小程序开发流程
一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...
- 微信小程序--登录流程梳理
前言 微信小程序凡是需要记录用户信息都需要登录,但是也有几种不同的登录方式,但是在小程序部分的登录流程是一样的.之前就朦朦胧胧地用之前项目的逻辑改改直接用了,这个新项目要用就又结合官方文档重新梳理了下 ...
- 微信小程序注册流程
响应公司号召,跟上时代潮流,接下来我将独自开发微信小程序,接下来我介绍下注册流程,后续会补上小程序开发心得. 注册流程 注册之前,需要使用一个邮箱,该邮箱作为登录小程序的账号,这个邮箱不能被微信开放平 ...
随机推荐
- RocketMQ解决幂等性问题
一.造成重复消费的原因 在于回馈机制.正常情况下,消费者在消费消息时候,消费完毕后,会发送一个ACK确认信息给消息队列(broker),消息队列(broker)就知道该消息被消费了,就会将该消息从消息 ...
- CQOI跳舞(网络流+二分答案)
题面见 https://www.luogu.org/problemnew/show/P3153 题意简述:有n个男生,n个女生,每一首歌时两位男女配对,然后同一对男女只能跳一场,一个人只会与不喜欢的人 ...
- Linux shell unzip和tar 批量解压文件
#!/bin/sh UNTAR="tar -xvf " #unzip all zip files function unzip_all_file() { for i in *.zi ...
- python3练习100题——056
题目:画图,学用circle画圆形. 可以用turtle.circle画图. import turtle turtle.setup(0.6,0.6) turtle.pensize(3) turtle. ...
- 内置中间件CommonMiddleware
django.middleware.common.CommonMiddleware:通用的中间件 (1)如果网站在设计的时候,url带有"/",而用户在访问的时候没有加上" ...
- 文件分配表(FAT)及其结构
原链接:https://blog.csdn.net/qianjintianguo/article/details/712590?utm_source=blogxgwz6 文件分配表(FAT)是文件管理 ...
- 洛谷P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...
- Android_ViewPager+Fragment实现页面滑动和底部导航栏
1.Xml中底部导航栏由一个RadioGroup组成,其上是ViewPager. <?xml version="1.0" encoding="utf-8" ...
- 机器学习作业(五)机器学习算法的选择与优化——Matlab实现
题目下载[传送门] 第1步:读取数据文件,并可视化: % Load from ex5data1: % You will have X, y, Xval, yval, Xtest, ytest in y ...
- [Arc083D/At3535] Restoring Road Network - 最短路,结论
[Arc083D/At3535] 有 \(N\) 个城市,城市与城市之间用长度为整数的无向道路连接. 现有一考古学家找到了一张 \(N×N\) 的表 \(A\) ,这张表代表了这 \(N\) 座城市两 ...