deming/components/mine/collection-item/index.vue
2020-08-08 12:07:50 +08:00

136 lines
2.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="collection-item">
<u-empty mode="list" v-if="!list.length" color="#000" img-width="200" font-size="30" margin-top="300"></u-empty>
<u-swipe-action
v-for="(item, index) in list" :key="index"
:index='index'
:show="item.show"
:options="options"
@click="removeFavorite"
@open="open"
>
<view class="item u-border-bottom" @click="viewGoodsDetails(item)">
<image :src="item.goods_image"></image>
<!-- 此层wrap在此为必写的否则可能会出现标题定位错误 -->
<view class="title-wrap">
<view class="item-top u-line-2">{{ item.goods_name }}</view>
<view class="item-bottom">
<view class="item-price">¥{{ item.favlog_price }}</view>
<view class="item-date">
<image src="@/pageE/static/mine/26.png"></image>
<view>{{ item.fav_time | date }}</view>
</view>
</view>
</view>
</view>
</u-swipe-action>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
options: [
{
text: '删除',
style: {
backgroundColor: '#FF3131'
}
}
]
}
},
mounted() {
this.getGoodsFavoritesList();
},
methods: {
viewGoodsDetails(item) {
const list = this.list.filter(item => {
return item.show;
})
if(list.length) return false;
this.$u.route({
url: 'pageB/sdetails/index',
params: {
id: item.fav_id,
}
})
},
getGoodsFavoritesList() {
this.$u.api.getFavoritesList().then(res => {
if(res.errCode == 0) {
this.list = res.data;
this.list.forEach(item => {
Object.assign(item, { show: false });
})
}
})
},
removeFavorite(index) {
const id = this.list[index].fav_id;
this.$u.api.removeFavorite({
fid: id,
type: 'goods'
}).then(res => {
if(res.errCode == 0) {
this.getGoodsFavoritesList();
} else {
this.$u.toast(res.message);
}
})
},
open(index) {
// 先将正在被操作的swipeAction标记为打开状态否则由于props的特性限制
// 原本为'false',再次设置为'false'会无效
this.list[index].show = true;
this.list.map((val, idx) => {
if(index != idx) this.list[idx].show = false;
})
this.$forceUpdate();
}
},
};
</script>
<style lang="scss" scoped>
.collection-item {
.item {
padding: 30rpx;
display: flex;
> image {
width: 180rpx;
height: 160rpx;
border-radius: 10rpx;
margin-right: 30rpx;
flex-shrink: 0;
}
.title-wrap {
flex: 1;
.item-top {
font-size: 30rpx;
color: rgba(51,51,51,1);
line-height: 44rpx;
margin-bottom: 54rpx;
}
.item-bottom {
display: flex;
align-items: center;
justify-content: space-between;
.item-price {
font-size: 30rpx;
color: rgba(51,51,51,1);
}
.item-date {
display: flex;
align-items: center;
> image {
margin-right: 25rpx;
width: 24rpx;
height: 24rpx;
}
}
}
}
}
}
</style>