From b0bfc153bf3c9aa430ee6a86588648cdd1c27132 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 12 六月 2025 11:36:08 +0800 Subject: [PATCH] update: 点赞事件、收藏事件 --- types/index.ts | 5 ++ sub-pages/film-list/film-detail.vue | 85 +++++++++++++++++++++++++++++++++++++++++- components/card/flow-card.vue | 2 3 files changed, 88 insertions(+), 4 deletions(-) diff --git a/components/card/flow-card.vue b/components/card/flow-card.vue index 3dcaf68..486ab18 100644 --- a/components/card/flow-card.vue +++ b/components/card/flow-card.vue @@ -17,7 +17,7 @@ </view> <view class="opera-info"> <up-icon name="heart" size="30rpx" color="#999" /> - <text>{{ item.likeCount }}</text> + <text>{{ item.voLikeCount }}</text> </view> </view> </view> diff --git a/sub-pages/film-list/film-detail.vue b/sub-pages/film-list/film-detail.vue index 19cf656..441b44a 100644 --- a/sub-pages/film-list/film-detail.vue +++ b/sub-pages/film-list/film-detail.vue @@ -72,9 +72,31 @@ <view class="comment-input" @click="showCommentLayer"> <up-text size="12px" text="说点什么......" margin="0 0 0 20rpx" color="#B9B9B9" /> </view> - <up-icon name="heart" size="60rpx" color="#B9B9B9" label="11" /> - <up-icon name="star" size="60rpx" color="#B9B9B9" label="22" /> - <up-icon name="chat" size="60rpx" color="#B9B9B9" label="33" /> +<!-- <up-icon name="heart" size="60rpx" color="#B9B9B9" label="11" />--> +<!-- <up-icon name="star" size="60rpx" color="#B9B9B9" label="22" />--> + <up-icon + name="heart" + size="60rpx" + :color="liked ? '#FF0000' : '#B9B9B9'" + :label="filmInfo?.voLikeCount || 0" + @click="toggleLike" + /> + <up-icon + name="star" + size="60rpx" + :color="collected ? '#FFD700' : '#B9B9B9'" + :label="filmInfo?.voCollectCount || 0" + @click="toggleFavorite" + /> + + <up-icon + name="chat" + size="60rpx" + color="#B9B9B9" + :label="filmInfo?.voCommentCount || 0" + @click="showCommentLayer" + /> + <!-- <up-icon name="chat" size="60rpx" color="#B9B9B9" label="33" /> --> </view> </view> </view> @@ -109,6 +131,9 @@ username: '图墙精选', avatar: 'https://img.yzcdn.cn/vant/cat.jpeg' }) + +const liked = ref(false) // 是否已点赞 +const collected = ref(false) // 是否已收藏 onLoad((options: any) => { @@ -193,6 +218,10 @@ if (code == 0) { filmInfo.value = data console.log("详情", filmInfo.value) + // 设置初始状态 + console.log("filmInfo.value.isLiked", data.liked) + liked.value =data.liked || false + collected.value = data.collected || false if (data && data.filmPictures) { // 只获取里面的url // filmPictureList.value=JSON.parse(data.filmPictures) as Array<FilmPicture> @@ -214,6 +243,56 @@ return null; } } + +const toggleLike = async () => { + console.log("toggleLike",filmInfo.value) + if (!filmInfo.value) return + + const api = liked.value ? '/v2/film-likes/filmLikes/edit' : '/v2/film-likes/filmLikes/edit' + + try { + const res = await $http.request('post', api, { + data: { filmId: filmInfo.value.id } + }) + + if (res.code === 0) { + // 更新本地状态 + liked.value = !liked.value + filmInfo.value.voLikeCount += liked.value ? 1 : -1 + + // 提示信息 + $message.showToast(liked.value ? '点赞成功' : '取消点赞') + } + } catch (error) { + console.error('点赞失败:', error) + $message.showToast('操作失败') + } +} + +const toggleFavorite = async () => { + console.log("toggleFavorite",filmInfo.value) + if (!filmInfo.value) return + + const api = collected.value ? '/v2/film-collects/filmCollects/edit' : '/v2/film-collects/filmCollects/edit' + + try { + const res = await $http.request('post', api, { + data: { filmId: filmInfo.value.id } + }) + + if (res.code === 0) { + // 更新本地状态 + collected.value = !collected.value + filmInfo.value.voCollectCount += collected.value ? 1 : -1 + + // 提示信息 + $message.showToast(collected.value ? '收藏成功' : '取消收藏') + } + } catch (error) { + console.error('收藏失败:', error) + $message.showToast('操作失败') + } +} </script> diff --git a/types/index.ts b/types/index.ts index aa993f3..f214c6d 100644 --- a/types/index.ts +++ b/types/index.ts @@ -228,6 +228,11 @@ createBy: string; createTime: string; updateBy: string | null; + liked: boolean; + collected: boolean; + voLikeCount: number; + voCollectCount: number; + voCommentCount: number; } -- Gitblit v1.9.3