<template> <view> <view class="cartList" :class="cartData.iScart?'on':''"> <view class="title acea-row row-between-wrapper"> <view class="name">{{$t(`已选商品`)}}</view> <view class="del acea-row row-middle" @click="subDel"><view class="iconfont icon-shanchu1"></view>{{$t(`清空`)}}</view> </view> <view class="list"> <view class="item acea-row row-between-wrapper" v-for="(item,index) in cartData.cartList" :key="index"> <view class="pictrue"> <image v-if="item.productInfo.attrInfo" :src='item.productInfo.attrInfo.image'></image> <image v-else :src='item.productInfo.image'></image> <view class="mantle" v-if="!item.status || !item.attrStatus"></view> </view> <view class="txtPic"> <view class="name line2" :class="(item.attrStatus && item.status)?'':'on'">{{item.productInfo.store_name}}</view> <view v-if="item.attrStatus && item.status"> <view class="info" v-if="item.productInfo.attrInfo">{{item.productInfo.attrInfo.suk}}</view> <view class="bottom acea-row row-between-wrapper"> <view class="money">{{$t(`¥`)}}<text class="num">{{item.truePrice}}</text></view> <view class="cartNum acea-row row-middle"> <view class="reduce iconfont icon-jianhao1" @click="leaveCart(index)"></view> <view class="num">{{item.cart_num}}</view> <view class="plus iconfont icon-jiahao1" @click="joinCart(index)"></view> </view> </view> </view> <view class="noBnt" v-else-if="!item.attrStatus">{{$t(`已售罄`)}}</view> <view class="noBnt" v-else-if="!item.status">{{$t(`已下架`)}}</view> <view class="delTxt acea-row row-right" v-if="!item.status || !item.attrStatus"><text @click="oneDel(item.id,index)">{{$t(`删除`)}}</text></view> </view> </view> </view> </view> <view class="mask" v-if="cartData.iScart" @click="closeList"></view> </view> </template> <script> export default { props:{ cartData: { type: Object, default: () => {} } }, data() { return {}; }, mounted(){ }, methods: { closeList(){ this.$emit('closeList', false); }, leaveCart(index){ this.$emit('ChangeCartNumDan', false,index); }, joinCart(index){ this.$emit('ChangeCartNumDan', true,index); }, subDel(){ this.$emit('ChangeSubDel'); }, oneDel(id,index){ this.$emit('ChangeOneDel',id,index); } } } </script> <style lang="scss"> .mask{ z-index: 99; } .cartList{ position: fixed; left:0; bottom: 0; width: 100%; background-color: #fff; z-index:100; padding: 0 30rpx 100rpx 30rpx; box-sizing: border-box; border-radius:16rpx 16rpx 0 0; transform: translate3d(0, 100%, 0); transition: all .3s cubic-bezier(.25, .5, .5, .9); &.on{ transform: translate3d(0, 0, 0); } .title{ height: 108rpx; .name{ font-size:28rpx; color: #282828; font-weight:bold; } .del{ font-size: 26rpx; color: var(--view-theme); .iconfont{ margin-right: 5rpx; font-size: 34rpx; } } } .list{ max-height: 720rpx; overflow-x: hidden; overflow-y: auto; .item{ margin-bottom: 40rpx; .pictrue{ width: 176rpx; height: 176rpx; border-radius: 16rpx; position: relative; image{ width: 100%; height: 100%; border-radius: 16rpx; } .mantle{ position: absolute; top:0; left:0; width: 100%; height: 100%; background:rgba(255,255,255,0.65); border-radius:16rpx; } } .txtPic{ width: 486rpx; .name{ font-size:28rpx; color: #282828; &.on{ color: #A3A3A3; } } .noBnt{ width:126rpx; height:44rpx; background:rgba(242,242,242,1); border-radius:22rpx; text-align: center; line-height: 44rpx; font-size: 24rpx; color: #A3A3A3; margin-top: 10rpx; } .delTxt{ margin-top: 48rpx; font-size: 24rpx; color: #E93323; text{ width: 70rpx; height: 50rpx; text-align: center; line-height: 50rpx; } } .info{ font-size: 23rpx; color: #989898; margin-top: 5rpx; } .bottom{ margin-top: 11rpx; .money{ font-weight:bold; font-size: 26rpx; color: var(--view-priceColor); .num{ font-size: 34rpx; } } .cartNum{ font-weight:bold; .num{ font-size: 34rpx; color: #282828; width: 120rpx; text-align: center; } .reduce{ color: #282828; font-size: 24rpx; width: 60rpx; height: 60rpx; text-align: center; line-height: 60rpx; } .plus{ color: #282828; font-size: 24rpx; width: 60rpx; height: 60rpx; text-align: center; line-height: 60rpx; } } } } } } } </style>