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