<import src="../../templates/toast/toast.wxml" /> <view id="shopping-cart" class="{{(cartList.length==0 && !loading) ? '':'hidden'}}"> <view class="empty"> <image class="icon" src="data:image/png;base64,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" alt="购物车"></image> <text>购物车还空着,快去挑选商品吧</text> <view class="btn btn-default" ui-sref="home" catchtap='navigateTo'>随便逛逛</view> </view> </view> <scroll-view class="car-index {{(cartList.length>0 && !loading) ? '':'hidden'}}" scroll-y="true"> <view class="car"> <view class="cart {{(cartList.length>0 && !loading) ? '':'hidden'}}"> <view wx:for="{{cartList}}" wx:for-item="product" class="product"> <view class="checkbox clearfix add-btn"> <icon type="{{product.status ? 'success' : 'circle'}}" color="{{product.status ? 'red' : ''}}" size="20" bindtap="selectProduct" data-checked-status="{{checkedStatus}}" data-id="{{product.id}}"></icon> </view> <view class="img"> <image class="image" src="{{product.thumb_url}}" mode="scaleToFill"></image> </view> <view class="param"> <view class="title"> <text>{{product.goods_name}}</text> </view> <view class="type"> <text>{{product.goods_attr}}</text> </view> <view class="quantity"> <view class="btn-ad {{product.decr_class}}" bindtap="changeNumber" data-id="{{product.id}}" data-type="min">-</view> <view class="count">{{product.goods_number}}</view> <view class="btn-ad {{product.plus_class}}" bindtap="changeNumber" data-id="{{product.id}}" data-type="plus">+</view> </view> <view class="price"> <view class="real">¥ {{product.real_price}}</view> <view class="cost">¥ {{product.market_price}}</view> </view> <view class="del" bindtap="delProduct" data-id="{{product.id}}"> <image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtBAMAAADINP+pAAAAKlBMVEUAAACgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKApyNsCAAAADXRSTlMA7Fohd8KHlks1seQKRhs+AQAAAI1JREFUOMtjgAHmvXfv3r1twIAODC8KCgrKbkYX5rxbACS5MDTMvQam1sI1pIaCwV0HMO/URQg3gUH2LhhcgajiWQvhCjAcNgYDmLnMEO4BBtoDNww/LgZTskDMdBPolEtARigQs1yCi7MBmRzXgYy7o+Kj4iSJI9LVFcx0hQB0FBdEA7IQ8bV30QHQ0QA9wJXpSEY20AAAAABJRU5ErkJggg=="></image> </view> </view> </view> </view> <view class="statistics"> 共{{totalNumber}}件商品 <view class="sum"> 小计: <text>¥ {{totalPrice}}</text> </view> </view> </view> <view class="balance"> <view class="checkbox"> <icon type="{{checkedStatus ? 'success' : 'circle'}}" color="{{checkedStatus ? 'red' : ''}}" size="20" bindtap="selectProduct" data-id="0" data-checked-status="{{checkedStatus}}"></icon> <text>全选</text> </view> <button class="button" bindtap="toSettlement">结算({{buyNumber}})</button> <view class="price"> 合计: <view class="sum"> ¥ {{buyPrice}} </view> <view class="hint">不含运费</view> </view> </view> <template is="toast" data="{{...toast}}" /> </scroll-view> <loading hidden="{{!loading}}">正在加载中...</loading> |
.car-index { margin: 0; height: 100%; background-color: #f8f8f8; padding: 0; font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif; } .car{ width: 100%; list-style: none; background: #FFF; margin-top:0.3rem; padding: 0.4rem; margin-bottom: 48.75px; font-size: 0.6rem; box-sizing: border-box; display: block; float: left; } .product { position: relative; width: 100%; height: 5rem; border-bottom: 1px solid #EFEFEF; padding: 0.5rem 0; display: list-item; text-align: -webkit-match-parent; float: left; } .product .checkbox { position: relative; width: 1.9rem; height: 120rpx; float: left; margin: 40rpx 0rpx 0rpx 20rpx; display: inline-block; } .product .image{ width: 4.3rem; height: 4.3rem; border: 1px solid #D6D6D6; margin-left: 0.2rem; } .product .param{ position: relative; width: 11.3rem; height: 4.3rem; padding-left: 0.45rem; display: inline-block; list-style: none; background: #FFF; padding-bottom: 0; margin: 0; font-size: 0.8rem; } .product .param view { float: left; } .img { display: inline-block; } .param .title{ font-size: 0.6rem; width: 8.6rem; line-height: 0.65rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .param .type{ font-size: 0.6rem; line-height: 1rem; color: #A0A0A0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden; } .param .quantity{ position: absolute; bottom: 0; overflow: hidden; height: 1rem; border: 1px solid #D6D6D6; border-radius: 0.1rem; } .param .quantity .btn-ad{ width: 1.2rem; height: 100%; text-align: center; line-height: 1rem; color: #A0A0A0; display: inline-block; } .param .price { position: absolute; top: 0; right: 0; text-align: right; line-height: 0.65rem; padding-right: 0.4rem; } .param .price .real { float: none; } .param .price .cost { font-size: 0.65rem; text-decoration: line-through; color: #A0A0A0; float: none; } .param .del { position: absolute; bottom: 0.1rem; right: 0.4rem; } .param .del image { width: 0.8rem; height: 0.8rem; } .param .quantity .count { color: #353535; width: 1.8rem; border-right: 1px solid #D6D6D6; border-left: 1px solid #D6D6D6; height: 100%; float: left; text-align: center; line-height: 1rem; } .statistics { width: 100%; height: 1.75rem; line-height: 1.75rem; display: inline-block; padding: 0 0.4rem; font-size: 0.8rem; } .sum{ display: inline-block; float: right; margin-right: 1rem; color: red; } .balance { position: fixed; bottom: 1.875rpx; width: 100%; height: 120rpx; background: #FCFCFC; box-shadow: 1px 0 20px 1px #F0F0F0; padding: 0 28.125rpx; font-size: 28.125rpx; box-sizing:border-box; } .balance .checkbox { position: relative; margin: 40rpx 0rpx 0rpx 20rpx; display: inline-block; height: 2.7rem; width: 2.9rem; float: left; padding-top:0.2rem; } .balance .checkbox text { display: inline-block; float: right; padding-top: 3rpx; padding-right:1rpx; } .balance .button{ width: 3.9rem; height: 80rpx; line-height: 80rpx; float: right; text-align: center; margin-top: 0.45rem; padding: 0; border-radius: .25rem; background-color: #fc3151; color: white; font-size: .85rem; border: none; outline: none; } .balance .price{ float: right; padding: 0.45rem 0.6rem; text-align: right; font-size: 0.95rem; } .balance .hint { color: #A0A0A0; font-size: 0.55rem; text-align: right; margin-right: 1rem; } .param .quantity .disabled { color: #efefef; background-color: #efefef; } .hidden { display: none; } #shopping-cart { overflow: auto; padding-top: 16rpx; padding-bottom: 104rpx; width: 100%; height: 100%; box-sizing:border-box; border-bottom: 1rpx solid #ddd; } #shopping-cart .empty { position: absolute; top: 38.2%; left: 50%; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); text-align: center; } #shopping-cart .empty .icon { width: 160rpx; height: 160rpx; display: block; margin: auto; } #shopping-cart .empty text { display: block; margin: auto; font-size: 24rpx; line-height: 48rpx; color: #A0A0A0; padding: 36rpx 0; } #shopping-cart .empty view { width: 288rpx; height: 66rpx; line-height: 66rpx; margin: auto; font-size: 26rpx; border-radius: 8rpx; background-color: #FF2D4B; color: #FFF; text-align: center; } page { background-color: #f8f8f8; } |
var app = getApp(); import resource from '../../lib/resource'; Page({ data: { loading: true, cartList: [], totalNumber: 0, totalPrice: 0, checkedStatus: true, buyNumber: 0, buyPrice: 0, }, onShow() { const that = this; resource.fetchCartIndex().then(res => { var totalNumber = 0; var totalPrice = 0; var buyNumber = 0; var buyPrice = 0; res.data.forEach(item => { // 保留两位小数点 item.real_price = item.real_price.toFixed(2); item.market_price = item.market_price.toFixed(2); if (!item.status) { that.setData({ checkedStatus: false }); } else { buyNumber += item.goods_number; buyPrice += item.goods_number * item.real_price; } totalNumber += item.goods_number; totalPrice += item.goods_number * item.real_price; if (item.goods_number == item.stock_num) { item.plus_class = "disabled"; } else { item.plus_class = ""; } if (item.goods_number == 1) { item.decr_class = "disabled"; } else { item.decr_class = ""; } }) that.setData({ cartList: res.data, loading: false, totalNumber: totalNumber, totalPrice: totalPrice.toFixed(2), buyNumber: buyNumber, buyPrice: buyPrice.toFixed(2) }); }) }, // 选择商品 selectProduct(event) { var cartId = event.currentTarget.dataset.id; var checkedStatus = event.currentTarget.dataset.checkedStatus; var totalNumber = 0; var totalPrice = 0; var buyNumber = 0; var buyPrice = 0; var id = []; checkedStatus = checkedStatus === true; var changeStatus = true; this.data.cartList.forEach(item => { if (item.id == cartId || cartId == 0) { if (item.status != !checkedStatus) { id.push(item.id); } item.status = cartId == 0 ? !checkedStatus : !item.status; } if (!item.status) { changeStatus = false; } else { buyNumber += item.goods_number; buyPrice += item.goods_number * item.real_price; } totalNumber += item.goods_number; totalPrice += item.goods_number * item.real_price; }); resource.updCartStatus(id.join()).then(res => {}); changeStatus = cartId == 0 ? !checkedStatus : changeStatus; this.setData({ cartList: this.data.cartList, checkedStatus: changeStatus, totalNumber: totalNumber, totalPrice: totalPrice.toFixed(2), buyNumber: buyNumber, buyPrice: buyPrice.toFixed(2) }); }, // 改变商品数量 changeNumber(event) { var cartId = event.currentTarget.dataset.id; var optType = event.currentTarget.dataset.type; var totalNumber = 0; var totalPrice = 0; var buyNumber = 0; var buyPrice = 0; this.data.cartList.forEach(item => { if (item.id == cartId) { if (optType == 'plus') { if (item.stock_num == item.goods_number) { this.setData({ toast: { toastClass: 'yatoast', toastMessage: '该宝贝不能购买更多哦' } }); setTimeout(() => { this.setData({ toast: { toastClass: '', toastMessage: '' } }); }, 2000); } else { item.goods_number++; resource.updCartNumber(cartId, optType); } } else { if (item.goods_number <= 1) { this.setData({ toast: { toastClass: 'yatoast', toastMessage: '亲,不能再减少了哦' } }); setTimeout(() => { this.setData({ toast: { toastClass: '', toastMessage: '' } }); }, 2000); } else { item.goods_number--; resource.updCartNumber(cartId, optType); } } if (item.goods_number == item.stock_num) { item.plus_class = "disabled"; } else { item.plus_class = ""; } if (item.goods_number == 1) { item.decr_class = "disabled"; } else { item.decr_class = ""; } } if (!item.status) { } else { buyNumber += item.goods_number; buyPrice += item.goods_number * item.real_price; } totalNumber += item.goods_number; totalPrice += item.goods_number * item.real_price; }); this.setData({ cartList: this.data.cartList, totalNumber: totalNumber, totalPrice: totalPrice.toFixed(2), buyNumber: buyNumber, buyPrice: buyPrice.toFixed(2) }); }, // 去结算页面 toSettlement() { if(this.data.buyNumber == 0) { resource.showTips(this, '你还未勾选商品'); return; } wx.navigateTo({ url: '../settlement/settlement', }); }, // 去除购物车物品 delProduct(event) { wx.showModal({ content: '你确定在购物车中删除该商品', showCancel: true, success: (res) => { if(res.confirm == 0) { return; } var id = event.currentTarget.dataset.id; var cartList = this.data.cartList; var totalNumber = 0; var totalPrice = 0; var buyNumber = 0; var buyPrice = 0; var delKey = 0; cartList.forEach((item, key) => { if (item.id == id) { delKey = key; } else { if (!item.status) { } else { buyNumber += item.goods_number; buyPrice += item.goods_number * item.real_price; } totalNumber += item.goods_number; totalPrice += item.goods_number * item.real_price; } }); cartList.splice(delKey, 1); resource.delCartProduct(id).then(res => { console.log(res); if (res.statusCode == 200) { this.setData({ cartList: cartList, totalNumber: totalNumber, totalPrice: totalPrice.toFixed(2), buyNumber: buyNumber, buyPrice: buyPrice.toFixed(2) }); } }); } }); }, navigateTo() { wx.switchTab({ url: '../home/home' }); } }); |
模板简介:该模板名称为【微信小程序黑色顶部订单结算页面样式模板制作设计下载】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【小程序教程】栏目查找您需要的精美模板。