<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> 