微信小程序的购物车页面的加 减 合计 全选 单选

css

.Shop{
  width:100%;
  overflow: hidden;
}
.Shopleft{
  width:120%;
  display: flex;
  border-bottom: 1rpx solid darkgray;
  position: relative;
}
.ShopCar{
  width:100%;
  height: 180rpx;
  padding: 0 2%;
  display: flex;
  align-items: center;
}
.Shopimage{
  width:130rpx;
  height:130rpx;
  margin:0 2%; 
}
.name{
  width:70%;
  height: 120rpx;
  margin-left:2%;
  display: flex;
  flex-direction: column;
}
.txtname{
  font-size:30rpx;
  font-weight: bold;
}
.value{
  display:flex;
}
.textcolor{
  font-size:25rpx;
  display:flex;
  float: left;
}
.name>text:nth-of-type(3){
  width:100%;
  height: 70rpx;
  display: flex;
  justify-content: space-between;
  align-items:center;
  margin-top:1%; 
  border: 1px solid;
}
.price{
  color: red;
  font-size: 32rpx;
  float: left;
  font-weight: bold;
}
.addCount{
  width: 25%;
  height:40rpx;
  float: right;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border: 1px solid;
  margin-right:7%; 
}
.unfor{
  width: 38rpx;
  height: 40rpx;
  font-size: 32rpx;
  border-right: 1px solid;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
.del {
 background-color: orangered;
 width: 20%;
 height: 180rpx;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 color: #fff;
}
.bottom{
  width:98%;
  height: 100rpx;
  padding-left:3%; 
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: fixed;
  bottom: 0rpx;
  left: 0rpx;
}
.Checked{
  font-size:32rpx;
  margin-right:100rpx;
}
.bottomright{
  width:60%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 100rpx;
}
.dan{
  width:200rpx;
  height: 100rpx;
  background: red;
  color: white;
  font-size: 40rpx;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

html

<view class='Shop'>
   <view class='Shopleft' wx:for='{{Cart}}' wx:key="index" data-index='{{index}}' wx:for-index='index'>
     <view  class='ShopCar'>
        <checkbox-group data-index='{{index}}'  bindtap='SingChecked'>
           <checkbox  checked="{{!item.checked}}" />
        </checkbox-group>
        <image src='{{item.src}}' class='Shopimage'/>  
         <view class='name'>
            <text class='txtname'>{{item.name}}</text> 
            <text class='value'>
              <text wx:for='{{item.value}}' wx:key="index" class='textcolor'>{{item}}</text>
            </text>
            <view>
               <view class='price'>¥{{item.price}}</view>
               <view class='addCount'>
                  <text class='unfor' bindtap='can' data-index='{{index}}'>-</text>
                  <text class='unfor'>{{item.count}}</text>
                  <text class='unfor' bindtap='add' data-index='{{index}}'>+</text>
               </view>
            </view>
        </view>  
     </view>
     <view class="del" catchtap="del">删除</view>
   </view>
   <view class='bottom'>
      <checkbox-group data-index='{{index}}' bindtap='Checked'>
        <checkbox  checked="{{!selectAll}}"/>全选
      </checkbox-group>
       <view class='bottomright'>
          <text class='price'>合计:¥{{total}}</text>
          <text class='dan'>下单</text>
       </view>
   </view>
</view>

js

     Page({

  /**
   * 页面的初始数据
   */
  data: {
    selectAll:false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.getStorage({
      key: 'CartData',
      success: (res) => {
                // 合计
        var sum = 0
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].checked == -false) {
            sum += res.data[i].count * res.data[i].price
          }
        }
        this.setData({
          Cart: res.data,
          total: sum.toFixed(2)
        })
        // 单选
        let Num = 0;
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].checked === false) {
            Num++;
          }
          if (res.data[i].checked === true) {
            this.setData({
              selectAll: true
            })
          }
          if (Num == res.data.length) {
            this.setData({
              selectAll: false
            })
          }
        }
        wx: wx.setStorage({
          key: 'CartData',
          data: res.data,
        })
      }
    })
  },
  // 全选
  Checked:function(e){
     wx.getStorage({
       key: 'CartData',
       success: (res) => {
         let selectAll = this.data.selectAll
         selectAll = !selectAll
         for (let i = 0; i < res.data.length; i++) {
           res.data[i].checked = selectAll;            // 改变所有商品状态
         }
        //  合计
         var sum = 0
         for (var i = 0; i < res.data.length; i++) {
           if (res.data[i].checked == -false) {
             sum += res.data[i].count * res.data[i].price
           }
         }
         this.setData({
           selectAll: selectAll,
           Cart: res.data,
           total: sum.toFixed(2)
         })
         wx: wx.setStorage({
           key: 'CartData',
           data: res.data,
         })
       }
     })
    
  },
  // 单选
  SingChecked:function(e){
    wx.getStorage({
      key: 'CartData',
      success: (res) => {
        let index = e.currentTarget.dataset.index;
        res.data[index].checked = !res.data[index].checked

        let Num = 0;
        for (var i = 0; i < res.data.length;i++){
           if(res.data[i].checked===false){
             Num++;
           }
           if (res.data[i].checked === true) {
             this.setData({
               selectAll: true
             })
           }
           if (Num == res.data.length){
             this.setData({
               selectAll:false
             })
           }
        }
        // 合计
        var sum = 0
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].checked == false) {
            sum += res.data[i].count * res.data[i].price
          }
        }
        //更新数据
        this.setData({
          total: sum.toFixed(2)
        })

       wx.setStorage({
          key: 'CartData',
          data: res.data,
        })
      }
    })
    //
  },
  // 加法
  add: function (e) {
    wx:wx.getStorage({
      key: 'CartData',
      success: (res)=> {
        let index = e.currentTarget.dataset.index
        res.data[index].count++
        // 合计
        var sum = 0
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].checked == -false) {
            sum += res.data[i].count * res.data[i].price
          }
        }
        //更新数据
        this.setData({
          total: sum.toFixed(2),
          Cart: res.data
        })
        wx: wx.setStorage({
          key: 'CartData',
          data: res.data,
        })
      }
    })
  },
  // 减法  
  can: function (e) {
    wx: wx.getStorage({
      key: 'CartData',
      success: (res) => {
        let index = e.currentTarget.dataset.index
        res.data[index].count--
        if(res.data[index].count<=1){
          res.data[index].count=1
        }
        // 合计
        var sum = 0
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].checked == -false) {
            sum += res.data[i].count * res.data[i].price
          }
        }
        this.setData({
          total: sum.toFixed(2),
          Cart: res.data,
        })
        wx: wx.setStorage({
          key: 'CartData',
          data: res.data,
        })
       
      }
    })
  },
  // 合计
  getsumTotal: function () {
    wx: wx.getStorage({
      key: 'CartData',
      success: (res) => {
        var sum = 0
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].checked==-false) {
            sum += res.data[i].count * res.data[i].price
          }
        }
        //更新数据
        this.setData({
          total: sum.toFixed(2)
        })
        wx: wx.setStorage({
          key: 'CartData',
          data: res.data,
        })

      }
    })
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    wx.getStorage({
      key: 'CartData',
      success: (res) => {
        this.setData({
          Cart: res.data
        })
      }
    })
  },
  // 下单
  order:function(e){
    wx.getStorage({
      key: 'CartData',
      success: (res) => {
        for(var i=0;i<res.data.length;i++){
        if(res.data[i].checked===false) {
              wx.navigateTo({
                url: '../order/order',
              })
            }else{
              wx.showToast({
                title: '请选择商品',
                icon: 'none',
                mask: true
              })
            }
        }
        this.setData({
          Cart: res.data
        })
      }
    })
  }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容