<template>
<div class="body-color">
<div class="cart-top">
<div class="cart-top-l">共<text>{{goods}}</text>件商品</div>
<div class="cart-top-r" @click="editGoods" v-html="!editType?'编辑':'完成'">编辑</div>
</div>
<div class="cart-list" :index='index' v-for="(item,index) in cartArr">
<div :class="item.selected?'cart-list-icon active':'cart-list-icon'" @click="selectCart(index)"></div>
<image :src='item.img' mode="widthFix"></image>
<div class="cart-list-info">
<div class="cart-list-info-title">{{item.name}}</div>
<div class="cart-list-info-number">
<div class="info-number-l">¥<text>{{item.price}}</text></div>
<div class="info-number-r">
<button @click="add(index)">+</button>
<input class="number" :value='item.number' />
<button class="jiajian" @click="reduce(index)">-</button>
</div>
</div>
</div>
</div>
<div class="cart-footer">
<div class="cart-footer-all">
<div :class="isSelectall?'cart-footer-icon active':'cart-footer-icon'" @click="selectCartAll"></div>
全选
</div>
<div class="footer-btn" v-if="!editType">
<button class="cart-footer-btn">结算</button>
<div class="cart-footer-total">
合计:
<text>¥{{totalPrice}}</text>
</div>
</div>
<div class="footer-btn" v-else>
<button class="cart-footer-del" @click="deleteGoods">删除</button>
<button class="cart-footer-col">移入收藏夹</button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
cartArr: [{
img:'../../static/icon4.png',
name: '1金玫瑰金如意锁吊坠 钻石项链拼色 轻奢个性潮锁骨链18K',
price: '1231',
selected: false,
number: 1
},
{
img:'../../static/icon4.png',
name: '2金玫瑰金如意锁吊坠 钻石项链拼色 轻奢个性潮锁骨链18K',
price: '1232',
selected: false,
number: 1
},
{
img:'../../static/icon4.png',
name: '3金玫瑰金如意锁吊坠 钻石项链拼色 轻奢个性潮锁骨链18K',
price: '1233',
selected: false,
number: 1
},
],
isSelectall: false,
val: 0,
totalPrice: 0,
goods: 0,
editType: false
}
},
methods: {
selectCart(index) {
this.cartArr[index].selected = !this.cartArr[index].selected
this.calculation();
let selrctLength = 0
for (let i = 0; i < this.cartArr.length; i++) {
if (this.cartArr[i].selected) {
selrctLength += 1
} else {
this.isSelectall = false
return false
}
}
console.log(selrctLength, this.cartArr.length)
if (selrctLength == this.cartArr.length) {
this.isSelectall = true
}
},
add(index) {
this.cartArr[index].number += 1
this.calculation();
},
reduce(index) {
if (this.cartArr[index].number > 1) {
this.cartArr[index].number = this.cartArr[index].number - 1
this.calculation();
}
},
selectCartAll() {
this.isSelectall = !this.isSelectall
if (this.isSelectall) {
for (let i = 0; i < this.cartArr.length; i++) {
this.cartArr[i].selected = true
}
} else {
for (let i = 0; i < this.cartArr.length; i++) {
this.cartArr[i].selected = false
}
}
this.calculation();
},
calculation() {
this.totalPrice = 0
this.goods = 0
for (let i = 0; i < this.cartArr.length; i++) {
if (this.cartArr[i].selected) {
this.goods += 1*this.cartArr[i].number
this.totalPrice += this.cartArr[i].number * this.cartArr[i].price
}
}
},
editGoods() {
this.editType = !this.editType
},
deleteGoods(){
for (let i = 0; i < _this.cartArr.length; i++) {
if (this.cartArr[i].selected) {
this.cartArr.splice(i,this.goods)
}
}
this.calculation()
}
}
}
</script>
<style scoped lang="scss">
uni-page-body,
uni-page-refresh {
background-color: #f8f8f8 !important;
height: 100%;
}
.footer-btn {
float: right;
}
.body-color{
background-color: #f4f4f4;
}
/* #ifdef MP-WEIXIN */
.body-color{
background-color: #f4f4f4;
height: 100vh;
}
/* #endif */
.cart-top {
height: 80rpx;
line-height: 80rpx;
padding: 0 24rpx;
box-sizing: border-box;
font-size: 26rpx;
color: #333333;
.cart-top-l {
float: left;
}
.cart-top-r {
float: right;
}
}
.cart-list {
overflow: hidden;
background: #ffffff;
padding: 35rpx 24rpx;
box-sizing: border-box;
display: flex;
margin-bottom: 20rpx;
.cart-list-icon {
float: left;
width: 24rpx;
height: 24rpx;
background: url(../../static/s2.png);
background-size: 100% 100%;
margin-top: 83rpx;
margin-right: 24rpx;
&.active {
background: url(../../static/s1.png);
background-size: 100% 100%;
}
}
image {
float: left;
width: 190rpx;
height: 190rpx;
margin-right: 20rpx;
}
.cart-list-info {
position: relative;
height: 190rpx;
float: left;
flex: 1;
.cart-list-info-title {
font-size: 26rpx;
color: #333333;
}
.cart-list-info-number {
position: absolute;
bottom: 0;
width: 100%;
.info-number-l {
float: left;
font-size: 34rpx;
color: #333333;
}
.info-number-r {
float: right;
text-align: center;
font-size: 26rpx;
color: #333333;
button {
float: right;
width: 50rpx;
height: 50rpx;
line-height: 50rpx;
background: #ffffff;
border-radius: 0;
padding: 0;
border: 1rpx solid #eeeeee;
}
.jiajian {
margin-right: 8rpx;
}
.number {
float: right;
width: 100rpx;
height: 50rpx;
line-height: 50rpx;
border: 1rpx solid #eeeeee;
margin-right: 8rpx;
font-size: 26rpx;
}
uni-button:after {
border-radius: 0 !important;
border: none !important;
}
}
}
}
}
.cart-footer {
position: fixed;
bottom: 120rpx;
left: 0;
right: 0;
height: 96rpx;
line-height: 96rpx;
border-top: 1rpx solid #eeeeee;
padding: 0 24rpx;
box-sizing: border-box;
background: #ffffff;
.cart-footer-all {
float: left;
color: #333333;
font-size: 30rpx;
.cart-footer-icon {
float: left;
width: 24rpx;
height: 24rpx;
background: url(../../static/s2.png);
background-size: 100% 100%;
margin-top: 36rpx;
margin-right: 24rpx;
&.active {
background: url(../../static/s1.png);
background-size: 100% 100%;
}
}
}
.cart-footer-total {
float: right;
margin-right: 35rpx;
color: #333333;
font-size: 28rpx;
text {
color: #ff6666;
font-size: 34rpx;
}
}
.cart-footer-btn {
float: right;
width: 168rpx;
height: 68rpx;
line-height: 68rpx;
border: none;
color: #ffffff;
background: #deb696;
font-size: 30rpx;
border-radius: 40rpx;
margin-top: 14rpx;
}
.cart-footer-del {
float: right;
background: #333333;
width: 194rpx;
height: 68rpx;
line-height: 68rpx;
color: #ffffff;
font-size: 30rpx;
margin-top: 14rpx;
border-radius: 0;
border-top-right-radius: 40rpx;
border-bottom-right-radius: 40rpx;
}
.cart-footer-col {
float: right;
background: #deb696;
width: 194rpx;
height: 68rpx;
line-height: 68rpx;
color: #ffffff;
font-size: 30rpx;
margin-top: 14rpx;
border-radius: 0;
border-top-left-radius: 40rpx;
border-bottom-left-radius: 40rpx;
}
}
/* #ifdef MP-WEIXIN */
.cart-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 96rpx;
line-height: 96rpx;
border-top: 1rpx solid #eeeeee;
padding: 0 24rpx;
box-sizing: border-box;
background: #ffffff;
.cart-footer-all {
float: left;
color: #333333;
font-size: 30rpx;
.cart-footer-icon {
float: left;
width: 24rpx;
height: 24rpx;
background: url(../../static/s2.png);
background-size: 100% 100%;
margin-top: 36rpx;
margin-right: 24rpx;
&.active {
background: url(../../static/s1.png);
background-size: 100% 100%;
}
}
}
.cart-footer-total {
float: right;
margin-right: 35rpx;
color: #333333;
font-size: 28rpx;
text {
color: #ff6666;
font-size: 34rpx;
}
}
.cart-footer-btn {
float: right;
width: 168rpx;
height: 68rpx;
line-height: 68rpx;
border: none;
color: #ffffff;
background: #deb696;
font-size: 30rpx;
border-radius: 40rpx;
margin-top: 14rpx;
}
.cart-footer-del {
float: right;
background: #333333;
width: 194rpx;
height: 68rpx;
line-height: 68rpx;
color: #ffffff;
font-size: 30rpx;
margin-top: 14rpx;
border-radius: 0;
border-top-right-radius: 40rpx;
border-bottom-right-radius: 40rpx;
}
.cart-footer-col {
float: right;
background: #deb696;
width: 194rpx;
height: 68rpx;
line-height: 68rpx;
color: #ffffff;
font-size: 30rpx;
margin-top: 14rpx;
border-radius: 0;
border-top-left-radius: 40rpx;
border-bottom-left-radius: 40rpx;
}
}
/* #endif */
.cart-footer2 {
position: fixed;
bottom: 100rpx;
left: 0;
right: 0;
height: 96rpx;
line-height: 96rpx;
border-top: 1rpx solid #eeeeee;
padding: 0 24rpx;
box-sizing: border-box;
background: #ffffff;
// display: none;
.cart-footer-all2 {
float: left;
color: #333333;
font-size: 30rpx;
.cart-footer-icon {
float: left;
width: 24rpx;
height: 24rpx;
background: url(../../static/s2.png);
background-size: 100% 100%;
margin-top: 36rpx;
margin-right: 24rpx;
&.active {
background: url(../../static/s1.png);
background-size: 100% 100%;
}
}
}
button {
float: right;
width: 194rpx;
height: 68rpx;
line-height: 68rpx;
color: #ffffff;
font-size: 30rpx;
margin-top: 14rpx;
border-radius: 0;
}
.cart-footer-del {
background: #333333;
border-top-right-radius: 40rpx;
border-bottom-right-radius: 40rpx;
}
.cart-footer-col {
background: #deb696;
border-top-left-radius: 40rpx;
border-bottom-left-radius: 40rpx;
}
}
uni-modal .uni-modal__btn_primary{
color: #deb696 !important;
}
</style>