<template>
	<view class="sign-record-popup" :class="{'dark-mode': isDarkMode}">
		<uv-popup ref="popup" mode="center" :closeOnClickOverlay="true" :customStyle="popupStyle">
			<view class="content theme-transition">
				<view class="popup-header">
					<view class="popup-title theme-transition">签到记录</view>
					<view class="close-btn" @click="close">
						<uv-icon name="close" :color="isDarkMode ? '#ccc' : '#666'" size="32rpx"></uv-icon>
					</view>
				</view>
				
				<view class="record-list">
					<scroll-view scroll-y class="record-scroll">
						<view class="record-item" v-for="(record, index) in recordList" :key="index">
							<view class="record-left">
								<view class="record-date">{{ formatDate(record.createTime) }}</view>
								<view class="record-task">{{ record.taskName || '每日签到' }}</view>
							</view>
							<view class="record-right">
								<text class="record-reward">+{{ record.num || 1 }}推荐票</text>
								<text class="record-status success">已签到</text>
							</view>
						</view>
						<view class="no-record" v-if="recordList.length === 0 && !loading">暂无签到记录</view>
						<view class="loading" v-if="loading">加载中...</view>
					</scroll-view>
				</view>
			</view>
		</uv-popup>
	</view>
</template>

<script>
	import themeMixin from '@/mixins/themeMode.js'
	
	export default {
		name: 'signRecordPopup',
		mixins: [themeMixin],
		data() {
			return {
				recordList: [],
				loading: false,
				pageNo: 1,
				pageSize: 20
			}
		},
		computed: {
			popupStyle() {
				return {
					'background': this.isDarkMode ? '#232323' : '#fff',
					'border-radius': '24rpx',
					'width': '600rpx',
					'max-height': '700rpx'
				}
			}
		},
		methods: {
			// 打开弹窗
			open() {
				this.$refs.popup.open();
				this.getRecordList();
			},
			
			// 关闭弹窗
			close() {
				this.$refs.popup.close();
			},
			
			// 获取签到记录列表
			getRecordList() {
				this.loading = true;
				this.$fetch('getSignTaskRecordPage', {
					pageNo: this.pageNo,
					pageSize: this.pageSize
				}).then(res => {
					this.recordList = res.records || [];
					this.loading = false;
				}).catch(err => {
					console.error('获取签到记录失败:', err);
					this.loading = false;
				});
			},
			
			// 格式化日期
			formatDate(dateString) {
				if (!dateString) return '';
				const date = new Date(dateString);
				const month = (date.getMonth() + 1).toString().padStart(2, '0');
				const day = date.getDate().toString().padStart(2, '0');
				return `${month}-${day}`;
			}
		}
	}
</script>

<style lang="scss" scoped>
	.sign-record-popup {
		.content {
			padding: 0;
			
			.popup-header {
				display: flex;
				justify-content: space-between;
				align-items: center;
				padding: 32rpx 32rpx 24rpx;
				border-bottom: 1rpx solid #f5f5f5;
				
				.popup-title {
					font-size: 32rpx;
					font-weight: bold;
					color: #222;
				}
				
				.close-btn {
					width: 48rpx;
					height: 48rpx;
					display: flex;
					align-items: center;
					justify-content: center;
				}
			}
			
			.record-list {
				.record-scroll {
					max-height: 560rpx;
					
					.record-item {
						display: flex;
						justify-content: space-between;
						align-items: center;
						padding: 32rpx;
						border-bottom: 1rpx solid #f8f8f8;
						
						.record-left {
							display: flex;
							flex-direction: column;
							align-items: flex-start;
							
							.record-date {
								font-size: 28rpx;
								color: #333;
								font-weight: 500;
								margin-bottom: 8rpx;
							}
							
							.record-task {
								font-size: 24rpx;
								color: #999;
							}
						}
						
						.record-right {
							display: flex;
							flex-direction: column;
							align-items: flex-end;
							
							.record-reward {
								font-size: 26rpx;
								color: #ff6b35;
								margin-bottom: 4rpx;
								font-weight: 500;
							}
							
							.record-status {
								font-size: 22rpx;
								
								&.success {
									color: #4caf50;
								}
							}
						}
					}
					
					.no-record, .loading {
						text-align: center;
						padding: 80rpx 32rpx;
						color: #999;
						font-size: 26rpx;
					}
				}
			}
		}
		
		&.dark-mode {
			.content {
				.popup-header {
					border-bottom-color: #333;
					
					.popup-title {
						color: #eee;
					}
				}
				
				.record-list {
					.record-scroll {
						.record-item {
							border-bottom-color: #333;
							
							.record-left {
								.record-date {
									color: #ccc;
								}
								
								.record-task {
									color: #888;
								}
							}
						}
						
						.no-record, .loading {
							color: #666;
						}
					}
				}
			}
		}
	}
</style>