From fe75cffbf3bae6777aa2794fd89fa5dc37f5df8d Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 15 七月 2025 10:11:23 +0800 Subject: [PATCH] 项目初始化 --- src/pages_template/pages/comment/reply.vue | 249 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 249 insertions(+), 0 deletions(-) diff --git a/src/pages_template/pages/comment/reply.vue b/src/pages_template/pages/comment/reply.vue new file mode 100644 index 0000000..7df6d5f --- /dev/null +++ b/src/pages_template/pages/comment/reply.vue @@ -0,0 +1,249 @@ +<script setup> +import { ref, onMounted } from 'vue'; + +const commentList = ref([]); +const comment = ref({}); + +onMounted(() => { + getReply(); +}); + +// 鐐硅禐 +const getLike = (index) => { + if (index === 0 || index > 0) { + commentList.value[index].isLike = !commentList.value[index].isLike; + if (commentList.value[index].isLike) { + commentList.value[index].likeNum++; + } else { + commentList.value[index].likeNum--; + } + } else { + if (comment.value.isLike) { + comment.value.isLike = !comment.value.isLike; + comment.value.likeNum--; + } else { + comment.value.isLike = !comment.value.isLike; + comment.value.likeNum++; + } + } +}; + +// 鍥炲鍒楄〃 +const getReply = () => { + comment.value = { + id: 1, + name: '鍙惰交鐪�', + date: '12-25 18:58', + contentText: '鎴戜笉淇′紛鏈椾細娌℃湁鍚庣画鍙嶅簲锛岀編鍥借偗瀹氫細涓轰粖澶╃殑浜嬫儏浠樺嚭浠d环鐨�', + url: 'https://cdn.uviewui.com/uview/template/SmilingDog.jpg', + allReply: 12, + likeNum: 33, + isLikes: false + }; + commentList.value = [ + { + name: '鏂板叓鍑�', + date: '12-25 18:58', + contentText: '涓嶈涔辨墦骞垮憡鍟婂杺锛佽櫧鐒舵槸鐪熺殑瓒呭ソ鐢�', + url: 'https://cdn.uviewui.com/uview/template/SmilingDog.jpg', + likeNum: 33, + isLike: false, + reply: { + name: 'uview', + contentStr: 'uview鏄熀浜巙niapp鐨勪竴涓猆I妗嗘灦锛屼唬鐮佷紭缇庣畝娲侊紝瀹囧畽瓒呯骇鏃犳晫褰╄櫣鏃嬭浆濂界敤锛岀敤瀹冿紒' + } + }, + { + name: '鍙惰交鐪�1', + date: '01-25 13:58', + url: 'https://cdn.uviewui.com/uview/template/SmilingDog.jpg', + contentText: '鎴戜笉淇′紛鏈椾細娌℃湁鍚庣画鍙嶅簲锛岀編鍥借偗瀹氫細涓轰粖澶╃殑浜嬫儏浠樺嚭浠d环鐨�', + allReply: 0, + likeNum: 11, + isLike: false, + reply: { + name: '绮樼矘', + contentStr: '浠婂ぉ鍚冧粈涔堬紝鏄庡ぉ鍚冧粈涔堬紝鏅氫笂鍚冧粈涔堬紝鎴戝彧鏄竴鍙皬鐚挭涓轰粈涔堣鐑︽伡杩欎箞澶�' + } + }, + { + name: '鍙惰交鐪�2', + date: '03-25 13:58', + contentText: '鎴戜笉淇′紛鏈椾細娌℃湁鍚庣画鍙嶅簲锛岀編鍥借偗瀹氫細涓轰粖澶╃殑浜嬫儏浠樺嚭浠d环鐨�', + allReply: 0, + likeNum: 21, + url: 'https://cdn.uviewui.com/uview/template/SmilingDog.jpg', + isLike: false, + allReply: 2, + reply: { + name: '璞嗗寘', + contentStr: '鎯冲悆鍐扮硸钁姦绮樿眴鍖咃紝浣嗘病閽�5555.........' + } + }, + { + name: '鍙惰交鐪�3', + date: '06-20 13:58', + contentText: '鎴戜笉淇′紛鏈椾細娌℃湁鍚庣画鍙嶅簲锛岀編鍥借偗瀹氫細涓轰粖澶╃殑浜嬫儏浠樺嚭浠d环鐨�', + allReply: 0, + likeNum: 150, + url: 'https://cdn.uviewui.com/uview/template/SmilingDog.jpg', + isLike: false + } + ]; +}; +</script> + +<template> + <view class="wrap"> + <view class="comment"> + <view class="top"> + <view class="left"> + <view class="heart-photo"> + <image :src="comment.url" mode=""></image> + </view> + <view class="user-info"> + <view class="name">{{ comment.name }}</view> + <view class="date">06-25 13:58</view> + </view> + </view> + <view class="right" :class="{ highlight: comment.isLike }"> + {{ comment.likeNum }} + <u-icon v-if="!comment.isLike" name="thumb-up" class="like" color="#9a9a9a" :size="30" + @click="getLike"></u-icon> + <u-icon v-if="comment.isLike" name="thumb-up-fill" class="like" :size="30" + @click="getLike"></u-icon> + </view> + </view> + <view class="content">{{ comment.contentText }}</view> + </view> + <view class="all-reply"> + <view class="all-reply-top">鍏ㄩ儴鍥炲锛坽{ comment.allReply }}锛�</view> + <view class="item" v-for="(item, index) in commentList" :key="index"> + <view class="comment"> + <view class="top"> + <view class="left"> + <view class="heart-photo"> + <image :src="item.url" mode=""></image> + </view> + <view class="user-info"> + <view class="name">{{ item.name }}</view> + <view class="date">{{ item.date }}</view> + </view> + </view> + <view class="right" :class="{ highlight: item.isLike }"> + <view class="num">{{ item.likeNum }}</view> + <u-icon v-if="!item.isLike" name="thumb-up" class="like" :size="30" color="#9a9a9a" + @click="getLike(index)"></u-icon> + <u-icon v-if="item.isLike" name="thumb-up-fill" class="like" :size="30" + @click="getLike(index)"></u-icon> + </view> + </view> + <view class="reply" v-if="item.reply"> + <view class="username">{{ item.reply.name }}</view> + <view class="text">{{ item.reply.contentStr }}</view> + </view> + <view class="content">{{ item.contentText }}</view> + </view> + </view> + </view> + </view> +</template> + +<style lang="scss" scoped> +page { + background-color: #f2f2f2; +} + +.comment { + padding: 30rpx; + font-size: 32rpx; + background-color: #ffffff; + + .top { + display: flex; + justify-content: space-between; + } + + .left { + display: flex; + + .heart-photo { + image { + width: 64rpx; + height: 64rpx; + border-radius: 50%; + background-color: #f2f2f2; + } + } + + .user-info { + margin-left: 10rpx; + + .name { + color: #5677fc; + font-size: 28rpx; + margin-bottom: 4rpx; + } + + .date { + font-size: 20rpx; + color: $u-light-color; + } + } + } + + .right { + display: flex; + font-size: 20rpx; + align-items: center; + color: #9a9a9a; + + .like { + margin-left: 6rpx; + } + + .num { + font-size: 26rpx; + color: #9a9a9a; + } + } + + .highlight { + color: #5677fc; + + .num { + color: #5677fc; + } + } +} + +.all-reply { + margin-top: 10rpx; + padding-top: 20rpx; + background-color: #ffffff; + + .all-reply-top { + margin-left: 20rpx; + padding-left: 20rpx; + border-left: solid 4rpx #5677fc; + font-size: 30rpx; + font-weight: bold; + } + + .item { + border-bottom: solid 2rpx $u-border-color; + } + + .reply { + padding: 20rpx; + background-color: rgb(242, 242, 242); + border-radius: 12rpx; + margin: 10rpx 0; + + .username { + font-size: 24rpx; + color: #7a7a7a; + } + } +} +</style> -- Gitblit v1.9.3