<template>
	<view class="approval-page">
		<view class="header">
			<view class="back" @click="goBack">
				<text class="iconfont icon-xiangzuo"></text>
			</view>
			<view class="title">审批处理</view>
			<view class="right"></view>
		</view>
		
		<view class="content">
			<!-- 审批状态筛选 -->
			<view class="filter-section">
				<view class="filter-tab" :class="activeStatus === 'all' ? 'active' : ''" @click="activeStatus = 'all'">全部</view>
				<view class="filter-tab" :class="activeStatus === 'pending' ? 'active' : ''" @click="activeStatus = 'pending'">待处理</view>
				<view class="filter-tab" :class="activeStatus === 'processed' ? 'active' : ''" @click="activeStatus = 'processed'">已处理</view>
			</view>
			
			<!-- 审批列表 -->
			<view class="approval-list">
				<view class="approval-item" v-for="(item, index) in filteredApprovals" :key="index">
					<view class="item-header">
						<view class="header-left">
							<text class="approval-type">{{ item.type }}</text>
							<text class="approval-status" :class="statusClassMap[item.status]">{{ item.status }}</text>
						</view>
						<text class="approval-time">{{ item.time }}</text>
					</view>
					<view class="item-body">
						<view class="info-item">
							<text class="label">申请人：</text>
							<text class="value">{{ item.applicant }}</text>
						</view>
						<view class="info-item">
							<text class="label">申请内容：</text>
							<text class="value">{{ item.content }}</text>
						</view>
						<view class="info-item" v-if="item.amount">
							<text class="label">申请数量：</text>
							<text class="value">{{ item.amount }}件</text>
						</view>
					</view>
					<view class="item-footer" v-if="item.status === '待处理'">
						<view class="reject-btn" @click="rejectApproval(item.id)">拒绝</view>
						<view class="approve-btn" @click="approveApproval(item.id)">同意</view>
					</view>
					<view class="item-footer" v-else>
						<text class="process-result">{{ item.result || '' }}</text>
					</view>
				</view>
			</view>
			
			<!-- 空状态 -->
			<view class="empty-state" v-if="filteredApprovals.length === 0">
				<text class="iconfont icon-wushuju"></text>
				<text class="empty-text">暂无审批单据</text>
			</view>
		</view>
	</view>
</template>

<script>
export default {
	data() {
		return {
			activeStatus: 'all',
			statusClassMap: {
				'待处理': 'status-pending',
				'已处理': 'status-processed'
			},
			approvals: [
				{ id: 1, type: '采购申请', status: '待处理', time: '2026-03-07 10:00', applicant: '张三', content: '采购有机蔬菜100斤', amount: 100 },
				{ id: 2, type: '领用申请', status: '待处理', time: '2026-03-07 09:30', applicant: '李四', content: '领用维修耗材', amount: 50 },
				{ id: 3, type: '采购申请', status: '已处理', time: '2026-03-06 16:00', applicant: '王五', content: '采购新鲜水果50斤', amount: 50, result: '已同意' },
				{ id: 4, type: '领用申请', status: '已处理', time: '2026-03-06 14:00', applicant: '赵六', content: '领用办公用品', amount: 30, result: '已拒绝' }
			]
		};
	},
	computed: {
		filteredApprovals() {
			if (this.activeStatus === 'all') {
				return this.approvals;
			} else if (this.activeStatus === 'pending') {
				return this.approvals.filter(item => item.status === '待处理');
			} else if (this.activeStatus === 'processed') {
				return this.approvals.filter(item => item.status === '已处理');
			}
		}
	},
	methods: {
		goBack() {
			uni.navigateBack();
		},
		approveApproval(id) {
			// 模拟同意审批
			uni.showToast({
				title: '审批已同意',
				icon: 'success'
			});
			
			// 更新审批状态
			const approval = this.approvals.find(item => item.id === id);
			if (approval) {
				approval.status = '已处理';
				approval.result = '已同意';
			}
		},
		rejectApproval(id) {
			// 模拟拒绝审批
			uni.showToast({
				title: '审批已拒绝',
				icon: 'none'
			});
			
			// 更新审批状态
			const approval = this.approvals.find(item => item.id === id);
			if (approval) {
				approval.status = '已处理';
				approval.result = '已拒绝';
			}
		}
	}
};
</script>

<style lang="scss">
.approval-page {
	.header {
		display: flex;
		align-items: center;
		justify-content: space-between;
		height: 88rpx;
		padding: 0 30rpx;
		background-color: #409EFF;
		color: #fff;
		
		.back {
			width: 60rpx;
			height: 100%;
			display: flex;
			align-items: center;
			
			.iconfont {
				font-size: 32rpx;
				color: #fff;
			}
		}
		
		.title {
			font-size: 32rpx;
			font-weight: 600;
		}
		
		.right {
			width: 60rpx;
		}
	}
	
	.content {
		padding: 30rpx;
		
		.filter-section {
			display: flex;
			margin-bottom: 30rpx;
			background-color: #fff;
			border-radius: 10rpx;
			box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
			
			.filter-tab {
				flex: 1;
				height: 80rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				font-size: 26rpx;
				color: #666;
				position: relative;
				
				&.active {
					color: #409EFF;
					
					&::after {
						content: '';
						position: absolute;
						bottom: 0;
						left: 50%;
						transform: translateX(-50%);
						width: 60rpx;
						height: 4rpx;
						background-color: #409EFF;
						border-radius: 2rpx;
					}
				}
			}
		}
		
		.approval-list {
			.approval-item {
				background-color: #fff;
				border-radius: 10rpx;
				padding: 20rpx;
				margin-bottom: 20rpx;
				box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
				
				.item-header {
					display: flex;
					align-items: center;
					justify-content: space-between;
					margin-bottom: 15rpx;
					
					.header-left {
						display: flex;
						align-items: center;
						
						.approval-type {
							font-size: 26rpx;
							font-weight: 600;
							color: #333;
							margin-right: 20rpx;
						}
						
						.approval-status {
							padding: 5rpx 15rpx;
							border-radius: 15rpx;
							font-size: 20rpx;
						}
						
						.status-pending {
							background-color: #E6F7FF;
							color: #409EFF;
						}
						
						.status-processed {
							background-color: #F6FFED;
							color: #52C41A;
						}
					}
					
					.approval-time {
						font-size: 22rpx;
						color: #999;
					}
				}
				
				.item-body {
					margin-bottom: 15rpx;
					
					.info-item {
						display: flex;
						margin-bottom: 10rpx;
						
						.label {
							width: 100rpx;
							font-size: 24rpx;
							color: #666;
						}
						
						.value {
							flex: 1;
							font-size: 24rpx;
							color: #333;
						}
					}
				}
				
				.item-footer {
					display: flex;
					align-items: center;
					justify-content: flex-end;
					
					.reject-btn,
					.approve-btn {
						padding: 8rpx 24rpx;
						border-radius: 16rpx;
						font-size: 22rpx;
						margin-left: 20rpx;
					}
					
					.reject-btn {
						background-color: #f5f5f5;
						color: #666;
					}
					
					.approve-btn {
						background-color: #409EFF;
						color: #fff;
					}
					
					.process-result {
						font-size: 22rpx;
						color: #999;
					}
				}
			}
		}
		
		.empty-state {
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			height: 400rpx;
			
			.iconfont {
				font-size: 80rpx;
				color: #ddd;
				margin-bottom: 20rpx;
			}
			
			.empty-text {
				font-size: 24rpx;
				color: #999;
			}
		}
	}
}
</style>