微信小程序简单实现购物车功能

avatar
作者
筋斗云
阅读量:0

微信小程序简单实现购物车结算和购物车列表展示功能

实现在微信小程序中对每一个购物车界面的商品订单,进行勾选结算和取消结算的功能,相关界面截图如下:
购物车

具体实现示例代码为:
1、js代码:

Page({    /**    * 页面的初始数据    */   data: {     checked: false,     checkAll: false,     dataList: [{         id: '000',         img: 'https://img-blog.csdnimg.cn/img_convert/0e449547f8e5354646f76af0d1b4800a.png',         content: '生活百般滋味,编写不易,关注博主,分享更多内容呦',         price: 3289,         showPrice: '32.89',         number: 1       },       {         id: '111',         img: 'https://img2.baidu.com/it/u=2681955314,221996905&fm=253&fmt=auto&app=138&f=JPEG?w=450&h=300',         content: '努力学习,天天向上,进我主也查看更多内容',         price: 2456,         showPrice: '24.56',         number: 2       }, {         id: '222',         img: 'https://img-blog.csdnimg.cn/img_convert/0e449547f8e5354646f76af0d1b4800a.png',         content: '关注博主,分享更多内容,欢迎批评指导',         price: 3289,         showPrice: '89.89',         number: 5       },     ],     totalMoney: '0.00',     selectDatas: []   },   // 查看详情   detailClick(e) {     let data = e.currentTarget.dataset.item;     wx.showToast({       title: '点击了查看详情',       icon: 'none'     })     console.log('详情数据:', data)   },   // 单选   checkboxChange(e) {     let money = 0,       str = [];     let attr = e.detail.value;     let list = this.data.dataList;     for (let i = 0; i < list.length; i++) {       for (let k = 0; k < attr.length; k++) {         if (list[i].id === attr[k]) {           money += list[i].price * list[i].number;           str.push(list[i]);         }       }     }     this.setData({       selectDatas: str,       totalMoney: (money / 100).toFixed(2),       checkAll: (list.length == attr.length && list.length > 0) ? true : false     })   },   // 全选   checkboxChangeAll(e) {     let money = 0,       str = [];     let val = e.detail.value;     let list = this.data.dataList;     if (val.length > 0) {       for (let i = 0; i < list.length; i++) {         money += list[i].price * list[i].number;         str.push(list[i]);       }       this.setData({         checked: true,         selectDatas: str,         totalMoney: (money / 100).toFixed(2)       })     } else {       this.setData({         checked: false,         selectDatas: [],         totalMoney: '0.00'       })     }   },   // 结算   totalClick() {     let list = this.data.selectDatas;     if (list.length < 1) {       wx.showToast({         title: '无结算订单',         icon: 'error'       })       return false;     }     wx.showModal({       title: '提示',       content: '确定结算当前订单吗?',       complete: (res) => {         if (res.confirm) {           wx.showToast({             title: '结算完成',           })         }       }     })   }, }) 

2、wxml代码:

<view class="bg-color"></view> <view class="car-box">   <checkbox-group bindchange="checkboxChange">     <view class="row-data" wx:for="{{dataList}}" wx:for-index="index" wx:key="item">       <view class="row-btn">         <checkbox value="{{item.id}}" checked="{{checked}}" />       </view>       <view class="row-list" bind:tap="detailClick" data-item="{{item}}">         <view class="row-img">           <image src="{{item.img}}" mode="aspectFill" />         </view>         <view class="row-info">           <view class="row-text">{{item.content}}</view>           <view class="row-price">             <view>               <text class="row-icon"></text>               <text class="row-money">{{item.showPrice}}</text>             </view>             <view>               <text class="btn">x{{item.number}}</text>             </view>           </view>         </view>       </view>     </view>   </checkbox-group> </view> <!-- 结算 --> <view class="footer-box">   <view>     <checkbox-group bindchange="checkboxChangeAll">       <label class="level">         <checkbox value="all" checked="{{checkAll}}" />全选       </label>     </checkbox-group>   </view>   <view class="level">     <view>       <text>合计:</text>       <text class="total-btn row-icon"></text>       <text class="total-btn row-money">{{totalMoney}}</text>     </view>     <view class="total-end" bind:tap="totalClick">结 算</view>   </view> </view> 

3、wxss代码:

page {   font-size: 32rpx;   background-color: #f1f1f1; }  .bg-color {   background-color: #008B8B;   height: 200rpx;   width: 100%; }  .car-box {   min-height: 300rpx;   border-radius: 20rpx;   background-color: white;   margin: -190rpx 20rpx 20rpx 20rpx;   padding: 20rpx 10rpx; }  .row-data {   display: flex;   flex-direction: row;   align-items: center;   margin-top: 20rpx; }  .row-btn {   width: 10%;   text-align: center; }  .row-list {   width: 90%;   display: flex;   flex-direction: row; }  .row-img {   width: 30%;   background-color: #f1f1f1; }  .row-info {   width: 70%;   display: flex;   flex-direction: column;   justify-content: space-between;   margin-left: 20rpx; }  .row-img image {   width: 100%;   height: 200rpx; }  .row-text {   display: -webkit-box;   -webkit-box-orient: vertical;   -webkit-line-clamp: 2;   text-overflow: ellipsis;   overflow: hidden;   font-size: 30rpx; }  .row-price {   display: flex;   flex-direction: row;   justify-content: space-between; }  .row-price view:first-child {   color: #FA5422; }  .row-icon {   font-size: 26rpx; }  .row-money {   font-weight: bold; }  .btn {   padding: 5rpx 20rpx;   font-size: 28rpx;   color: gray; }  checkbox {   zoom: .8; }  .footer-box {   position: fixed;   bottom: 0;   left: 0;   right: 0;   z-index: 999;   height: 100rpx;   display: flex;   flex-direction: row;   align-items: center;   justify-content: space-between;   background-color: white;   padding: 0 20rpx; }  .level {   display: flex;   flex-direction: row;   align-items: center; }  .total-btn {   color: #FA5422; }  .total-end {   background-color: #008B8B;   margin-left: 20rpx;   padding: 15rpx 50rpx;   border-radius: 50rpx;   font-size: 30rpx;   color: white; } 

本示例代码较为简单,适合初学的友友们借鉴,编写不易,关注博主,分享更多实用好用示例代码给大家,谢谢大家的支持和指导。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!