Browse Source

Merge branch 'master' of http://150.158.33.144:3000/lalalashen/MoeNovaClient

lalalashen 3 months ago
parent
commit
45e78ec9fb
7 changed files with 1527 additions and 638 deletions
  1. 6 0
      pages.json
  2. 289 0
      pages/index/articleDetail.scss
  3. 403 0
      pages/index/articleDetail.vue
  4. 486 106
      pages/index/index.vue
  5. 210 253
      pages/index/peopleHome.scss
  6. 132 278
      pages/index/peopleHome.vue
  7. 1 1
      pages/my/my.vue

+ 6 - 0
pages.json

@@ -66,6 +66,12 @@
 					"bounce": "none"
 				}
 			}
+		}, {
+			"path": "pages/index/articleDetail",
+			"style": {
+				"navigationBarTitleText": "详情",
+				"navigationBarBackgroundColor": "#ffffff"
+			}
 		}, {
 			"path": "pages/index/ai_pp",
 			"style": {

+ 289 - 0
pages/index/articleDetail.scss

@@ -0,0 +1,289 @@
+page {
+	background-color: #ffffff;
+	width: 100%;
+	height: 100vh;
+}
+.page {
+	background-color: #ffffff;
+	width: 100%;
+}
+.header {
+	display: flex;
+	flex-direction: row;
+	justify-content: flex-start;
+	align-items: center;
+	width: 750rpx;height: 320rpx;
+	padding-top: calc(var(--status-bar-height) + 0rpx);
+	.left {
+		display: flex;flex-direction: row;width:200rpx;height:120rpx;
+		justify-content: center;
+		padding-left:50rpx;
+		image {
+			width:124rpx;height:40rpx;
+		}
+	}
+}
+.thread {
+	height: 20rpx;
+}
+.thread2 {
+	height: 60rpx;
+}
+.topUser {
+	width:750rpx;
+	height:750rpx;
+	// display: flex;
+	// flex-direction: column;
+	// justify-content: flex-end;
+	// align-items: flex-end;
+	// padding-bottom: 136rpx;
+	position: relative;
+	.home_image{
+		width: 100%;
+		height: 100%;
+	}
+	.list {
+		position: absolute;
+		bottom: 10rpx;
+		width:100%;
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: flex-end;
+		.img {
+			width:84rpx;height:84rpx;margin-left: 20rpx;
+			image {
+				width:84rpx;height:84rpx;border-radius: 16rpx;border: solid 4rpx #fff;
+			}
+		}
+		.active {
+			width:136rpx;height:136rpx;
+			image {
+				width:136rpx;height:136rpx;border-radius: 24rpx;border: solid 4rpx #fff;
+			}
+		}
+	}
+}
+.body {
+	width:750rpx;margin-top:-30rpx;
+	border-radius: 28rpx 28rpx 0 0;padding-top:30rpx;
+	display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
+	.item {
+		display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
+		padding:30rpx 50rpx;color:#333;
+		.title {
+			font-weight: bold;margin-bottom: 0rpx;
+			display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
+			font-size: 40rpx;
+		}
+		.title2 {
+			color:#959595;padding-top: 8rpx;
+		}
+		.content {
+			font-size: 32rpx;color:#999;
+		}
+	}
+	.item2 {
+		width:100%;display: flex;flex-direction: row;justify-content: space-between;align-items: flex-start;
+		padding:10rpx 30rpx;color:#fff;
+		.left {
+			image {
+				width:136rpx;height:56rpx;
+			}
+		}
+		.more {
+			display: flex;flex-direction: row;justify-content: center;align-items: center;
+			font-size: 28rpx;color:#999;
+			image {
+				width:30rpx;
+			}
+		}
+	}
+}
+.list_wish {
+	display: flex;flex-direction: column;justify-content: flex-start;align-items: center;color:#fff;
+	width:750rpx;
+	
+	.item {
+		margin-top: 20rpx;color:#fff;font-size: 28rpx;
+		display: flex;flex-direction: row;justify-content: center;align-items: center;
+		width: 690rpx;height: 156rpx;
+		background: #28292D;
+		border-radius: 28rpx;
+		.avator {
+			width: 116rpx;height: 116rpx;margin-left:14rpx;
+			background: #161616;
+			border-radius: 28rpx;
+			display: flex;flex-direction: row;justify-content: center;align-items: center;
+			.icon {
+				width:100rpx;height:100rpx;border-radius: 20rpx;
+			}
+		}
+		.left {
+			width:370rpx;display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
+			margin-left:20rpx;
+			.name {
+				font-size: 32rpx;margin-bottom:20rpx;
+			}
+			.jindu {
+				display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
+				.bord {
+					width: 216rpx;height: 20rpx;margin-left:0rpx;
+					background: #0F0F0F;
+					border-radius: 24rpx;
+					.active {
+						width: 0%;height: 20rpx;
+						background: linear-gradient( 142deg, #FF5967 0%, #FF2A95 100%);
+						border-radius: 24rpx;
+					}
+				}
+				.tips {
+					margin-left:20rpx;font-weight: 400;font-size: 24rpx;color: #FF3D83;
+				}
+			}
+		}
+		.right {
+			width:190rpx;
+			.btn_submit {
+				width: 168rpx;height: 72rpx;
+				background: linear-gradient( 142deg, #FF5967 0%, #FF2A95 100%);
+				border-radius: 28rpx 28rpx 28rpx 28rpx;
+				display: flex;flex-direction: column;justify-content: center;align-items: center;
+			}
+			.state {
+				width:168rpx;height: 72rpx;text-align: center;line-height: 72rpx;
+			}
+		}
+	}
+}
+.list_info {
+	display: flex;flex-direction: column;justify-content: flex-start;align-items: center;color:#fff;
+	width:750rpx;
+	
+	.item {
+		width: 690rpx;margin: 0rpx 0;color:#fff;font-size: 28rpx;padding:20rpx 0 0rpx;
+		display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
+		.avator {
+			width:88rpx;
+			.icon {
+				width:72rpx;height:72rpx;border-radius: 36rpx;
+			}
+		}
+		.tit {
+			width:470rpx;
+			.list1 {
+				display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
+				.name {
+					font-size: 32rpx;padding-right: 10rpx;height:40rpx;line-height: 40rpx;
+				}
+				.sex1 {
+					width: 76rpx;
+					height: 40rpx;
+					background: #423339;
+					border-radius: 16rpx 16rpx 16rpx 16rpx;
+					border: 2rpx solid #36D6FF;color:#36D6FF;
+					display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
+					image {
+						width:24rpx;height:24rpx;margin-left:4rpx;margin-right: 4rpx;
+					}
+				}
+				.sex2 {
+					width: 76rpx;
+					height: 40rpx;
+					background: #423339;
+					border-radius: 16rpx 16rpx 16rpx 16rpx;
+					border: 2rpx solid #FF7D88;color:#FF7D88;
+					display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
+					image {
+						width:24rpx;height:24rpx;margin-left:4rpx;margin-right: 4rpx;
+					}
+				}
+				.xinzuo {
+					width: 92rpx;height: 44rpx;margin-left:10rpx;line-height: 44rpx;
+					border-radius: 16rpx 16rpx 16rpx 16rpx;
+					border: 2rpx solid #404040;font-size: 20rpx;color: #D0D0D0;
+					display: flex;flex-direction: row;justify-content: center;align-items: center;
+				}
+			}
+			.time {
+				color:#D0D0D0;font-size: 24rpx;
+			}
+		}
+		.state {
+			width:130rpx;font-size: 28rpx;font-weight: normal;text-align: right;
+			.status_1 {
+				color:#999;
+			}
+			.status_9 {
+				color:#36D6FF;
+			}
+			.status_2 {
+				color:#FE2D56;
+			}
+		}
+	}
+	.content {
+		width: 690rpx;font-weight: 400;font-size: 28rpx;color: #FFFFFF;text-align: left;font-style: normal;
+		text-transform: none;padding:20rpx 0;
+		padding-left:88rpx;
+	}
+	.photo_list {
+		width: 690rpx;margin-bottom:0rpx;padding-left:88rpx;
+		border-radius: 28rpx;font-size: 28rpx;
+		display: flex;flex-direction: row;align-items: center;
+		flex-wrap: wrap;
+		.img {
+			width:186rpx;height:186rpx;margin-bottom: 24rpx;margin-right: 12rpx;
+			image {
+				width:186rpx;height:186rpx;border-radius: 28rpx;border:solid 1px rgba(255, 255, 255, 0.2);
+			}
+		}
+		.right {
+			color:#fff;
+		}
+	}
+	.desc {
+		width: 690rpx;padding:0rpx 0 0rpx;padding-left:88rpx;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #999999;
+		line-height: 0rpx;
+		text-align: left;
+		font-style: normal;
+		text-transform: none;
+		display: flex;flex-direction: row;justify-content: space-between;align-items: center;
+		image {
+			width:40rpx;height:40rpx;
+		}
+		.addr {
+			width:200rpx;
+		}
+		.img {
+			display: flex;flex-direction: row;justify-content: center;align-items: center;
+			padding:0 0rpx 0 30rpx;font-size: 28rpx;color:#fff;
+			image {
+				margin-top:-8rpx;
+			}
+		}
+	}
+}
+.btn_submit {
+	width: 336rpx;height: 100rpx;margin:50rpx auto;
+	background: linear-gradient( 90deg, #FF536D 0%, #FF3B84 100%);
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	display: flex;flex-direction: row;justify-content: center;align-items: center;
+	font-weight: bold;
+	font-size: 32rpx;
+	color: #FFFFFF;
+	image {
+		width:44rpx;height:44rpx;margin-right: 8rpx;margin-top:4rpx;
+	}
+}
+.btn {
+	text-align: center;
+	color: #fff;
+	padding: 20rpx;
+	margin: 50rpx;
+	border-radius: 20rpx;
+	background-color: #2979ff;
+  }

+ 403 - 0
pages/index/articleDetail.vue

@@ -0,0 +1,403 @@
+<template>
+	<view class="page">
+		<view class="topUser">
+			<image :src="home_image" class="home_image" mode="aspectFill"></image>
+			<view class="list">
+				<view class="img" :class="selImg==index?'active':''" v-for="(item,index) in image_list" :key="index"
+					@click="selPhoto(item,index)">
+					<image :src="item" mode="aspectFill"></image>
+				</view>
+			</view>
+		</view>
+		<view class="body">
+			<view class="item">
+				<view class="title">
+					标题标题标题标题标题
+				</view>
+				<view class="title2">
+					时间:2025-02-20
+				</view>
+			</view>
+			<view class="item">
+				<view class="content">内容内容内容内容内容</view>
+			</view>
+
+			<view class="list_info">
+				<view class="blankHeight"></view>
+			</view>
+
+		</view>
+
+		<!-- <view class="btn_submit" @click="chatTA()">
+			<image class="icon" src="../../static/icon/icon_chat_white.png" mode="widthFix"></image>
+			私聊
+		</view> -->
+		<view class="thread2"></view>
+		<view class="thread2"></view>
+
+		<previewImage ref="previewImage" :opacity="0.8" :circular="true" :imgs="imgs" :descs="descs"></previewImage>
+
+		<CComment ref="ccRef" :myInfo="myInfo" :userInfo="userInfo" :tableData="tableData" :tableTotal.sync="tableTotal"
+			:deleteMode="deleteMode" @likeFun="likeFun" @replyFun="replyFun" @deleteFun="deleteFun"></CComment>
+		<view class="btn" @tap="openComment">发表新评论</view>
+		<view class="thread2"></view>
+
+	</view>
+</template>
+
+<script>
+	import CComment from "@/components/cc-comment/cc-comment.vue";
+	import previewImage from '@/components/kxj-previewImage/kxj-previewImage.vue'; //引用插件
+	export default {
+		components: {
+			previewImage,
+			CComment
+		},
+		data() {
+			return {
+				title: '',
+				userID: 0,
+				selImg: 0,
+				home_image: '',
+				myinfo: {},
+				tag_list: [],
+				image_list: [],
+				imgs: [],
+				descs: [],
+				list_wish: [],
+
+
+
+				myInfo: {
+					user_id: 1, // 用户id
+					user_name: "cc", // 用户名
+					user_avatar: "https://img0.baidu.com/it/u=2836960144,3650263035&fm=253&fmt=auto&app=138&f=JPEG?w=474&h=474", // 用户头像地址
+				},
+				// 文章作者信息(提示: 一般来自localstorage, 如果是实时获取的话, 那么获取到数据后再v-if显示评论组件)
+				userInfo: {
+					user_id: 2, // 用户id
+					user_name: "ikun", // 用户名
+					user_avatar: "https://pic1.zhimg.com/80/v2-a79071a705f55c5d88f6c74e6111fe84_720w.webp", // 用户头像地址
+				},
+				deleteMode: "all", //删除模式
+				// 评论总数
+				tableTotal: 4,
+				// 评论表
+				tableData: [{
+						id: 120, // 评论id
+						parent_id: null, // 评论父级的id
+						reply_id: null, // 被回复评论的id
+						reply_name: null, // 被回复人的名称
+						user_id: 2, // 用户id
+						user_name: "ikun", // 用户名
+						user_avatar: "https://pic1.zhimg.com/80/v2-a79071a705f55c5d88f6c74e6111fe84_720w.webp", // 用户头像地址
+						user_content: "唱,跳,rap,篮球", // 用户评论内容
+						is_like: false, // 用户是否点赞
+						like_count: 120, // 点赞数统计
+						create_time: "2025-02-19 09:16", // 创建时间
+					},
+					{
+						id: 130, // 评论id
+						parent_id: 120, // 评论父级的id
+						reply_id: 120, // 被回复评论的id
+						reply_name: "ikun", // 被回复人的名称
+						user_id: 3, // 用户id
+						user_name: "小黑子", // 用户名
+						user_avatar: "https://pic2.zhimg.com/80/v2-06eade66ec837713d765b1557bf20b25_720w.webp", // 用户头像地址
+						user_content: "姬霓太美~祝自己生日快乐~~", // 用户评论内容
+						is_like: false, // 用户是否点赞
+						like_count: 67, // 点赞数统计
+						create_time: "2025-03-07 00:06", // 创建时间
+					},
+					{
+						id: 140, // 评论id
+						parent_id: 120, // 评论父级的id
+						reply_id: 130, // 被回复评论的id
+						reply_name: "小黑子", // 被回复人的名称
+						user_id: 4, // 用户id
+						user_name: "守护宗主维护宗门", // 用户名
+						user_avatar: "https://pic3.zhimg.com/80/v2-244696a62fa750b8570cf56bfaa5b26a_720w.webp", // 用户头像地址
+						user_content: "你露出鸡脚了", // 用户评论内容
+						is_like: false, // 用户是否点赞
+						like_count: 16, // 点赞数统计
+						create_time: "2025-05-10 17:08", // 创建时间
+					},
+					{
+						id: 150, // 评论id
+						parent_id: null, // 评论父级的id
+						reply_id: null, // 被回复评论的id
+						reply_name: null, // 被回复人的名称
+						user_id: 5, // 用户id
+						user_name: "音乐制作人", // 用户名
+						user_avatar: "https://pic2.zhimg.com/80/v2-88ec6f8c6d3305122664dd18a28730e5_720w.webp", // 用户头像地址
+						user_content: "只因你太美baby 只因你太美baby 只因你实在是太美baby 只因你太美baby 迎面走来的你让我如此蠢蠢欲动 这种感觉我从未有 Cause I got a crush on you who you 你是我的 我是你的 谁 再多一眼看一眼就会爆炸 再近一点靠近点快被融化", // 用户评论内容
+						is_like: true, // 用户是否点赞
+						like_count: 8, // 点赞数统计
+						create_time: "2025-12-21 00:45", // 创建时间
+					},
+				],
+
+
+			}
+		},
+		onLoad(parms) {
+			let self = this;
+			this.userID = parms.uid || 1069;
+		},
+		onShow() {
+			uni.$emit('check_update');
+			this.loadData();
+			this.loadWishData();
+		},
+		methods: {
+			onLinqu(item) {
+				uni.navigateTo({
+					url: '/pages/my/wishHelp?id=' + item.myid,
+				})
+			},
+			selPhoto(item, sel) {
+				this.selImg = sel;
+				this.home_image = this.image_list[sel];
+			},
+			chatTA() {
+				// uni.navigateTo({
+				// 	url: '/pages/chat/detail?userID=1&nickName=' + encodeURIComponent("昵称") +
+				// 		"&conversationType=C2C"
+				// });
+				let conversationID = "";
+				let conversationType = "C2C";
+				let userID = "" + this.myinfo.userID;
+				let nickName = this.myinfo.nickname;
+
+				var jsonConversationID = encodeURIComponent(JSON.stringify(conversationID));
+				var jsonConversationType = encodeURIComponent(JSON.stringify(conversationType));
+
+				var jsonUserID = encodeURIComponent(JSON.stringify(userID));
+				var jsonNickName = encodeURIComponent(JSON.stringify(nickName));
+
+				uni.navigateTo({
+					url: "/pages/chat/detail?userID=" + jsonUserID + "&nickName=" + jsonNickName +
+						"&conversationID=" + jsonConversationID + "&conversationType=" + jsonConversationType
+				})
+			},
+			toArr(imgs) {
+				let arr = imgs.split("|");
+				return arr;
+			},
+			previewOpen(imgs1, index) {
+				this.imgs = imgs1.split("|");
+				setTimeout(() => this.$refs.previewImage.open(index), 0)
+				// 传入当前选中的图片地址或序号
+				return; //如需测试和uni原生预览差别可注释这两行
+			},
+			loadWishData() {
+				uni.request({
+					url: this.$apiHost + '/Wish/getMyList',
+					data: {
+						uuid: getApp().globalData.uuid,
+						userID: this.userID
+					},
+					header: {
+						'content-type': 'application/json'
+					},
+					success: (res) => {
+						console.log("res", res.data)
+						this.list_wish = res.data.list;
+					}
+				});
+			},
+			loadData() {
+				// console.log({
+				// 	uuid: getApp().globalData.uuid,
+				// 	skey: getApp().globalData.skey
+				// });
+				uni.request({
+					url: this.$apiHost + '/Member/getHomeInfo',
+					data: {
+						uuid: getApp().globalData.uuid,
+						userID: this.userID
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("----:", res.data);
+						this.myinfo = res.data;
+						if (res.data.tags != "") {
+							this.tag_list = res.data.tags.split(",");
+						}
+						if (res.data.images != "") {
+							this.image_list = res.data.images.split(",");
+							this.home_image = this.image_list[0];
+						} else {
+							this.home_image = "../../static/home/avator.png";
+						}
+					},
+					complete: (com) => {
+						// uni.hideLoading();
+					},
+					fail: (e) => {
+						console.log("----e:", e);
+					}
+				});
+			},
+
+			ZhanTA(item, index) {
+				// this.list[index].is_like = 1;
+				// this.list[index].num_like++;
+				// return;
+				let that = this;
+				uni.request({
+					url: this.$apiHost + '/Article/zanTA',
+					data: {
+						uuid: getApp().globalData.uuid,
+						id: item.id
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("----:", res.data);
+						if (res.data.success == "yes") {
+							that.myinfo.article_list[index].is_like = 1;
+							that.myinfo.article_list[index].num_like++;
+						}
+					},
+					complete: (com) => {
+						// uni.hideLoading();
+					},
+					fail: (e) => {
+						console.log("----e:", e);
+					}
+				});
+			},
+
+
+			// 唤起新评论弹框
+			openComment() {
+				let ccRef = this.$refs["ccRef"];
+				ccRef.newCommentFun();
+			},
+			// 点赞回调事件
+			likeFun({
+				params
+			}, callback) {
+				console.log("likeFun", params);
+				uni.request({
+					url: this.$apiHost + '/ArticleReply/zanTA',
+					data: {
+						uuid: getApp().globalData.uuid,
+						id: params.id
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("点赞结果:", res.data);
+						if (res.data.success !== "yes") {
+							callback(res); // 请求失败时重置点赞效果
+						}
+					},
+					fail: (e) => {
+						console.log("点赞失败:", e);
+						callback(e); // 请求失败时重置点赞效果
+					}
+				});
+			},
+			// 评论回调事件
+			replyFun({
+				params
+			}, callback) {
+				// params = {
+				// 	...params,
+				// 	user_id: this.myInfo.user_id, // 用户id
+				// 	user_name: this.myInfo.user_name, // 用户名
+				// 	user_avatar: this.myInfo.user_avatar, // 用户头像地址
+				// 	user_content: this.commentValue, // 用户评论内容
+				// 	is_like: false, // 是否点赞
+				// 	like_count: 0, // 点赞数统计
+				// 	create_time: "刚刚", // 创建时间
+				// 	owner: true, // 是否为所有者 所有者可以进行删除 管理员默认true
+				// };
+				console.log("replyFun", params);
+				uni.request({
+					url: this.$apiHost + '/ArticleReply/new',
+					data: {
+						uuid: getApp().globalData.uuid,
+						article_id: this.userID, // 文章ID
+						content: params.user_content, // 评论内容
+						parent_id: params.parent_id || 0, // 父评论ID
+						reply_id: params.reply_id || 0, // 回复的评论ID
+						reply_name: params.reply_name || '' // 被回复人名称
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("评论结果:", res.data);
+						if (res.data.success === "yes") {
+							callback(res.data); // 评论成功,传入后端返回的数据
+						}
+					},
+					fail: (e) => {
+						console.log("评论失败:", e);
+						uni.showToast({
+							title: '评论失败,请重试',
+							icon: 'none'
+						});
+					}
+				});
+			},
+			/** 删除回调事件
+			 * mode 删除模式
+			 * -- bind: 当被删除的一级评论存在回复评论, 那么该评论内容变更显示为[当前评论内容已被移除]
+			 * -- only: 仅删除当前评论(后端删除相关联的回复评论, 否则总数显示不对)
+			 * -- all : 删除所有评论包括回复评论 前端遍历子评论上报
+			 */
+
+			deleteFun({
+				params,
+				mode
+			}, callback) {
+				console.log("deleteFun", {
+					params,
+					mode
+				});
+				// 当请求成功, 调用callback执行评论删除;
+				// Demo如下:
+				// axios.post("http://xxx/delete", { ids: params, mode }).then((res) => {
+				//   if (res.code === 0) {
+				//     callback(res);
+				//   }
+				// });
+				switch (mode) {
+					case "bind":
+						// 逻辑: 调用接口进行评论内容修改 update
+						setTimeout(() => callback(), 500); // 目前为了展示效果, 直接执行callback
+						break;
+					case "only":
+						// 逻辑: 调用接口删除一个评论 delete
+						setTimeout(() => callback(), 500); // 目前为了展示效果, 直接执行callback
+						break;
+					default:
+						// all
+						// 逻辑: 调用接口删除多个评论 [delete]
+						setTimeout(() => callback(), 500); // 目前为了展示效果, 直接执行callback
+						break;
+				}
+			},
+
+
+
+
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@import 'articleDetail.scss';
+</style>

+ 486 - 106
pages/index/index.vue

@@ -67,7 +67,7 @@
 							</view>
 						</view>
 					</template>
-					<template #uvSwiperCard>
+					<!-- <template #uvSwiperCard>
 						<view style="background: #fff;padding: 30rpx 0;">
 							<image src="/static/zhHans-text-icon/text-1.png" ref="classModel4"
 								style="width: 432rpx;height: 34rpx;margin-left: 28rpx;margin-bottom: 43rpx"></image>
@@ -84,17 +84,13 @@
 								</template>
 							</swiper-card>
 						</view>
-					</template>
+					</template> -->
 				</sortble>
 			</z-paging-cell>
 			<z-paging-cell>
 				<view class="tab-nav">
-					<view 
-						v-for="(tab, index) in tabs" 
-						:key="index"
-						:class="['tab-item', currentTab === index ? 'active' : '']"
-						@click="switchTab(index)"
-					>
+					<view v-for="(tab, index) in tabs" :key="index"
+						:class="['tab-item', currentTab === index ? 'active' : '']" @click="switchTab(index)">
 						{{ tab }}
 					</view>
 				</view>
@@ -103,11 +99,7 @@
 					<view class="hot-topics-header">
 						<text class="hot-topics-title">热搜资讯!</text>
 					</view>
-					<swiper 
-						class="hot-topics-swiper" 
-						:current="currentTopicPage"
-						@change="handleTopicPageChange"
-					>
+					<swiper class="hot-topics-swiper" :current="currentTopicPage" @change="handleTopicPageChange">
 						<swiper-item v-for="(page, pageIndex) in topicPages" :key="pageIndex">
 							<view class="hot-topics-list">
 								<view v-for="(topic, index) in page" :key="index" class="topic-item">
@@ -117,26 +109,64 @@
 											<text class="topic-title">{{ topic.title }}</text>
 											<text v-if="topic.isHot" class="hot-tag">HOT</text>
 										</view>
-										<text class="topic-participants">{{ topic.participants }}人正在热议</text>
+										<text class="topic-participants">{{ topic.num_like }}人正在热议</text>
 									</view>
 								</view>
 							</view>
 						</swiper-item>
 					</swiper>
 					<view class="indicator-dots">
-						<view 
-							v-for="i in 2" 
-							:key="i" 
-							:class="['dot', currentTopicPage === i-1 ? 'active' : '']"
-						></view>
+						<view v-for="i in 2" :key="i" :class="['dot', currentTopicPage === i-1 ? 'active' : '']"></view>
+					</view>
+				</view>
+
+				<!-- 根据当前标签显示不同样式的列表 -->
+				<!-- 关注列表 - 类似my.vue -->
+				<view v-if="currentTab === 0" class="follow-list">
+					<block v-if="followList.length > 0">
+						<view class="works-list">
+							<view class="work-item" v-for="(item, index) in followList" :key="index">
+								<image class="work-image" :src="item.images || item.img_url" mode="aspectFill"></image>
+								<view class="work-title">{{item.title || '作品'+index}}</view>
+							</view>
+						</view>
+					</block>
+					<view class="no-data" v-else-if="!isLoadingFollow">
+						<text>暂无关注数据</text>
 					</view>
 				</view>
 
-				<w-waterfall :data="currentList">
+				<!-- 推荐列表 - 瀑布流样式 -->
+				<w-waterfall v-if="currentTab === 1 && recommendList.length > 0" :data="recommendList">
 					<template v-slot:content="{item,width}">
-						<card :item="item" :width="width" :custom-style="{background:'#fff'}" textColor="#000"></card>
+						<card :item="formatItem(item)" :width="width" :custom-style="{background:'#fff'}" textColor="#000"></card>
 					</template>
 				</w-waterfall>
+				
+				<!-- 探索列表 - 热点新闻已经有现成的热搜资讯组件,只需添加新闻列表 -->
+				<view v-if="currentTab === 2 && newsList.length > 0" class="news-list">
+					<view class="news-grid">
+						<view class="news-item" v-for="(item, index) in newsList" :key="index">
+							<image class="news-image" :src="item.img_url || item.images" mode="aspectFill"></image>
+							<view class="news-title">{{item.title || '新闻标题'}}</view>
+							<view class="news-footer">
+								<view class="news-author">{{item.author || '作者'}}</view>
+								<view class="news-views">
+									<image src="/static/icon/icon-4.png" class="view-icon"></image>
+									<text>{{item.num_view || '0'}}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				
+				<view class="no-data" v-if="currentTab === 1 && recommendList.length === 0 && !isLoadingRecommend">
+					<text>暂无推荐数据</text>
+				</view>
+				
+				<view class="no-data" v-if="currentTab === 2 && newsList.length === 0 && !isLoadingNews">
+					<text>暂无新闻数据</text>
+				</view>
 			</z-paging-cell>
 		</z-paging>
 		<tabbar-vue :tabbars="tabbars" :currentIndex="0" ref="tabbar"></tabbar-vue>
@@ -220,27 +250,34 @@
 				followList: [], // 关注列表数据
 				recommendList: [], // 推荐列表数据
 				exploreList: [], // 探索列表数据
-				hotTopics: [
-					{ title: '今日热门话题一', participants: 275, isHot: true },
-					{ title: '人气话题二', participants: 183, isHot: false },
-					{ title: '热门讨论三', participants: 156, isHot: true },
-					{ title: '今日话题四', participants: 142, isHot: false },
-					{ title: '热门话题五', participants: 138, isHot: true },
-					{ title: '今日热点六', participants: 127, isHot: false },
-					{ title: '热门讨论七', participants: 119, isHot: true },
-					{ title: '人气话题八', participants: 108, isHot: false },
-					{ title: '今日话题九', participants: 96, isHot: true },
-					{ title: '热门话题十', participants: 89, isHot: false },
-				],
+				hotNewsList: [], // 热点新闻数据
+				newsList: [], // 新闻列表数据
+				followOffset: 0, // 关注列表偏移量
+				recommendOffset: 0, // 推荐列表偏移量
+				exploreOffset: 0, // 探索列表偏移量
+				newsOffset: 0, // 新闻列表偏移量
+				hasMoreFollow: true, // 是否有更多关注列表数据
+				hasMoreRecommend: true, // 是否有更多推荐列表数据
+				hasMoreExplore: true, // 是否有更多探索列表数据
+				hasMoreNews: true, // 是否有更多新闻列表数据
+				isLoadingFollow: false, // 是否正在加载关注列表
+				isLoadingRecommend: false, // 是否正在加载推荐列表
+				isLoadingExplore: false, // 是否正在加载探索列表
+				isLoadingNews: false, // 是否正在加载新闻列表
+				hotTopics: [],
 			}
 		},
 		computed: {
 			currentList() {
-				switch(this.currentTab) {
-					case 0: return this.followList;
-					case 1: return this.list; // 使用原有的list作为推荐列表
-					case 2: return this.exploreList;
-					default: return [];
+				switch (this.currentTab) {
+					case 0:
+						return this.followList;
+					case 1:
+						return this.recommendList; // 使用专门的推荐列表
+					case 2:
+						return this.exploreList;
+					default:
+						return [];
 				}
 			},
 			topicPages() {
@@ -253,54 +290,43 @@
 		},
 		onLoad() {
 			let that = this;
-			// this.$nextTick(() => {
-			// 	let step = [{
-			// 		el: '.step1',
-			// 		tips: '这里是第一步的介绍~',
-			// 		next: '下一步',
-			// 	}, {
-			// 		el: '.step2',
-			// 		tips: '这里是第二步的介绍~',
-			// 		next: '下一步',
-			// 	}, {
-			// 		el: '.step3',
-			// 		tips: '这里是第三步的介绍~',
-			// 		next: '下一步',
-			// 	}, {
-			// 		el: '.step4',
-			// 		tips: '这里是第四步的介绍~',
-			// 		next: '下一步',
-			// 	}, {
-			// 		el: '.step5',
-			// 		tips: '这里是第五步的介绍~',
-			// 		next: '下一步',
-			// 	}, {
-			// 		el: '.step6',
-			// 		tips: '这里是第六步的介绍~',
-			// 		next: '下一步',
-			// 	}, {
-			// 		el: '.step7',
-			// 		tips: '最后一步啦~',
-			// 		next: '完成',
-			// 	}]
-			// 	for (var i = 0; i < step.length; i++) {
-			// 		that.step.guideList.push(step[i])
-			// 	}
-			// 	setTimeout(() => {
-			// 		// that.$refs.guidance.start(that.step)
-			// 	}, 1000)
-			// })
-			this.getData().then(res => {
-				this.list = res.data;
-			});
+			// 不在onLoad中直接加载数据,避免与z-paging组件重复请求
+			// 让z-paging组件通过queryList方法控制数据加载
+		},
+		// 上拉加载更多
+		onReachBottom() {
+			this.loadMoreData();
 		},
 		// 下拉刷新数据
 		methods: {
 			queryList() {
-				this.getData().then(res => {
-					this.list = res.data;
-					this.$refs.paging.complete(this.list);
-				});
+				// 根据当前标签刷新数据
+				switch (this.currentTab) {
+					case 0:
+						// 重置关注列表
+						this.followList = [];
+						this.followOffset = 0;
+						this.hasMoreFollow = true;
+						this.loadFollowList();
+						break;
+					case 1:
+						// 重置推荐列表
+						this.recommendList = [];
+						this.recommendOffset = 0;
+						this.hasMoreRecommend = true;
+						this.loadRecommendList();
+						break;
+					case 2:
+						// 重置热点新闻和新闻列表
+						this.hotNewsList = [];
+						this.newsList = [];
+						this.newsOffset = 0;
+						this.hasMoreNews = true;
+						// 加载热点新闻和新闻列表
+						this.loadHotNews();
+						this.loadNewsList();
+						break;
+				}
 			},
 			async init() {
 				const {
@@ -381,19 +407,230 @@
 			},
 			loadTabData(index) {
 				// 这里添加加载不同标签数据的逻辑
-				switch(index) {
+				switch (index) {
 					case 0:
 						if (!this.followList.length) {
-							this.getData().then(res => {
-								this.followList = res.data;
-							});
+							this.loadFollowList();
+						}
+						break;
+					case 1:
+						if (!this.recommendList.length) {
+							this.loadRecommendList();
 						}
 						break;
 					case 2:
-						if (!this.exploreList.length) {
-							this.getData().then(res => {
-								this.exploreList = res.data;
-							});
+						// 加载热点新闻和新闻列表
+						if (!this.hotNewsList.length) {
+							this.loadHotNews();
+						}
+						if (!this.newsList.length) {
+							this.loadNewsList();
+						}
+						break;
+				}
+			},
+			loadFollowList() {
+				if (this.isLoadingFollow) return;
+				this.isLoadingFollow = true;
+				
+				uni.request({
+					url: this.$apiHost + '/Work/getlist',
+					data: {
+						uuid: getApp().globalData.uuid,
+						skey: getApp().globalData.skey,
+						type: 'attention', // 关注列表
+						offset: this.followOffset
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("关注列表数据:", res.data);
+						// 确保在任何情况下都完成加载
+						if (res.data.success == 'yes' && res.data.list && res.data.list.length > 0) {
+							// 只有当列表有数据时才追加
+							this.followList = [...this.followList, ...res.data.list];
+							this.followOffset += res.data.list.length;
+							
+							if (res.data.list.length < 20) {
+								this.hasMoreFollow = false;
+							}
+						} else {
+							// 如果列表为空,确保标记没有更多数据
+							this.hasMoreFollow = false;
+						}
+						
+						// 无论是否有数据,都需要通知z-paging组件完成刷新
+						if (this.$refs.paging) {
+							this.$refs.paging.complete(this.followList);
+						}
+					},
+					complete: () => {
+						this.isLoadingFollow = false;
+					},
+					fail: (e) => {
+						console.log("请求关注列表失败:", e);
+						this.isLoadingFollow = false;
+						// 加载失败时也要通知组件完成
+						if (this.$refs.paging) {
+							this.$refs.paging.complete(false);
+						}
+					}
+				});
+			},
+			loadRecommendList() {
+				if (this.isLoadingRecommend) return;
+				this.isLoadingRecommend = true;
+				
+				uni.request({
+					url: this.$apiHost + '/Work/getlist',
+					data: {
+						uuid: getApp().globalData.uuid,
+						skey: getApp().globalData.skey,
+						type: 'recommend', // 推荐列表
+						offset: this.recommendOffset
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("推荐列表数据:", res.data);
+						if (res.data.success == 'yes' && res.data.list && res.data.list.length > 0) {
+							this.recommendList = [...this.recommendList, ...res.data.list];
+							this.recommendOffset += res.data.list.length;
+							
+							if (res.data.list.length < 20) {
+								this.hasMoreRecommend = false;
+							}
+						} else {
+							this.hasMoreRecommend = false;
+						}
+						
+						// 无论是否有数据,都需要通知z-paging组件完成刷新
+						if (this.$refs.paging) {
+							this.$refs.paging.complete(this.recommendList);
+						}
+					},
+					complete: () => {
+						this.isLoadingRecommend = false;
+					},
+					fail: (e) => {
+						console.log("请求推荐列表失败:", e);
+						this.isLoadingRecommend = false;
+						// 加载失败时也要通知组件完成
+						if (this.$refs.paging) {
+							this.$refs.paging.complete(false);
+						}
+					}
+				});
+			},
+			loadHotNews() {
+				if (this.isLoadingExplore) return;
+				this.isLoadingExplore = true;
+				
+				uni.request({
+					url: this.$apiHost + '/Article/getlist',
+					data: {
+						uuid: getApp().globalData.uuid,
+						skey: getApp().globalData.skey,
+						type: 'hot' // 热点新闻
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("热点新闻数据:", res.data);
+						if (res.data.success == 'yes' && res.data.list && res.data.list.length > 0) {
+							this.hotNewsList = res.data.list;
+							
+							// 如果有热点新闻数据,更新热搜资讯
+							if (this.hotNewsList.length > 0) {
+								// 将API返回的热点新闻转换为热搜资讯格式
+								this.hotTopics = this.hotNewsList.map((item, index) => {
+									return {
+										title: item.title || '热门话题',
+										num_like: item.num_like || 0,
+										isHot: index % 2 === 0 // 偶数索引的设为热点
+									};
+								});
+							}
+						}
+					},
+					complete: () => {
+						this.isLoadingExplore = false;
+					},
+					fail: (e) => {
+						console.log("请求热点新闻失败:", e);
+						this.isLoadingExplore = false;
+					}
+				});
+			},
+			loadNewsList() {
+				if (this.isLoadingNews) return;
+				this.isLoadingNews = true;
+				
+				uni.request({
+					url: this.$apiHost + '/Article/getlist',
+					data: {
+						uuid: getApp().globalData.uuid,
+						skey: getApp().globalData.skey,
+						type: 'list', // 新闻列表
+						offset: this.newsOffset
+					},
+					header: {
+						"content-type": "application/json",
+						'sign': getApp().globalData.headerSign
+					},
+					success: (res) => {
+						console.log("新闻列表数据:", res.data);
+						if (res.data.success == 'yes' && res.data.list && res.data.list.length > 0) {
+							this.newsList = [...this.newsList, ...res.data.list];
+							this.newsOffset += res.data.list.length;
+							
+							if (res.data.list.length < 20) {
+								this.hasMoreNews = false;
+							}
+						} else {
+							this.hasMoreNews = false;
+						}
+						
+						// 无论是否有数据,都需要通知z-paging组件完成刷新
+						if (this.$refs.paging) {
+							this.$refs.paging.complete(this.newsList);
+						}
+					},
+					complete: () => {
+						this.isLoadingNews = false;
+					},
+					fail: (e) => {
+						console.log("请求新闻列表失败:", e);
+						this.isLoadingNews = false;
+						// 加载失败时也要通知组件完成
+						if (this.$refs.paging) {
+							this.$refs.paging.complete(false);
+						}
+					}
+				});
+			},
+			loadMoreData() {
+				// 根据当前标签加载更多数据
+				switch (this.currentTab) {
+					case 0:
+						if (this.hasMoreFollow && !this.isLoadingFollow) {
+							this.loadFollowList();
+						}
+						break;
+					case 1:
+						if (this.hasMoreRecommend && !this.isLoadingRecommend) {
+							this.loadRecommendList();
+						}
+						break;
+					case 2:
+						if (this.hasMoreNews && !this.isLoadingNews) {
+							this.loadNewsList();
 						}
 						break;
 				}
@@ -401,6 +638,17 @@
 			handleTopicPageChange(e) {
 				this.currentTopicPage = e.detail.current;
 			},
+			formatItem(item) {
+				// 处理接口返回的数据,使其适配card组件
+				return {
+					allowEdit: false,
+					image: item.images || item.img_url || item.image, // 优先使用images字段
+					w: item.width,
+					h: item.height,
+					title: item.title || '',
+					desc: item.desc || ''
+				}
+			},
 		}
 	}
 </script>
@@ -439,12 +687,12 @@
 		justify-content: center;
 		padding: 20rpx 0;
 		background: #161616;
-		
+
 		.tab-item {
 			padding: 0 30rpx;
 			color: #808080;
 			font-size: 28rpx;
-			
+
 			&.active {
 				color: #ffffff;
 				font-weight: bold;
@@ -457,47 +705,57 @@
 		background: #28292D;
 		margin: 20rpx;
 		border-radius: 16rpx;
-		
+
 		.hot-topics-header {
 			margin-bottom: 20rpx;
-			
+
 			.hot-topics-title {
 				font-size: 32rpx;
 				font-weight: bold;
 				color: #ffffff;
 			}
 		}
-		
+
 		.hot-topics-swiper {
 			height: 400rpx; // Adjust this value based on your content
 		}
-		
+
 		.hot-topics-list {
 			padding: 10rpx 0;
 		}
-		
+
 		.topic-item {
 			display: flex;
 			align-items: center;
 			padding: 15rpx 0;
-			
+
 			.topic-index {
 				width: 40rpx;
 				color: #808080;
+				text-align: center;
+				flex-shrink: 0;
 			}
-			
+
 			.topic-content {
 				flex: 1;
-				
+				width: 0; /* 重要:确保flex子项不会超过容器宽度 */
+				overflow: hidden;
+
 				.topic-title-row {
 					display: flex;
 					align-items: center;
-					
+					width: 100%;
+
 					.topic-title {
 						color: #ffffff;
 						font-size: 28rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						flex: 1;
+						width: 0; /* 重要:确保flex子项不会超过容器宽度 */
 					}
-					
+
 					.hot-tag {
 						margin-left: 10rpx;
 						padding: 4rpx 10rpx;
@@ -505,9 +763,10 @@
 						color: #ffffff;
 						font-size: 20rpx;
 						border-radius: 8rpx;
+						flex-shrink: 0;
 					}
 				}
-				
+
 				.topic-participants {
 					font-size: 24rpx;
 					color: #808080;
@@ -515,23 +774,144 @@
 				}
 			}
 		}
-		
+
 		.indicator-dots {
 			display: flex;
 			justify-content: center;
 			margin-top: 20rpx;
-			
+
 			.dot {
 				width: 12rpx;
 				height: 12rpx;
 				border-radius: 50%;
 				background: #808080;
 				margin: 0 6rpx;
-				
+
 				&.active {
 					background: #ffffff;
 				}
 			}
 		}
 	}
+
+	.follow-list {
+		padding: 20rpx;
+		background: #161616;
+		margin: 0rpx;
+		border-radius: 0rpx;
+
+		.works-list {
+			display: flex;
+			flex-wrap: wrap;
+			padding: 10rpx;
+
+			.work-item {
+				width: 48%;
+				margin: 1%;
+				margin-bottom: 20rpx;
+
+				.work-image {
+					width: 100%;
+					aspect-ratio: 1;
+					border-radius: 12rpx;
+				}
+
+				.work-title {
+					font-size: 28rpx;
+					color: #ffffff;
+					margin-top: 10rpx;
+					padding: 0 10rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+				}
+			}
+		}
+
+		.no-data {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+			padding: 60rpx 0;
+			
+			text {
+				color: #808080;
+				font-size: 28rpx;
+			}
+		}
+	}
+
+	.no-data {
+		text-align: center;
+		padding: 40rpx 0;
+		color: #808080;
+		font-size: 28rpx;
+	}
+
+	.news-list {
+		padding: 20rpx;
+		background: #161616;
+		
+		.news-grid {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			
+			.news-item {
+				width: 48%;
+				margin-bottom: 30rpx;
+				background: #28292D;
+				border-radius: 12rpx;
+				overflow: hidden;
+				
+				.news-image {
+					width: 100%;
+					aspect-ratio: 1;
+					height: auto;
+					border-radius: 12rpx 12rpx 0 0;
+				}
+				
+				.news-title {
+					font-size: 28rpx;
+					color: #ffffff;
+					padding: 15rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					height: 60rpx;
+					line-height: 60rpx;
+				}
+				
+				.news-footer {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					padding: 0 15rpx 15rpx;
+					
+					.news-author {
+						font-size: 24rpx;
+						color: #808080;
+						max-width: 60%;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+					}
+					
+					.news-views {
+						display: flex;
+						align-items: center;
+						font-size: 24rpx;
+						color: #808080;
+						
+						.view-icon {
+							width: 26rpx;
+							height: 18rpx;
+							margin-right: 6rpx;
+						}
+					}
+				}
+			}
+		}
+	}
 </style>

+ 210 - 253
pages/index/peopleHome.scss

@@ -7,283 +7,240 @@ page {
 	background-color: #ffffff;
 	width: 100%;
 }
-.header {
-	display: flex;
-	flex-direction: row;
-	justify-content: flex-start;
-	align-items: center;
-	width: 750rpx;height: 320rpx;
-	padding-top: calc(var(--status-bar-height) + 0rpx);
-	.left {
-		display: flex;flex-direction: row;width:200rpx;height:120rpx;
-		justify-content: center;
-		padding-left:50rpx;
-		image {
-			width:124rpx;height:40rpx;
-		}
-	}
-}
 .thread {
 	height: 20rpx;
 }
 .thread2 {
 	height: 60rpx;
 }
-.topUser {
+
+.topBody {
 	width:750rpx;
-	height:750rpx;
-	// display: flex;
-	// flex-direction: column;
-	// justify-content: flex-end;
-	// align-items: flex-end;
-	// padding-bottom: 136rpx;
-	position: relative;
-	.home_image{
-		width: 100%;
-		height: 100%;
-	}
-	.list {
-		position: absolute;
-		bottom: 10rpx;
-		width:100%;
+	.header {
 		display: flex;
 		flex-direction: row;
 		justify-content: flex-start;
-		align-items: flex-end;
-		.img {
-			width:84rpx;height:84rpx;margin-left: 20rpx;
-			image {
-				width:84rpx;height:84rpx;border-radius: 16rpx;border: solid 4rpx #fff;
-			}
-		}
-		.active {
-			width:136rpx;height:136rpx;
-			image {
-				width:136rpx;height:136rpx;border-radius: 24rpx;border: solid 4rpx #fff;
-			}
-		}
-	}
-}
-.body {
-	width:750rpx;margin-top:-30rpx;
-	border-radius: 28rpx 28rpx 0 0;padding-top:30rpx;
-	display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
-	.item {
-		display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
-		padding:30rpx 50rpx;color:#333;
-		.title {
-			font-weight: bold;margin-bottom: 0rpx;
-			display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
-			font-size: 40rpx;
-		}
-		.title2 {
-			color:#959595;padding-top: 8rpx;
-		}
-		.content {
-			font-size: 32rpx;color:#999;
-		}
-	}
-	.item2 {
-		width:100%;display: flex;flex-direction: row;justify-content: space-between;align-items: flex-start;
-		padding:10rpx 30rpx;color:#fff;
-		.left {
-			image {
-				width:136rpx;height:56rpx;
-			}
-		}
-		.more {
-			display: flex;flex-direction: row;justify-content: center;align-items: center;
-			font-size: 28rpx;color:#999;
-			image {
-				width:30rpx;
-			}
-		}
-	}
-}
-.list_wish {
-	display: flex;flex-direction: column;justify-content: flex-start;align-items: center;color:#fff;
-	width:750rpx;
-	
-	.item {
-		margin-top: 20rpx;color:#fff;font-size: 28rpx;
-		display: flex;flex-direction: row;justify-content: center;align-items: center;
-		width: 690rpx;height: 156rpx;
-		background: #28292D;
-		border-radius: 28rpx;
-		.avator {
-			width: 116rpx;height: 116rpx;margin-left:14rpx;
-			background: #161616;
-			border-radius: 28rpx;
-			display: flex;flex-direction: row;justify-content: center;align-items: center;
-			.icon {
-				width:100rpx;height:100rpx;border-radius: 20rpx;
-			}
-		}
-		.left {
-			width:370rpx;display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
-			margin-left:20rpx;
-			.name {
-				font-size: 32rpx;margin-bottom:20rpx;
-			}
-			.jindu {
-				display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
-				.bord {
-					width: 216rpx;height: 20rpx;margin-left:0rpx;
-					background: #0F0F0F;
-					border-radius: 24rpx;
-					.active {
-						width: 0%;height: 20rpx;
-						background: linear-gradient( 142deg, #FF5967 0%, #FF2A95 100%);
-						border-radius: 24rpx;
+		align-items: flex-start;
+		width:750rpx;
+		height:320rpx;
+		position: relative;
+		z-index: 10;
+		position: relative;
+		
+		.infoBg {
+			display: flex;
+			flex-direction: column;
+			justify-content: flex-start;
+			align-items: stretch;
+			width: 710rpx;
+			height: 320rpx;
+			margin: 20rpx 30rpx;
+			margin-top: 0rpx;
+			padding-top: calc(var(--status-bar-height) + 0rpx);
+			border-bottom: solid 1px rgba(120, 120, 120, 0.1);
+			.top_row {
+				display: flex;
+				flex-direction: row;
+				justify-content: space-between;
+				align-items: flex-start;
+				padding: 20rpx 0;
+				
+				.left {
+					padding-left: 30rpx;padding-right: 0rpx;
+					width:200rpx;
+					image {
+						width:136rpx;
+						height:136rpx;
+						border-radius: 100rpx;
+						border:solid 4rpx #fff;
+					}
+					.level {
+						display: flex;
+						flex-direction: row;
+						justify-content: center;
+						align-items: center;
+						height: 32rpx;
+						padding: 0 12rpx;
+						margin-left: 10rpx;
+						border-radius: 12rpx;
+						background: linear-gradient(90deg, #FF5869 0%, #F83881 100%);
+						font-size: 20rpx;
+						color: #fff;
+						font-weight: normal;
 					}
 				}
-				.tips {
-					margin-left:20rpx;font-weight: 400;font-size: 24rpx;color: #FF3D83;
+				.right {
+					color:#333;
+					width:500rpx;
+					font-size: 40rpx;padding-top: 20rpx;
+					.nickname {
+						font-weight: bold;
+						margin-bottom: 0rpx;
+						display: flex;
+						flex-direction: row;
+						justify-content: flex-start;
+						align-items: center;
+						image {
+							width:36rpx;
+							margin-left: 8rpx;
+							margin-right: 10rpx;
+						}
+						.level {
+							font-weight: normal;font-size: 32rpx;
+						}
+					}
+					.tags_list {
+						.tag {
+							margin-right: 8rpx;
+						}
+					}
+					.join_date {
+						display: flex;
+						flex-direction: row;
+						justify-content: flex-start;
+						align-items: center;
+						font-size: 28rpx;
+						color:#333;
+						image {
+							width:36rpx;
+							margin-left: 6rpx;
+						}
+					}
+					.follow_info {
+						display: none;
+					}
 				}
 			}
-		}
-		.right {
-			width:190rpx;
-			.btn_submit {
-				width: 168rpx;height: 72rpx;
-				background: linear-gradient( 142deg, #FF5967 0%, #FF2A95 100%);
-				border-radius: 28rpx 28rpx 28rpx 28rpx;
-				display: flex;flex-direction: column;justify-content: center;align-items: center;
-			}
-			.state {
-				width:168rpx;height: 72rpx;text-align: center;line-height: 72rpx;
-			}
-		}
-	}
-}
-.list_info {
-	display: flex;flex-direction: column;justify-content: flex-start;align-items: center;color:#fff;
-	width:750rpx;
-	
-	.item {
-		width: 690rpx;margin: 0rpx 0;color:#fff;font-size: 28rpx;padding:20rpx 0 0rpx;
-		display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
-		.avator {
-			width:88rpx;
-			.icon {
-				width:72rpx;height:72rpx;border-radius: 36rpx;
-			}
-		}
-		.tit {
-			width:470rpx;
-			.list1 {
-				display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
-				.name {
-					font-size: 32rpx;padding-right: 10rpx;height:40rpx;line-height: 40rpx;
-				}
-				.sex1 {
-					width: 76rpx;
-					height: 40rpx;
-					background: #423339;
-					border-radius: 16rpx 16rpx 16rpx 16rpx;
-					border: 2rpx solid #36D6FF;color:#36D6FF;
-					display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
-					image {
-						width:24rpx;height:24rpx;margin-left:4rpx;margin-right: 4rpx;
+			
+			.bottom_row {
+				padding: 20rpx 50rpx;
+				
+				.intro_row {
+					display: flex;
+					flex-direction: row;
+					align-items: center;
+					margin-bottom: 20rpx;
+					
+					.intro_text {
+						color: #999;
+						font-size: 28rpx;
 					}
-				}
-				.sex2 {
-					width: 76rpx;
-					height: 40rpx;
-					background: #423339;
-					border-radius: 16rpx 16rpx 16rpx 16rpx;
-					border: 2rpx solid #FF7D88;color:#FF7D88;
-					display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
-					image {
-						width:24rpx;height:24rpx;margin-left:4rpx;margin-right: 4rpx;
+					
+					.add_icon {
+						width: 28rpx;
+						margin-left: 10rpx;
 					}
 				}
-				.xinzuo {
-					width: 92rpx;height: 44rpx;margin-left:10rpx;line-height: 44rpx;
-					border-radius: 16rpx 16rpx 16rpx 16rpx;
-					border: 2rpx solid #404040;font-size: 20rpx;color: #D0D0D0;
-					display: flex;flex-direction: row;justify-content: center;align-items: center;
+				
+				.follow_info {
+					display: flex;
+					flex-direction: row;
+					align-items: center;
+					justify-content: flex-start;
+					
+					.num {
+						font-size: 36rpx;
+						font-weight: bold;
+						color: #333;
+						margin-right: 8rpx;
+					}
+					
+					.label {
+						font-size: 28rpx;
+						color: #999;
+					}
+					
+					.separator {
+						width: 2rpx;
+						height: 24rpx;
+						background-color: #E5E5E5;
+						margin: 0 30rpx;
+					}
 				}
 			}
-			.time {
-				color:#D0D0D0;font-size: 24rpx;
-			}
 		}
-		.state {
-			width:130rpx;font-size: 28rpx;font-weight: normal;text-align: right;
-			.status_1 {
-				color:#999;
-			}
-			.status_9 {
-				color:#36D6FF;
-			}
-			.status_2 {
-				color:#FE2D56;
-			}
+		.title {
+			font-size: 34rpx;
 		}
 	}
-	.content {
-		width: 690rpx;font-weight: 400;font-size: 28rpx;color: #FFFFFF;text-align: left;font-style: normal;
-		text-transform: none;padding:20rpx 0;
-		padding-left:88rpx;
+}
+.myinfo {
+	width: 690rpx;
+	display:flex;
+	flex-direction: column;
+	margin:20rpx 30rpx 20rpx;
+	justify-content: flex-start;
+	
+	.tips {
+		padding:20rpx 0rpx 0rpx;font-size: 36rpx;font-weight: bold;
 	}
-	.photo_list {
-		width: 690rpx;margin-bottom:0rpx;padding-left:88rpx;
-		border-radius: 28rpx;font-size: 28rpx;
-		display: flex;flex-direction: row;align-items: center;
+	
+	.numlist2 {
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center;
 		flex-wrap: wrap;
-		.img {
-			width:186rpx;height:186rpx;margin-bottom: 24rpx;margin-right: 12rpx;
-			image {
-				width:186rpx;height:186rpx;border-radius: 28rpx;border:solid 1px rgba(255, 255, 255, 0.2);
-			}
-		}
-		.right {
-			color:#fff;
-		}
-	}
-	.desc {
-		width: 690rpx;padding:0rpx 0 0rpx;padding-left:88rpx;
-		font-weight: 400;
-		font-size: 24rpx;
-		color: #999999;
-		line-height: 0rpx;
-		text-align: left;
-		font-style: normal;
-		text-transform: none;
-		display: flex;flex-direction: row;justify-content: space-between;align-items: center;
-		image {
-			width:40rpx;height:40rpx;
-		}
-		.addr {
-			width:200rpx;
-		}
-		.img {
-			display: flex;flex-direction: row;justify-content: center;align-items: center;
-			padding:0 0rpx 0 30rpx;font-size: 28rpx;color:#fff;
-			image {
-				margin-top:-8rpx;
+		border-radius: 2rpx;
+		.item {
+			display: flex;
+			justify-content: center;
+			padding:20rpx;
+			border-radius: 20rpx;
+			width:340rpx;
+			background: #ffffff;
+			margin:2rpx;
+			
+			image.icon {
+				width:100%;
+				border-radius: 20rpx;
+			}
+			.num {
+				color:#fff;
+				text-align: center;
+				display: flex;
+				flex-direction: column;
+				justify-content: center;
+				align-items: center;
+				width: 100%;
+				
+				.name {
+					font-size: 24rpx;
+					color:#BABABA;
+					margin-top: 12rpx;
+					width: 100%;
+					display: flex;
+					flex-direction: row;
+					justify-content: space-between;
+					align-items: center;
+					
+					.title-text {
+						flex: 1;
+						text-align: left;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+					}
+					
+					.like-count {
+						display: flex;
+						flex-direction: row;
+						align-items: center;
+						
+						.heart-icon {
+							width: 24rpx;
+							height: 24rpx;
+							margin-right: 6rpx;
+						}
+						
+						text {
+							font-size: 22rpx;
+							color: #FF5869;
+						}
+					}
+				}
 			}
 		}
 	}
-}
-.btn_submit {
-	width: 336rpx;height: 100rpx;margin:50rpx auto;
-	background: linear-gradient( 90deg, #FF536D 0%, #FF3B84 100%);
-	border-radius: 50rpx 50rpx 50rpx 50rpx;
-	display: flex;flex-direction: row;justify-content: center;align-items: center;
-	font-weight: bold;
-	font-size: 32rpx;
-	color: #FFFFFF;
-	image {
-		width:44rpx;height:44rpx;margin-right: 8rpx;margin-top:4rpx;
-	}
-}
-.btn {
-	text-align: center;
-	color: #fff;
-	padding: 20rpx;
-	margin: 50rpx;
-	border-radius: 20rpx;
-	background-color: #2979ff;
-  }
+	
+}

+ 132 - 278
pages/index/peopleHome.vue

@@ -1,30 +1,67 @@
 <template>
 	<view class="page">
-		<view class="topUser">
-			<image :src="home_image" class="home_image" mode="aspectFill"></image>
-			<view class="list">
-				<view class="img" :class="selImg==index?'active':''" v-for="(item,index) in image_list" :key="index"
-					@click="selPhoto(item,index)">
-					<image :src="item" mode="aspectFill"></image>
+		<view class="topBody">
+			<view class="header">
+				<view class="infoBg">
+					<view class="top_row">
+						<view class="left" @click="goPage('/pages/my/editInfo')">
+							<image class="img" mode="aspectFill" :src="myinfo.avator"></image>
+						</view>
+						<view class="right" @click="goPage('/pages/my/editInfo')">
+							<view class="nickname">
+								<text>{{myinfo.nickname}}</text>
+								<image src="../../static/icon/man.png" mode="widthFix" v-if="myinfo.sex_id == 1" />
+								<image src="../../static/icon/woman.png" mode="widthFix"
+									v-else-if="myinfo.sex_id == 2" />
+								<view class="level">Lv{{myinfo.my_level}}</view>
+							</view>
+							<view class="tags_list">
+								<block v-for="(item,index) in aihao_tags">
+									<uni-tag class="tag" type="primary" :inverted="false" :text="item" size="mini" />
+								</block>
+							</view>
+						</view>
+					</view>
+
+					<view class="bottom_row">
+						<view class="intro_row">
+							<text class="intro_text">{{myinfo.content}}</text>
+						</view>
+						<view class="follow_info">
+							<text class="num">{{myinfo.num_attention}}</text>
+							<text class="label">关注</text>
+							<text class="separator"></text>
+							<text class="num">{{myinfo.num_fans}}</text>
+							<text class="label">粉丝</text>
+							<text class="separator"></text>
+							<text class="num">{{myinfo.num_like}}</text>
+							<text class="label">获赞</text>
+						</view>
+					</view>
 				</view>
+
 			</view>
 		</view>
-		<view class="body">
-			<view class="item">
-				<view class="title">
-					标题标题标题标题标题
+		<view class="myinfo">
+			<view class="line"></view>
+			<view class="tips">3作品</view>
+			<view class="numlist2" style="margin-top: 60rpx;">
+				<view class="item" v-for="(item,index) in worksList" :key="index">
+					<view class="num">
+						<image class="icon" :src="item.images" mode="widthFix" />
+						<view class="name">
+							<text class="title-text">{{item.title || '作品'+index}}</text>
+							<view class="like-count">
+								<image class="heart-icon" src="../../static/icon/icon-7.png" mode="widthFix"></image>
+								<text>{{item.like_count || 0}}</text>
+							</view>
+						</view>
+					</view>
 				</view>
-				<view class="title2">
-					时间:2025-02-20
-				</view>
-			</view>
-			<view class="item">
-				<view class="content">内容内容内容内容内容</view>
 			</view>
 
-			<view class="list_info">
-				<view class="blankHeight"></view>
-			</view>
+			<!-- 加载更多提示 -->
+			<view class="loading-more" v-if="isLoading">加载中...</view>
 
 		</view>
 
@@ -35,24 +72,12 @@
 		<view class="thread2"></view>
 		<view class="thread2"></view>
 
-		<previewImage ref="previewImage" :opacity="0.8" :circular="true" :imgs="imgs" :descs="descs"></previewImage>
-
-		<CComment ref="ccRef" :myInfo="myInfo" :userInfo="userInfo" :tableData="tableData" :tableTotal.sync="tableTotal"
-			:deleteMode="deleteMode" @likeFun="likeFun" @replyFun="replyFun" @deleteFun="deleteFun"></CComment>
-		<view class="btn" @tap="openComment">发表新评论</view>
-		<view class="thread2"></view>
-
 	</view>
 </template>
 
 <script>
-	import CComment from "@/components/cc-comment/cc-comment.vue";
-	import previewImage from '@/components/kxj-previewImage/kxj-previewImage.vue'; //引用插件
 	export default {
-		components: {
-			previewImage,
-			CComment
-		},
+		components: {},
 		data() {
 			return {
 				title: '',
@@ -64,90 +89,29 @@
 				image_list: [],
 				imgs: [],
 				descs: [],
-				list_wish: [],
-
-
+				aihao_tags: [],
+				worksList: [],
+				activeTab: 0,
+				offset: 0,
+				hasMore: true,
+				isLoading: false,
 
 				myInfo: {
-					user_id: 1, // 用户id
-					user_name: "cc", // 用户名
-					user_avatar: "https://img0.baidu.com/it/u=2836960144,3650263035&fm=253&fmt=auto&app=138&f=JPEG?w=474&h=474", // 用户头像地址
-				},
-				// 文章作者信息(提示: 一般来自localstorage, 如果是实时获取的话, 那么获取到数据后再v-if显示评论组件)
-				userInfo: {
-					user_id: 2, // 用户id
-					user_name: "ikun", // 用户名
-					user_avatar: "https://pic1.zhimg.com/80/v2-a79071a705f55c5d88f6c74e6111fe84_720w.webp", // 用户头像地址
+					user_id: 1,
+					user_name: "cc",
+					user_avatar: "https://img0.baidu.com/it/u=2836960144,3650263035&fm=253&fmt=auto&app=138&f=JPEG?w=474&h=474",
 				},
-				deleteMode: "all", //删除模式
-				// 评论总数
-				tableTotal: 4,
-				// 评论表
-				tableData: [{
-						id: 120, // 评论id
-						parent_id: null, // 评论父级的id
-						reply_id: null, // 被回复评论的id
-						reply_name: null, // 被回复人的名称
-						user_id: 2, // 用户id
-						user_name: "ikun", // 用户名
-						user_avatar: "https://pic1.zhimg.com/80/v2-a79071a705f55c5d88f6c74e6111fe84_720w.webp", // 用户头像地址
-						user_content: "唱,跳,rap,篮球", // 用户评论内容
-						is_like: false, // 用户是否点赞
-						like_count: 120, // 点赞数统计
-						create_time: "2025-02-19 09:16", // 创建时间
-					},
-					{
-						id: 130, // 评论id
-						parent_id: 120, // 评论父级的id
-						reply_id: 120, // 被回复评论的id
-						reply_name: "ikun", // 被回复人的名称
-						user_id: 3, // 用户id
-						user_name: "小黑子", // 用户名
-						user_avatar: "https://pic2.zhimg.com/80/v2-06eade66ec837713d765b1557bf20b25_720w.webp", // 用户头像地址
-						user_content: "姬霓太美~祝自己生日快乐~~", // 用户评论内容
-						is_like: false, // 用户是否点赞
-						like_count: 67, // 点赞数统计
-						create_time: "2025-03-07 00:06", // 创建时间
-					},
-					{
-						id: 140, // 评论id
-						parent_id: 120, // 评论父级的id
-						reply_id: 130, // 被回复评论的id
-						reply_name: "小黑子", // 被回复人的名称
-						user_id: 4, // 用户id
-						user_name: "守护宗主维护宗门", // 用户名
-						user_avatar: "https://pic3.zhimg.com/80/v2-244696a62fa750b8570cf56bfaa5b26a_720w.webp", // 用户头像地址
-						user_content: "你露出鸡脚了", // 用户评论内容
-						is_like: false, // 用户是否点赞
-						like_count: 16, // 点赞数统计
-						create_time: "2025-05-10 17:08", // 创建时间
-					},
-					{
-						id: 150, // 评论id
-						parent_id: null, // 评论父级的id
-						reply_id: null, // 被回复评论的id
-						reply_name: null, // 被回复人的名称
-						user_id: 5, // 用户id
-						user_name: "音乐制作人", // 用户名
-						user_avatar: "https://pic2.zhimg.com/80/v2-88ec6f8c6d3305122664dd18a28730e5_720w.webp", // 用户头像地址
-						user_content: "只因你太美baby 只因你太美baby 只因你实在是太美baby 只因你太美baby 迎面走来的你让我如此蠢蠢欲动 这种感觉我从未有 Cause I got a crush on you who you 你是我的 我是你的 谁 再多一眼看一眼就会爆炸 再近一点靠近点快被融化", // 用户评论内容
-						is_like: true, // 用户是否点赞
-						like_count: 8, // 点赞数统计
-						create_time: "2025-12-21 00:45", // 创建时间
-					},
-				],
-
-
 			}
 		},
 		onLoad(parms) {
 			let self = this;
-			this.userID = parms.uid || 1069;
+			this.userID = parms.uid || 1;
 		},
 		onShow() {
 			uni.$emit('check_update');
+			// this.loadData();
 			this.loadData();
-			this.loadWishData();
+			this.loadWorksList();
 		},
 		methods: {
 			onLinqu(item) {
@@ -159,63 +123,16 @@
 				this.selImg = sel;
 				this.home_image = this.image_list[sel];
 			},
-			chatTA() {
-				// uni.navigateTo({
-				// 	url: '/pages/chat/detail?userID=1&nickName=' + encodeURIComponent("昵称") +
-				// 		"&conversationType=C2C"
-				// });
-				let conversationID = "";
-				let conversationType = "C2C";
-				let userID = "" + this.myinfo.userID;
-				let nickName = this.myinfo.nickname;
-
-				var jsonConversationID = encodeURIComponent(JSON.stringify(conversationID));
-				var jsonConversationType = encodeURIComponent(JSON.stringify(conversationType));
-
-				var jsonUserID = encodeURIComponent(JSON.stringify(userID));
-				var jsonNickName = encodeURIComponent(JSON.stringify(nickName));
-
-				uni.navigateTo({
-					url: "/pages/chat/detail?userID=" + jsonUserID + "&nickName=" + jsonNickName +
-						"&conversationID=" + jsonConversationID + "&conversationType=" + jsonConversationType
-				})
-			},
-			toArr(imgs) {
-				let arr = imgs.split("|");
-				return arr;
-			},
-			previewOpen(imgs1, index) {
-				this.imgs = imgs1.split("|");
-				setTimeout(() => this.$refs.previewImage.open(index), 0)
-				// 传入当前选中的图片地址或序号
-				return; //如需测试和uni原生预览差别可注释这两行
-			},
-			loadWishData() {
-				uni.request({
-					url: this.$apiHost + '/Wish/getMyList',
-					data: {
-						uuid: getApp().globalData.uuid,
-						userID: this.userID
-					},
-					header: {
-						'content-type': 'application/json'
-					},
-					success: (res) => {
-						console.log("res", res.data)
-						this.list_wish = res.data.list;
-					}
+			loadInfo() {
+				console.log({
+					uuid: getApp().globalData.uuid,
+					skey: getApp().globalData.skey
 				});
-			},
-			loadData() {
-				// console.log({
-				// 	uuid: getApp().globalData.uuid,
-				// 	skey: getApp().globalData.skey
-				// });
 				uni.request({
-					url: this.$apiHost + '/Member/getHomeInfo',
+					url: this.$apiHost + '/User/getinfo',
 					data: {
 						uuid: getApp().globalData.uuid,
-						userID: this.userID
+						skey: getApp().globalData.skey
 					},
 					header: {
 						"content-type": "application/json",
@@ -223,16 +140,19 @@
 					},
 					success: (res) => {
 						console.log("----:", res.data);
-						this.myinfo = res.data;
-						if (res.data.tags != "") {
-							this.tag_list = res.data.tags.split(",");
+						if (res.data.need_login == "yes") {
+							// getApp().globalData.skey = "";
+							// getApp().globalData.uuid = "";
+							// uni.removeStorageSync("wapptoken");
+							// uni.redirectTo({
+							// 	url: '/pages/login/login'
+							// });
+							// return;
 						}
-						if (res.data.images != "") {
-							this.image_list = res.data.images.split(",");
-							this.home_image = this.image_list[0];
-						} else {
-							this.home_image = "../../static/home/avator.png";
+						if (res.data.aihao) {
+							this.aihao_tags = res.data.aihao.split(",");
 						}
+						this.myinfo = res.data;
 					},
 					complete: (com) => {
 						// uni.hideLoading();
@@ -242,17 +162,26 @@
 					}
 				});
 			},
-
-			ZhanTA(item, index) {
-				// this.list[index].is_like = 1;
-				// this.list[index].num_like++;
-				// return;
-				let that = this;
+			toArr(imgs) {
+				let arr = imgs.split("|");
+				return arr;
+			},
+			previewOpen(imgs1, index) {
+				this.imgs = imgs1.split("|");
+				setTimeout(() => this.$refs.previewImage.open(index), 0)
+				// 传入当前选中的图片地址或序号
+				return; //如需测试和uni原生预览差别可注释这两行
+			},
+			loadData() {
+				// console.log({
+				// 	uuid: getApp().globalData.uuid,
+				// 	skey: getApp().globalData.skey
+				// });
 				uni.request({
-					url: this.$apiHost + '/Article/zanTA',
+					url: this.$apiHost + '/Member/getHomeInfo',
 					data: {
 						uuid: getApp().globalData.uuid,
-						id: item.id
+						userID: this.userID
 					},
 					header: {
 						"content-type": "application/json",
@@ -260,10 +189,11 @@
 					},
 					success: (res) => {
 						console.log("----:", res.data);
-						if (res.data.success == "yes") {
-							that.myinfo.article_list[index].is_like = 1;
-							that.myinfo.article_list[index].num_like++;
+						this.myinfo = res.data;
+						if (res.data.aihao) {
+							this.aihao_tags = res.data.aihao.split(",");
 						}
+						this.myinfo = res.data;
 					},
 					complete: (com) => {
 						// uni.hideLoading();
@@ -274,124 +204,48 @@
 				});
 			},
 
+			loadWorksList() {
+				if (this.isLoading) return;
+				this.isLoading = true;
 
-			// 唤起新评论弹框
-			openComment() {
-				let ccRef = this.$refs["ccRef"];
-				ccRef.newCommentFun();
-			},
-			// 点赞回调事件
-			likeFun({
-				params
-			}, callback) {
-				console.log("likeFun", params);
 				uni.request({
-					url: this.$apiHost + '/ArticleReply/zanTA',
+					url: this.$apiHost + '/Work/getlist',
 					data: {
 						uuid: getApp().globalData.uuid,
-						id: params.id
+						skey: getApp().globalData.skey,
+						ismy: 1, // 固定为1,表示获取自己的作品
+						offset: this.offset,
+						status: 1
 					},
 					header: {
 						"content-type": "application/json",
 						'sign': getApp().globalData.headerSign
 					},
 					success: (res) => {
-						console.log("点赞结果:", res.data);
-						if (res.data.success !== "yes") {
-							callback(res); // 请求失败时重置点赞效果
+						console.log("作品列表数据:", res.data);
+						if (res.data.success == 'yes' && res.data.list) {
+							if (res.data.list.length > 0) {
+								this.worksList = [...this.worksList, ...res.data.list];
+								this.offset += res.data.list.length;
+							}
+
+							if (res.data.list.length < 20) {
+								this.hasMore = false;
+							}
+						} else {
+							this.hasMore = false;
 						}
+
 					},
-					fail: (e) => {
-						console.log("点赞失败:", e);
-						callback(e); // 请求失败时重置点赞效果
-					}
-				});
-			},
-			// 评论回调事件
-			replyFun({
-				params
-			}, callback) {
-				// params = {
-				// 	...params,
-				// 	user_id: this.myInfo.user_id, // 用户id
-				// 	user_name: this.myInfo.user_name, // 用户名
-				// 	user_avatar: this.myInfo.user_avatar, // 用户头像地址
-				// 	user_content: this.commentValue, // 用户评论内容
-				// 	is_like: false, // 是否点赞
-				// 	like_count: 0, // 点赞数统计
-				// 	create_time: "刚刚", // 创建时间
-				// 	owner: true, // 是否为所有者 所有者可以进行删除 管理员默认true
-				// };
-				console.log("replyFun", params);
-				uni.request({
-					url: this.$apiHost + '/ArticleReply/new',
-					data: {
-						uuid: getApp().globalData.uuid,
-						article_id: this.userID, // 文章ID
-						content: params.user_content, // 评论内容
-						parent_id: params.parent_id || 0, // 父评论ID
-						reply_id: params.reply_id || 0, // 回复的评论ID
-						reply_name: params.reply_name || '' // 被回复人名称
-					},
-					header: {
-						"content-type": "application/json",
-						'sign': getApp().globalData.headerSign
-					},
-					success: (res) => {
-						console.log("评论结果:", res.data);
-						if (res.data.success === "yes") {
-							callback(res.data); // 评论成功,传入后端返回的数据
-						}
+					complete: () => {
+						this.isLoading = false;
 					},
 					fail: (e) => {
-						console.log("评论失败:", e);
-						uni.showToast({
-							title: '评论失败,请重试',
-							icon: 'none'
-						});
+						console.log("请求作品列表失败:", e);
+						this.isLoading = false;
 					}
 				});
 			},
-			/** 删除回调事件
-			 * mode 删除模式
-			 * -- bind: 当被删除的一级评论存在回复评论, 那么该评论内容变更显示为[当前评论内容已被移除]
-			 * -- only: 仅删除当前评论(后端删除相关联的回复评论, 否则总数显示不对)
-			 * -- all : 删除所有评论包括回复评论 前端遍历子评论上报
-			 */
-
-			deleteFun({
-				params,
-				mode
-			}, callback) {
-				console.log("deleteFun", {
-					params,
-					mode
-				});
-				// 当请求成功, 调用callback执行评论删除;
-				// Demo如下:
-				// axios.post("http://xxx/delete", { ids: params, mode }).then((res) => {
-				//   if (res.code === 0) {
-				//     callback(res);
-				//   }
-				// });
-				switch (mode) {
-					case "bind":
-						// 逻辑: 调用接口进行评论内容修改 update
-						setTimeout(() => callback(), 500); // 目前为了展示效果, 直接执行callback
-						break;
-					case "only":
-						// 逻辑: 调用接口删除一个评论 delete
-						setTimeout(() => callback(), 500); // 目前为了展示效果, 直接执行callback
-						break;
-					default:
-						// all
-						// 逻辑: 调用接口删除多个评论 [delete]
-						setTimeout(() => callback(), 500); // 目前为了展示效果, 直接执行callback
-						break;
-				}
-			},
-
-
 
 
 		}

+ 1 - 1
pages/my/my.vue

@@ -331,7 +331,7 @@
 					data: {
 						uuid: getApp().globalData.uuid,
 						skey: getApp().globalData.skey,
-						ismy: 1, // 固定为1,表示获取自己的作品
+						type: 'my', // 固定为1,表示获取自己的作品
 						offset: this.offset,
 						status: status
 					},