共计 2996 个字符,预计需要花费 8 分钟才能阅读完成。
<template>
<div>
<van-checkbox-group class="card-goods" v-model="checkedGoods"> | |
<van-checkbox | |
class="card-goods__item" | |
v-for="(item,index) in list" | |
:checked='true' | |
:key="index" | |
:name="item" | |
v-model='checked' | |
> | |
<van-card | |
:price="item.price" | |
:desc="item.text" | |
:title="item.name" | |
:thumb="item.img" | |
> | |
<div slot="bottom" :style="{float:'right',height:'5vh'}"> | |
<van-button size="mini" :style="{height:'5vh'}" @click="add($event,index)">+</van-button> | |
<span :style="{height:'5vh',fontSize:'15px'}" >{{item.num}}</span> | |
<van-button :style="{height:'5vh'}" size="mini" @click="jian($event,index)">-</van-button> | |
</div> | |
</van-card> | |
<van-button type="default" @click="remove($event,index)" :style="{float:'right',height:'4vh',lineHeight:'4vh'}"> 删除 </van-button> | |
</van-checkbox> | |
</van-checkbox-group> | |
<van-submit-bar | |
:price="totalPrice" | |
:disabled="!checkedGoods.length" | |
:button-text="submitBarText" | |
@submit="onSubmit(totalPrice)"> |
<van-checkbox @click=”tap()” v-model=”checked” :style=”{marginLeft:’5vw’,fontSize:’15px’}” > 全选 </van-checkbox>
</van-submit-bar>
</div>
</template>
<script>
import axios from ‘axios’;
import {Checkbox, CheckboxGroup, Card, SubmitBar, Toast} from ‘vant’;
export default {
mounted(){
axios({ | |
method:'post', | |
url:'http://www.tencent.com/api', | |
data:{title:0}, | |
}).then((data)=>{ | |
this.list=data.data.list; | |
this.list.forEach((item) => {this.checkedGoods.push(item); | |
}); | |
this.checked=true; | |
}); | |
}, |
data() {
return {checkedGoods: [], | |
list:[], | |
checked:false, | |
panduan:true, | |
midprc:'', | |
}; |
},
computed: {
submitBarText:{get:function(){ | |
const count = this.checkedGoods.length; | |
return '结算' + (count ? `(${count})` : '');// 模板字符串 ${count} | |
}, | |
},totalPrice:{get:function(){ | |
return this.list.reduce((total, item) => total + | |
(this.checkedGoods.indexOf(item) !== -1 ? item.price*100*item.num : 0) | |
, 0); | |
}, | |
} |
},
methods: {
onSubmit(a) { | |
this.$store.state.z_info.tolpri=a/100; | |
this.$store.state.z_info.od_name=this.list[0].name; | |
this.$store.state.z_info.od_img=this.list[0].img; | |
this.$store.state.z_info.od_text=this.list[0].text; | |
this.$router.push({path:'/creods'}); | |
}, | |
tap(){if(this.checked){this.checkedGoods = []; | |
}else{this.checkedGoods=[]; | |
this.list.forEach((item) => {this.checkedGoods.push(item); | |
}); | |
} | |
}, | |
remove(e,a){ | |
e.cancelBubble = true; | |
this.list.splice(a,1); | |
}, | |
add(e,a){ | |
e.cancelBubble = true; | |
this.list[a].num++; | |
}, | |
jian(e,a){ | |
e.cancelBubble = true; | |
if(this.list[a].num<=1){this.list[a].num = 1; | |
}else{this.list[a].num--; | |
} | |
} |
},
watch:{
checkedGoods:{handler:function(){if(this.checkedGoods.length==this.list.length){this.checked=true;}else{this.checked=false;} | |
}, | |
} |
}
};
</script>
<style lang=”less”>
.van-card__desc{
width: 60vw;
height:30vw
}
.card-goods {
padding: 0;
background-color: #fff;
margin-bottom: 50px;
&__item {
position: relative; | |
background-color: #fafafa; | |
.van-checkbox__label { | |
width: 100%; | |
height: auto; // temp | |
padding: 0 10px 0 15px; | |
box-sizing: border-box; | |
} | |
.van-checkbox__icon { | |
top: 40%; | |
left: 10px; | |
z-index: 1; | |
position: absolute; | |
margin-top: -10px; | |
} | |
.van-card__price { | |
color: #f44; | |
height: 5vh; | |
min-width: 50px; | |
font-size: 20px; | |
line-height: 5vh; | |
text-align: center | |
} |
}
}
.card-goods__item {
margin-bottom: 1vh;
}
.van-card__title{
height: 10vh;
line-height: 5vh;
font-size: 20px
}
.van-button–mini{
min-width: 30px
}
</style>
正文完
发表至: javascript
2019-07-23