购物车流程

一、需求分析

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
}
})
},

完成图

微信小程序 购物车流程的更多相关文章

  1. 微信小程序开发流程

    2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线,一夜之间,小程序可谓家喻户晓,但通过接下来的几个月的观察,微信小程序并没有想象中的那么火爆.进入4月以来,微信小程序团队进行 ...

  2. 微信小程序购物车产品计价

    微信小程序购物车产品计价: 问题:当选中商品,价格累加时会出现无限循环小数 解答:在计算前先parseFloat(变量),再计算的最后使用(变量).toFixed(2)保留两位小数 例如: jiaCa ...

  3. thinkphp开发微信小程序后台流程

    thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...

  4. 微信小程序全选,微信小程序checkbox,微信小程序购物车

    微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组  1.标题titl ...

  5. 微信小程序登录流程及解析用户openid session_key,获取用户信息

    为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持.从2018年4月30日开始,小程序与小游戏的体验版.开发版调用 wx.getUserInfo 接口,将无 ...

  6. 微信小程序登录流程

    小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...

  7. 商业版微信小程序开发流程

    一.产品阶段 ①功能规划思维导图——产品经理了解清楚整个项目需求,产出清晰明确的功能需求说明. ②需求报价预算——产品经理确定好功能需求后,输出整个项目开发的报价方案. ③组建技术开发团队——初步确认 ...

  8. 微信小程序--登录流程梳理

    前言 微信小程序凡是需要记录用户信息都需要登录,但是也有几种不同的登录方式,但是在小程序部分的登录流程是一样的.之前就朦朦胧胧地用之前项目的逻辑改改直接用了,这个新项目要用就又结合官方文档重新梳理了下 ...

  9. 微信小程序注册流程

    响应公司号召,跟上时代潮流,接下来我将独自开发微信小程序,接下来我介绍下注册流程,后续会补上小程序开发心得. 注册流程 注册之前,需要使用一个邮箱,该邮箱作为登录小程序的账号,这个邮箱不能被微信开放平 ...

随机推荐

  1. z3学习档案

    Reference: 看雪-z3巧解逆向 知乎:Z3一把梭 z3 solver学习 使用z3约束求解器解决CTF中的题目 Playing with Z3,hacking the serial chec ...

  2. C# LINQ学习笔记二:LINQ标准查询操作概述

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5801249.html,记录一下学习过程以备后续查用. “标准查询运算符”是组成语言集成查询 (LINQ) 模式 ...

  3. 1、腾讯云搭建Hadoop3集群

    1主机名和IP配置 1.1主机名 1.首先使用root用户名和root密码分别登录三台服务器 2.分别在三台虚拟机上执行命令: hostnamectl set-hostname node1 hostn ...

  4. redis安装并设置开机启动

    1.下载并上传redis安装包至linux服务器目录:/usr/local/redis. 2.解压:tar -zxvf redis-5.0.7.tar.gz 3.编译安装:make && ...

  5. linux - mysql 异常:/usr/bin/which: no mysql in

    问题描述 运行:which mysql 报错:/usr/bin/which: no mysql in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local ...

  6. Pandownload---windows下几乎无敌的网盘下载神器

    近几天光顾着mac了,今天咱来聊聊Windows. 这个就不多说了,直接贴图. 网页版截图. 电脑版截图. 网页版2020.2.1的时候是失效的,别问我为什么不现在测试,用不着. 不用担心不知道密码, ...

  7. 回形数字矩阵(Java)

    将矩阵从里到外分为多层,每一层都是一个口字型数字序列,方向都是顺时针/逆时针,由此我们可以将问题分解为相同的子问题来解决 回形矩阵概述 ☃ 回形矩阵有n行n列 ☃ 数字按顺时针或者逆时针递增 **使用 ...

  8. ubuntu18.04 编译fortran出现 ‘没有f951这个文件’处理

    机器自带了gcc所以可以编译fortran文件, 使用时, gcc **.for –o ***.out 提示,没有找到f951. 然后去网上找解决方案,有的人说在其他地方找到了f951,然后把他复制到 ...

  9. Jmeter-文件目录

    Jmeter文件目录介绍 1.bin:可执行文件目录 (1)jmeter.bat:windows的启动文件 (2)jmeter.log:日志文件 (3)jmeter.sh:linux的启动文件 (4) ...

  10. CSS 自适应导航菜单

    文章目录 以前我写了一篇关于如何为自适应网页制作教程手机导航菜单,现在我又摸索出一种无需JS脚本的自适应导航菜单,它采用纯粹的语义化HTML5标签来完成.该菜单可以左对齐,居中或右对齐,也不像上一种方 ...