<template>
							 | 
						|
									<view class="fans-list-page">
							 | 
						|
										<navbar title="粉丝列表" leftClick @leftClick="$utils.navigateBack" />
							 | 
						|
								
							 | 
						|
										<!-- 标签页切换 -->
							 | 
						|
										<view class="tabs-container">
							 | 
						|
											<uv-tabs 
							 | 
						|
												:list="tabsList" 
							 | 
						|
												:current="currentTab"
							 | 
						|
												:activeStyle="{color: '#333', fontWeight: 600}"
							 | 
						|
												lineColor="#5baaff" 
							 | 
						|
												lineHeight="6rpx" 
							 | 
						|
												lineWidth="40rpx"
							 | 
						|
												keyName="name"
							 | 
						|
												@click="onTabClick"
							 | 
						|
											/>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 用户列表 -->
							 | 
						|
										<view class="user-list">
							 | 
						|
											<view 
							 | 
						|
												class="user-item" 
							 | 
						|
												v-for="(user, index) in userList" 
							 | 
						|
												:key="index"
							 | 
						|
												@click="goToUserProfile(user)"
							 | 
						|
											>
							 | 
						|
												<view class="user-avatar">
							 | 
						|
													<image :src="user.headImage" mode="aspectFill"></image>
							 | 
						|
												</view>
							 | 
						|
												
							 | 
						|
												<view class="user-info">
							 | 
						|
													<view class="user-name">{{ user.nickName }}</view>
							 | 
						|
													<view class="user-desc">
							 | 
						|
														<view class="user-tags">
							 | 
						|
															<text class="tag" v-if="user.sex">{{ user.sex }}</text>
							 | 
						|
															<text class="tag" v-if="user.address">{{ user.address }}</text>
							 | 
						|
															<text class="auth-tag" v-if="user.idCardOpen">{{ getAuthText(user.idCardOpen) }}</text>
							 | 
						|
														</view>
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
												
							 | 
						|
												<view class="user-action" v-if="!isCurrentUserPage">
							 | 
						|
													<button 
							 | 
						|
														class="follow-btn" 
							 | 
						|
														:class="{followed: user.isFollowed}"
							 | 
						|
														@click.stop="toggleFollow(user, index)"
							 | 
						|
													>
							 | 
						|
														{{ user.isFollowed ? '已关注' : '关注' }}
							 | 
						|
													</button>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 空状态 -->
							 | 
						|
										<view v-if="!loading && userList.length === 0" class="empty-state">
							 | 
						|
											<uv-empty 
							 | 
						|
												:text="emptyText" 
							 | 
						|
												icon="account"
							 | 
						|
												iconSize="120"
							 | 
						|
											></uv-empty>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 加载状态 -->
							 | 
						|
										<view v-if="loading" class="loading-state">
							 | 
						|
											<uv-loading-icon size="40"></uv-loading-icon>
							 | 
						|
											<text>加载中...</text>
							 | 
						|
										</view>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { mapState } from 'vuex'
							 | 
						|
									
							 | 
						|
									export default {
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												userId: '', // 用户ID
							 | 
						|
												type: 'fans', // fans: 粉丝, following: 关注
							 | 
						|
												currentTab: 0,
							 | 
						|
												tabsList: [
							 | 
						|
													{ name: '粉丝', type: 'fans' },
							 | 
						|
													{ name: '关注', type: 'following' }
							 | 
						|
												],
							 | 
						|
												userList: [], // 用户列表
							 | 
						|
												loading: false,
							 | 
						|
												// 模拟数据
							 | 
						|
												mockFansData: [
							 | 
						|
													{
							 | 
						|
														id: '1',
							 | 
						|
														nickName: '小美同学',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=1',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '北京',
							 | 
						|
														idCardOpen: 1,
							 | 
						|
														isFollowed: false
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '2',
							 | 
						|
														nickName: '程序员小王',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=2',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '上海',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '3',
							 | 
						|
														nickName: '设计师小李',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=3',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '深圳',
							 | 
						|
														idCardOpen: 0,
							 | 
						|
														isFollowed: false
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '4',
							 | 
						|
														nickName: '产品经理老张',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=4',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '广州',
							 | 
						|
														idCardOpen: 1,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '5',
							 | 
						|
														nickName: '运营小姐姐',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=5',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '杭州',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: false
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '6',
							 | 
						|
														nickName: '前端工程师',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=6',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '成都',
							 | 
						|
														idCardOpen: 1,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '7',
							 | 
						|
														nickName: 'UI设计师',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=7',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '武汉',
							 | 
						|
														idCardOpen: 0,
							 | 
						|
														isFollowed: false
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '8',
							 | 
						|
														nickName: '后端大神',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=8',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '西安',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: true
							 | 
						|
													}
							 | 
						|
												],
							 | 
						|
												mockFollowingData: [
							 | 
						|
													{
							 | 
						|
														id: '9',
							 | 
						|
														nickName: '技术大牛',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=9',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '北京',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '10',
							 | 
						|
														nickName: '设计总监',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=10',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '上海',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '11',
							 | 
						|
														nickName: '产品总监',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=11',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '深圳',
							 | 
						|
														idCardOpen: 1,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '12',
							 | 
						|
														nickName: '运营总监',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=12',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '广州',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '13',
							 | 
						|
														nickName: '架构师',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=13',
							 | 
						|
														sex: '男',
							 | 
						|
														address: '杭州',
							 | 
						|
														idCardOpen: 1,
							 | 
						|
														isFollowed: true
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														id: '14',
							 | 
						|
														nickName: '资深设计师',
							 | 
						|
														headImage: 'https://picsum.photos/100/100?random=14',
							 | 
						|
														sex: '女',
							 | 
						|
														address: '成都',
							 | 
						|
														idCardOpen: 2,
							 | 
						|
														isFollowed: true
							 | 
						|
													}
							 | 
						|
												]
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										computed: {
							 | 
						|
											...mapState(['userInfo']),
							 | 
						|
											
							 | 
						|
											// 页面标题
							 | 
						|
											pageTitle() {
							 | 
						|
												return this.type === 'fans' ? '粉丝列表' : '关注列表'
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 空状态文本
							 | 
						|
											emptyText() {
							 | 
						|
												return this.type === 'fans' ? '暂无粉丝' : '暂无关注'
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 是否是当前用户的页面
							 | 
						|
											isCurrentUserPage() {
							 | 
						|
												return this.userId === this.userInfo.id
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad(options) {
							 | 
						|
											this.userId = options.userId || this.userInfo.id
							 | 
						|
											this.type = options.type || 'fans'
							 | 
						|
											
							 | 
						|
											// 设置初始tab
							 | 
						|
											this.currentTab = this.type === 'fans' ? 0 : 1
							 | 
						|
											
							 | 
						|
											this.loadUserList()
							 | 
						|
										},
							 | 
						|
										onPullDownRefresh() {
							 | 
						|
											this.loadUserList()
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											// 返回上一页
							 | 
						|
											goBack() {
							 | 
						|
												uni.navigateBack()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 标签页切换
							 | 
						|
											onTabClick(item) {
							 | 
						|
												this.currentTab = item.index
							 | 
						|
												this.type = item.type
							 | 
						|
												this.loadUserList()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 获取认证文本
							 | 
						|
											getAuthText(status) {
							 | 
						|
												const authTexts = ['审核中', '个人认证', '店铺认证']
							 | 
						|
												return authTexts[status] || '未认证'
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 跳转到用户主页
							 | 
						|
											goToUserProfile(user) {
							 | 
						|
												uni.navigateTo({
							 | 
						|
													url: `/pages_order/profile/userProfile?userId=${user.id}`
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 切换关注状态
							 | 
						|
											toggleFollow(user, index) {
							 | 
						|
												if (!uni.getStorageSync('token')) {
							 | 
						|
													uni.showToast({
							 | 
						|
														title: '请先登录',
							 | 
						|
														icon: 'none'
							 | 
						|
													})
							 | 
						|
													return
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
												const isFollowed = !user.isFollowed
							 | 
						|
												
							 | 
						|
												// 模拟API调用
							 | 
						|
												setTimeout(() => {
							 | 
						|
													// 更新本地数据
							 | 
						|
													this.userList[index].isFollowed = isFollowed
							 | 
						|
													
							 | 
						|
													// 同时更新模拟数据源
							 | 
						|
													if (this.type === 'fans') {
							 | 
						|
														const mockIndex = this.mockFansData.findIndex(item => item.id === user.id)
							 | 
						|
														if (mockIndex !== -1) {
							 | 
						|
															this.mockFansData[mockIndex].isFollowed = isFollowed
							 | 
						|
														}
							 | 
						|
													} else {
							 | 
						|
														const mockIndex = this.mockFollowingData.findIndex(item => item.id === user.id)
							 | 
						|
														if (mockIndex !== -1) {
							 | 
						|
															this.mockFollowingData[mockIndex].isFollowed = isFollowed
							 | 
						|
														}
							 | 
						|
													}
							 | 
						|
													
							 | 
						|
													uni.showToast({
							 | 
						|
														title: isFollowed ? '关注成功' : '取消关注',
							 | 
						|
														icon: 'success'
							 | 
						|
													})
							 | 
						|
												}, 500)
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 加载用户列表
							 | 
						|
											loadUserList() {
							 | 
						|
												this.loading = true
							 | 
						|
												
							 | 
						|
												// 模拟网络延迟
							 | 
						|
												setTimeout(() => {
							 | 
						|
													this.loading = false
							 | 
						|
													uni.stopPullDownRefresh()
							 | 
						|
													
							 | 
						|
													// 使用模拟数据
							 | 
						|
													if (this.type === 'fans') {
							 | 
						|
														this.userList = [...this.mockFansData]
							 | 
						|
													} else {
							 | 
						|
														this.userList = [...this.mockFollowingData]
							 | 
						|
													}
							 | 
						|
													
							 | 
						|
													// 模拟API调用成功
							 | 
						|
													console.log(`加载${this.type === 'fans' ? '粉丝' : '关注'}列表成功`)
							 | 
						|
												}, 1000)
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped lang="scss">
							 | 
						|
									.fans-list-page {
							 | 
						|
										background-color: #f5f5f5;
							 | 
						|
										min-height: 100vh;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.navbar {
							 | 
						|
										position: fixed;
							 | 
						|
										top: 0;
							 | 
						|
										left: 0;
							 | 
						|
										right: 0;
							 | 
						|
										z-index: 100;
							 | 
						|
										height: 88rpx;
							 | 
						|
										background: #fff;
							 | 
						|
										border-bottom: 1rpx solid #eee;
							 | 
						|
										display: flex;
							 | 
						|
										align-items: center;
							 | 
						|
										justify-content: space-between;
							 | 
						|
										padding: 0 30rpx;
							 | 
						|
										padding-top: var(--status-bar-height, 44rpx);
							 | 
						|
										
							 | 
						|
										.nav-title {
							 | 
						|
											color: #333;
							 | 
						|
											font-size: 32rpx;
							 | 
						|
											font-weight: 600;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										.nav-left, .nav-right {
							 | 
						|
											width: 60rpx;
							 | 
						|
											height: 60rpx;
							 | 
						|
											display: flex;
							 | 
						|
											align-items: center;
							 | 
						|
											justify-content: center;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.tabs-container {
							 | 
						|
										margin-top: 88rpx;
							 | 
						|
										padding-top: var(--status-bar-height, 44rpx);
							 | 
						|
										background: #fff;
							 | 
						|
										border-bottom: 1rpx solid #eee;
							 | 
						|
										padding-left: 20rpx;
							 | 
						|
										padding-right: 20rpx;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.user-list {
							 | 
						|
										padding: 20rpx;
							 | 
						|
										
							 | 
						|
										.user-item {
							 | 
						|
											display: flex;
							 | 
						|
											align-items: center;
							 | 
						|
											background: #fff;
							 | 
						|
											padding: 30rpx;
							 | 
						|
											margin-bottom: 20rpx;
							 | 
						|
											border-radius: 16rpx;
							 | 
						|
											box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
							 | 
						|
											
							 | 
						|
											.user-avatar {
							 | 
						|
												width: 100rpx;
							 | 
						|
												height: 100rpx;
							 | 
						|
												border-radius: 50rpx;
							 | 
						|
												overflow: hidden;
							 | 
						|
												margin-right: 30rpx;
							 | 
						|
												
							 | 
						|
												image {
							 | 
						|
													width: 100%;
							 | 
						|
													height: 100%;
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
											.user-info {
							 | 
						|
												flex: 1;
							 | 
						|
												
							 | 
						|
												.user-name {
							 | 
						|
													font-size: 32rpx;
							 | 
						|
													font-weight: 600;
							 | 
						|
													color: #333;
							 | 
						|
													margin-bottom: 12rpx;
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
												.user-desc {
							 | 
						|
													.user-tags {
							 | 
						|
														display: flex;
							 | 
						|
														flex-wrap: wrap;
							 | 
						|
														gap: 8rpx;
							 | 
						|
														
							 | 
						|
														.tag {
							 | 
						|
															background: #f0f0f0;
							 | 
						|
															color: #666;
							 | 
						|
															padding: 4rpx 12rpx;
							 | 
						|
															border-radius: 12rpx;
							 | 
						|
															font-size: 20rpx;
							 | 
						|
														}
							 | 
						|
														
							 | 
						|
														.auth-tag {
							 | 
						|
															background: #52c41a;
							 | 
						|
															color: #fff;
							 | 
						|
															padding: 4rpx 12rpx;
							 | 
						|
															border-radius: 12rpx;
							 | 
						|
															font-size: 20rpx;
							 | 
						|
														}
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
											.user-action {
							 | 
						|
												.follow-btn {
							 | 
						|
													background: #5baaff;
							 | 
						|
													color: #fff;
							 | 
						|
													border: none;
							 | 
						|
													padding: 16rpx 32rpx;
							 | 
						|
													border-radius: 30rpx;
							 | 
						|
													font-size: 24rpx;
							 | 
						|
													
							 | 
						|
													&.followed {
							 | 
						|
														background: #f0f0f0;
							 | 
						|
														color: #666;
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.empty-state {
							 | 
						|
										padding: 100rpx 0;
							 | 
						|
										text-align: center;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.loading-state {
							 | 
						|
										display: flex;
							 | 
						|
										flex-direction: column;
							 | 
						|
										align-items: center;
							 | 
						|
										padding: 60rpx 0;
							 | 
						|
										
							 | 
						|
										text {
							 | 
						|
											margin-top: 20rpx;
							 | 
						|
											font-size: 28rpx;
							 | 
						|
											color: #999;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</style> 
							 |