<template> <div id="MyCollect"> <van-swipe-cell v-for="(item, index) in CollectList" :key="index" :name="'collectItem' + index" :before-close="beforeClose"> <div class="collect_item" @click="handleCourse(item)"> <div class="course_img" :style="{ backgroundImage: 'url(' + item.img + ')' }"></div> <div class="right"> <p class="course_name">{{ item.title }}</p> <p class="course_price"> <span>¥ {{ item.price }}起</span><van-icon name="delete-o" @click.stop="deleteCollect(index)" /> </p> </div> </div> <template #right> <div class="delete_button"> <span>取消<br />收藏</span> </div> </template> </van-swipe-cell> </div> </template> <script> export default { data() { return { CollectList: [], } }, mounted() { this.getMyCollect() }, methods: { getMyCollect() { const userInfo = JSON.parse(localStorage.getItem('userInfo')) this.yxAxios .post(`${this.proxyUrl}/api/product/getMyCollect`, { centerNo: userInfo.centerNo, }) .then((res) => { if (res.data.code == 200) { this.CollectList = res.data.rows } else { console.log(res.data.message) // this.$toast.fail(res.data.message) } }) }, // position 为关闭时点击的位置 beforeClose({ position, instance, name }) { switch (position) { case 'right': this.$dialog .confirm({ title: '确定取消收藏吗?', }) .then(() => { let index = name.replace('collectItem', '') this.cancelCollect(index) instance.close() }) .catch(() => { instance.close() }) } }, handleCourse(item) { this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.productId, publicName: localStorage.getItem('publicName') }, }) }, // 点击按钮取消收藏 deleteCollect(index) { this.$dialog .confirm({ title: '确定取消收藏吗?', }) .then(() => { this.cancelCollect(index) }) }, // 取消收藏 cancelCollect(index) { const userInfo = JSON.parse(localStorage.getItem('userInfo')) this.yxAxios .post(`${this.proxyUrl}//api/product/cancelCollect`, { centerNo: userInfo.centerNo, productId: this.CollectList[index].productId, }) .then((res) => { if (res.data.code == 200) { this.$toast('取消收藏成功') this.getMyCollect() } else { console.log(res.data.message) // this.$toast.fail(res.data.message) } }) }, }, } </script> <style lang="scss"> #MyCollect { .collect_item { padding: 32px 36px; &:not(:nth-of-type()) { border-bottom: 1px solid #f0f0f0; } .course_img { width: 150px; height: 150px; overflow: hidden; background-size: cover; border-radius: 12px; display: inline-block; vertical-align: top; } .right { display: inline-flex; flex-direction: column; justify-content: space-between; width: 500px; height: 150px; margin-left: 20px; .course_name { font-size: 28px; } .course_price { display: flex; justify-content: space-between; font-size: 24px; color: #999; } } } .delete_button { width: 140px; height: 100%; background: #bbb; position: relative; span { font-size: 28px; color: #fff; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } } } </style> <style lang="scss"> // 长辈版 .elder { #MyCollect .collect_item .right .course_name, #MyCollect .collect_item .right .course_price { font-size: 36px; } } </style>