<template>
	<view class="container">
		<view class="status-bar" :style="{ height: statusBarHeight + 'px' }"></view>
		<view class="top">
			<image class="return" @click="goBack" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/back_white.png"></image>
			<text>任务详情</text>
		</view>
		<scroll-view class="content" scroll-y>
			<!-- 任务卡片 -->
			<view class="task-card">
				<view class="card-header">
					<view class="card-title">{{ detail.taskName||'-'  }}</view>
				</view>
				<view class="card-meta">
					<view class="meta-tag">{{ detail.taskTypeName||'-'  }}</view>
					<view class="meta-id">ID：{{ detail.taskNo||'-' }}</view>
				</view>
			</view>

			<!-- 任务信息 -->
			<view class="info-section">
				<view class="section-header">
					<view class="section-indicator"></view>
					<text class="section-title">任务信息</text>
				</view>
				<view class="info-list">
					<view class="info-item">
						<text class="info-label">费用分摊:</text>
						<text class="info-value">{{ detail.costShareName||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">归属项目:</text>
						<text class="info-value">{{ detail.projectName ||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">归属部门:</text>
						<text class="info-value">{{ detail.deptName ||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">归属产品:</text>
						<text class="info-value">{{ detail.productName ||'-' }}</text>
					</view>
					<!-- <view class="info-item">
						<text class="info-label">申请补充直播任务:</text>
						<text class="info-value">{{ detail.applySupplementLive ||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">补充任务直播间ID:</text>
						<text class="info-value">{{ detail.supplementRoomId ||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">申请补充任务原因:</text>
						<text class="info-value">{{ detail.supplementReason ||'-' }}</text>
					</view> -->
				</view>
			</view>

			<!-- 内容信息 -->
			<view class="info-section">
				<view class="section-header">
					<view class="section-indicator"></view>
					<text class="section-title">内容信息</text>
				</view>
				<view class="info-list">
					<view class="info-item">
						<text class="info-label">交付物名称:</text>
						<text class="info-value">{{ detail.deliverableName ||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">交付物ID:</text>
						<text class="info-value">{{ detail.deliverableId||'-'  }}</text>
					</view>
					<!-- <view class="info-item">
						<text class="info-label">直播间地址:</text>
						<text class="info-value">{{ detail.liveRoomUrl ||'-' }}</text>
						<text class="copy-btn" @click="copyToClipboard(contentInfo.liveRoomUrl)">复制</text>
					</view>
					<view class="info-item">
						<text class="info-label">推流地址:</text>
						<text class="info-value">{{ detail.pushUrl ||'-' }}</text>
						<text class="copy-btn" @click="copyToClipboard(contentInfo.pushUrl)">复制</text>
					</view>
					<view class="info-item">
						<text class="info-label">开播地址:</text>
						<text class="info-value">{{ detail.startUrl||'-'  }}</text>
						<text class="copy-btn" @click="copyToClipboard(contentInfo.startUrl)">复制</text>
					</view>
					<view class="info-item">
						<text class="info-label">直播回放:</text>
						<text class="info-value">{{ detail.liveReplay ||'-' }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">播放视频:</text>
						<text class="info-value">{{ detail.playVideo||'-'  }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">下载视频:</text>
						<text class="info-value">{{ detail.downloadVideo||'-'  }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">观众人数:</text>
						<text class="info-value">{{ detail.viewerCount||'0'  }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">有效观看:</text>
						<text class="info-value">{{ detail.validView||'-'  }}</text>
					</view>
					<view class="info-item">
						<text class="info-label">情况说明:</text>
						<text class="info-value">{{ detail.description||'-'  }}</text>
					</view> -->
				</view>
			</view>

			<!-- 客户信息 -->
			<view class="info-section">
				<view class="section-header">
					<view class="section-indicator"></view>
					<text class="section-title">客户信息</text>
				</view>
				<view class="client-list">
					<view class="client-item" >
						<view class="client-info">
							<image class="avatar" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/my_heads_icon.png"></image>
							<view class="client-txt">
								<view class="client-name">
									{{ detail.doctorVO.doctorName||'-' }}
									<text class="client-level" v-if="detail.doctorVO.jobTitle">{{ detail.doctorVO.jobTitle }}</text>
								</view>
								<view class="client-hospital">
									<text>{{ detail.doctorVO.institution ||'-'}} </text>
									<view class="line"></view>
									<text>{{ detail.doctorVO.department ||'-'}}</text>
								</view>
							</view>
						</view>
						<view class="client-stats">
							<view class="stat-item"><text class="num">{{detail.doctorVO.taskNum ||'0'}} </text>任务</view>
							<view class="stat-item"><text class="num">{{ detail.doctorVO.balance||'0' }} </text>积分</view>
						</view>
					</view>
				</view>
			</view>

			<!-- 补充材料 -->
			<view class="info-section">
				<view class="section-header">
					<view class="section-indicator"></view>
					<text class="section-title">补充材料</text>
				</view>
				<view class="info-list">
					<template v-if="detail.materialInfoList && detail.materialInfoList.length > 0">
						<view v-for="(material, index) in detail.materialInfoList" :key="index" class="material-item">
							<view class="material-header">
								<text class="material-title" v-if="detail.materialInfoList.length > 1">材料 {{ index + 1 }}</text>
							</view>
							<view class="info-item">
								<text class="info-label">交付物名称:</text>
								<text class="info-value">{{ material.materialName || '-' }}</text>
							</view>
							<view class="info-item">
								<text class="info-label">情况说明:</text>
								<text class="info-value">{{ material.materialDesc || '-' }}</text>
							</view>
							<view class="info-item column">
								<text class="info-label">附件:</text>
								<view class="attachment-item" v-if="material.materialLink">
									<view class="left">
										<image class="img" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_attachment.png"></image>
										<view class="txt-item">
											<view class="attachment-name">{{ material.materialLink || '-' }}</view>
											<view class="attachment-size">{{ formatFileSize(material.fileSize || 0) }}</view>
										</view>
									</view>
									<image class="download-btn" @click="downloadAttachment(material.materialLink)"
										src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_downlad.png"></image>
								</view>
							</view>
						</view>
					</template>
					<view v-else class="empty-material">
						<text>暂无补充材料</text>
					</view>
				</view>
			</view>

			<!-- 审批信息 -->
			<view class="info-section">
				<view class="section-header">
					<view class="section-indicator"></view>
					<text class="section-title">审批信息</text>
				</view>
				<view class="audit-tabs">
					<view class="audit-tab" :class="{ active: activeTab === 'create' }" @click="switchTab('create')">创建任务审批</view>
					<view class="audit-tab" :class="{ active: activeTab === 'complete' }" @click="switchTab('complete')">完成任务审批</view>
				</view>
				<view class="approval-list">
					<view class="approval-item" v-for="(item, index) in currentApprovalInfo" :key="index">
						<view class="left">
							<view class="avatar-box">
								<image class="avatar" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/my_heads_icon.png"></image>
								<image class="icon" v-if="item.status=='待审核'" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_wait.png"></image>
								<image class="icon" v-if="item.status=='已通过'" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_pass.png"></image>
								<image class="icon" v-if="item.status=='已驳回'" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_refuse.png"></image>
							</view>
							<view class="approval-user">
								<view class="user-name">{{ item.name }}</view>
								<view class="user-status" :style="{ color: item.statusColor }">{{ item.status }}</view>
							</view>
						</view>
						<text class="approval-time">{{ item.time }}</text>
						<view class="approval-line" v-if="index < currentApprovalInfo.length - 1"></view>
					</view>
					<view v-if="currentApprovalInfo.length === 0" class="empty-approval">
						<text>暂无审批信息</text>
					</view>
				</view>

			</view>
		</scroll-view>
		<view class="bottom-bar" v-if="auditStatus==1">
			<view class="action-buttons">
				<view class="btn btn-cancel" @click="openRejectPopup">
					<image class="icon" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_approval_no.png"></image>
					<text>驳回</text>
				</view>
				<view class="btn btn-submit" @click="handleNext">
					<image class="icon" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_approval_yes.png"></image>
					<text>通过</text>
				</view>
			</view>
		</view>
		<!-- 驳回弹窗 -->
		<u-popup :show="showRejectPopup" mode="bottom" round="24" z-index="9999999">
			<view class="reject-popup-content">
				<view class="popup-header">
					<text class="popup-title">驳回</text>
					<image @click="showRejectPopup = false;" class="close" src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_close.png"></image>
				</view>

				<view class="input-area">
					<textarea v-model="rejectReason" placeholder="请输入驳回意见" class="reason-input" :auto-height="true"
						maxlength="200" />
				</view>
				<view class="btn-group">
					<view class="button reject" @click="showRejectPopup = false">取消</view>
					<view class="button confirm" @click="handleConfirmReject ">确认驳回</view>
				</view>
			</view>
		</u-popup>
	</view>
</template>

<script>
import { doAudit,doCreateAudit} from '@/api/audit.js'
import { info } from '@/api/task.js';
	// import { getTaskFinishAuditInfo,detail} from '@/api/task.js';
	import { detail} from '@/api/audit.js';

	export default {
		data() {
			return {
				// 仅获取微信小程序状态栏高度，无多余逻辑
				statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
				taskId: '',
				// 任务基础信息
				taskData: {
				
				},
				// 任务信息
				taskInfo: {
				
				},
				// 内容信息
				contentInfo: {
				
				},
				// 客户信息列表
				clientList: [
				],
				// 补充材料
				supplementMaterial: {
					deliverableName: '-',
					description: '-',
					attachment: {
					
					}
				},
				// 审批信息
				createApprovalInfo: [],
				completeApprovalInfo: [],
				activeTab: 'create',
				taskId:'',
				taskId2:'',
				detail:{},
				createStatus:'',
				completeStatus:'',
				auditStatus:'',
				userInfo:{},
				showRejectPopup:false,//是否展示驳回弹窗
				rejectReason:'',//驳回原因


			}
		},
		computed: {
			currentApprovalInfo() {
				return this.activeTab === 'create' ? this.createApprovalInfo : this.completeApprovalInfo
			}
		},
		onLoad(options) {
			console.log("任务详情数据",options)
			if (options.taskId) {
				this.taskId = options.taskId
				this.loadData(this.taskId,'create')

			}
			if (options.taskId2) {
				this.taskId2 = options.taskId2
				this.loadData(this.taskId2,'complete')
			}
			if (options.id) {
				const id = options.id
			this.info(id);

			}

			// 初始化 auditStatus
			this.auditStatus = this.createStatus;
			this.userInfo = uni.getStorageSync('userInfo')


			
		},
		methods: { // 打开驳回弹窗
    openRejectPopup() {
      // 直接打开驳回弹窗
      this.showRejectPopup = true
    },

    // 确认驳回
    async handleConfirmReject() {
      if (!this.rejectReason.trim()) {
        uni.showToast({
          title: '请输入驳回意见',
          icon: 'none'
        })
        return
      }

      try {
        uni.showLoading({
          title: '提交中...'
        })
        console.log("this.userInfo",this.userInfo)

        // 根据当前标签选择不同的审核接口
        const auditApi = this.activeTab === 'create' ? doCreateAudit : doAudit;
        
        // 调用审核接口，传递action=2表示驳回
        const res = await auditApi({
          auditId: this.activeTab === 'create' ? this.taskId : this.taskId2,
          userId: this.userInfo.userId,
          userType: 0,
          action: 2,
          comment: this.rejectReason,
          companyId: this.userInfo.companyId
        })
        
        uni.hideLoading()
        
        if (res.code === 200) {
          uni.showToast({
            title: res.data.message,
            icon: 'none'
          })
          
          // 关闭弹窗
          this.showRejectPopup = false
          // 重置输入
          this.rejectReason = ''
          // 重新加载数据
          this.loadData()
        } else {
          uni.showToast({
            title: res.msg || '驳回失败',
            icon: 'none'
          })
        }
      } catch (e) {
        uni.hideLoading()
        console.error('驳回失败', e)
        uni.showToast({
          title: '驳回失败，请稍后重试',
          icon: 'none'
        })
      }
    },

			 // 审批通过
    async handleNext() {
      try {
        uni.showLoading({
          title: '提交中...'
        })
        console.log("this.userInfo",this.userInfo)

        // 根据当前标签选择不同的审核接口
        const auditApi = this.activeTab === 'create' ? doCreateAudit : doAudit;
        
        // 调用审核接口，传递action=1表示通过
        const res = await auditApi({
          auditId: this.activeTab === 'create' ? this.taskId : this.taskId2,
          userId: this.userInfo.userId,
          userType: 0,
          action: 1,
          comment: "",
          companyId: this.userInfo.companyId
        })
        
        uni.hideLoading()
        
        if (res.code === 200) {
          uni.showToast({
            title: res.data.message,
            icon:  'none'
          })
          
          // 审核通过后，再次调用对应的审核接口
          try {
            const res2 = await auditApi({
              auditId: this.activeTab === 'create' ? this.taskId : this.taskId2,
              userId: this.userInfo.userId,
              userType: 0,
              action: 1,
              comment: "",
              companyId: this.userInfo.companyId
            })
            console.log('第二次调用审核接口返回:', res2)
          } catch (e2) {
            console.error('第二次调用审核接口失败', e2)
          }
          
          // 重新加载数据
        //   this.loadData()
        } else {
          uni.showToast({
            title: res.msg || '审批通过失败',
            icon: 'none'
          })
        }
      } catch (e) {
        uni.hideLoading()
        console.error('审批通过失败', e)
        uni.showToast({
          title: '审批通过失败，请稍后重试',
          icon: 'none'
        })
      }
    },
			goBack() {
				uni.navigateBack()
			},
			switchTab(tab) {
			this.activeTab = tab
			// 根据切换的标签更新 auditStatus
			this.auditStatus = tab === 'create' ? this.createStatus : this.completeStatus
		},
			info(id){
				info(id).then(res=>{
					if(res.code===200){
						this.detail = res.data
						console.log("任务详情",this.detail)
					}
			})},
			async loadData(taskId,type) {
				// 如果没有传递参数，根据当前选中的标签加载对应的数据
				if (!taskId || !type) {
					if (this.activeTab === 'create' && this.taskId) {
						await this.loadData(this.taskId, 'create');
					}
					if (this.activeTab === 'complete' && this.taskId2) {
						await this.loadData(this.taskId2, 'complete');
					}
					return;
				}
				try {
					uni.showLoading({
						title: '加载中...'
					})
					// 调用接口获取任务详情
					const res = await detail({ auditId:taskId})
					uni.hideLoading()
					if (res.code === 200) {
						// 处理返回的数据
						const data = res.data.auditFlows
						if(type==='create'){
						this.createApprovalInfo = data?.map(item => ({
						name: item.auditUserName || '审批人',
						status: item.statusName || '-',
						statusColor: this.getAuditStatusColor(item.status),
						time: item.auditTime || ''
					})) || []
						this.createStatus = res.data.audit.status
						// 如果当前选中的是创建审批标签，更新 auditStatus
						if (this.activeTab === 'create') {
							this.auditStatus = this.createStatus;
						}

						}
						if(type==='complete'){
						this.completeApprovalInfo = data?.map(item => ({
						name: item.auditUserName || '审批人',
						status: item.statusName || '-',
						statusColor: this.getAuditStatusColor(item.status),
						time: item.auditTime || ''
					})) || []
						this.completeStatus = res.data.audit.status
						// 如果当前选中的是完成审批标签，更新 auditStatus
						if (this.activeTab === 'complete') {
							this.auditStatus = this.completeStatus;
						}
						}
						} else {
						uni.showToast({
							title: '获取任务详情失败',
							icon: 'none'
						})
						}
				} catch (e) {
					uni.hideLoading()
					console.error('加载数据失败', e)
					uni.showToast({
						title: '网络错误',
						icon: 'none'
					})
				}
			},
			getAuditStatusText(status) {
				// 根据审核状态获取状态文本
				const statusMap = {
					0: '待审核',
					1: '已通过',
					2: '已驳回'
				}
				return statusMap[status] || '-'
			},
			getAuditStatusColor(status) {
				// 根据审核状态获取状态颜色
				const colorMap = {
					1: '#FF9800',
					2: '#4CAF50',
					3: '#F44336'
				}
				return colorMap[status] || '#999'
			},
			// 复制到剪贴板
			copyToClipboard(text) {
				uni.setClipboardData({
					data: text,
					success() {
						uni.showToast({
							title: '复制成功',
							icon: 'success'
						})
					}
				})
			},
			// 下载附件
			downloadAttachment(materialLink) {
				if (!materialLink) {
					uni.showToast({
						title: '附件链接不存在',
						icon: 'none'
					})
					return
				}
				uni.showLoading({
					title: '下载中...'
				})
				uni.downloadFile({
					url: materialLink,
					success: (res) => {
						if (res.statusCode === 200) {
							uni.saveFile({
								tempFilePath: res.tempFilePath,
								success: (saveRes) => {
									uni.hideLoading()
									uni.showToast({
										title: '下载成功',
										icon: 'success'
									})
								},
								fail: (err) => {
									uni.hideLoading()
									uni.showToast({
										title: '保存失败',
										icon: 'none'
									})
								}
							})
						} else {
							uni.hideLoading()
							uni.showToast({
								title: '下载失败',
								icon: 'none'
							})
						}
					},
					fail: (err) => {
						uni.hideLoading()
						uni.showToast({
							title: '下载失败',
							icon: 'none'
						})
					}
				})
			},
			// 格式化文件大小
			formatFileSize(bytes) {
				if (bytes === 0) return '0 B';
				const k = 1024;
				const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
				const i = Math.floor(Math.log(bytes) / Math.log(k));
				return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
			}
		}
	}
</script>

<style lang="scss" scoped>
	.material-item {
		margin-bottom: 20px;
		padding: 15px;
		background: #fff;
		border-radius: 8px;
		box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
	}
	
	.material-header {
		margin-bottom: 15px;
		padding-bottom: 10px;
		border-bottom: 1px solid #f0f0f0;
	}
	
	.material-title {
		font-size: 16px;
		font-weight: 600;
		color: #333;
	}
	
	.empty-material {
		padding: 40px 0;
		text-align: center;
		color: #999;
		font-size: 14px;
	}
	
	.container {
		min-height: 100vh;
		background: #f5f5f5;
		display: flex;
		flex-direction: column;
		height: auto;

		&::before {
			content: '';
			position: absolute;
			top: 0;
			left: 0;
			right: 0;
			width: 100%;
			height: 532rpx;
			background: linear-gradient(180deg, rgba(56, 139, 255, 0.79) 0%, rgba(56, 139, 255, 0) 100%);
		}

	}

	.top {
		display: flex;
		justify-content: center;
		align-items: center;
		height: 88rpx;
		position: relative;
		font-weight: 600;
		font-size: 36rpx;
		color: #FFFFFF;

		.return {
			position: absolute;
			left: 32rpx;
			width: 40rpx;
			height: 40rpx;
		}
	}

	.content {
		flex: 1;
		padding: 24rpx 24rpx 120rpx;
		box-sizing: border-box;
	}

	/* 任务卡片样式 */
	.task-card {
		background: #fff;
		border-radius: 16rpx;
		padding: 24rpx;
		margin-bottom: 24rpx;

		.card-header {
			.card-title {
				font-weight: 500;
				font-size: 36rpx;
				color: #333333;
				margin-bottom: 24rpx;
			}
		}

		.card-meta {
			display: flex;
			align-items: center;
			gap: 16rpx;
			font-size: 24rpx;
			color: #666;

			.meta-tag {
				border-radius: 8rpx 8rpx 8rpx 8rpx;
				border: 2rpx solid rgba(56, 139, 255, 0.4);
				padding: 4rpx 8rpx;
				color: #388BFF;
			}
		}
	}

	/* 通用信息区块样式 */
	.info-section {
		background: #fff;
		border-radius: 16rpx;
		padding: 24rpx;
		margin-bottom: 24rpx;

		.section-header {
			display: flex;
			align-items: center;
			margin-bottom: 24rpx;

			.section-indicator {
				width: 6rpx;
				height: 32rpx;
				background: #388BFF;
				border-radius: 3rpx;
				margin-right: 16rpx;
			}

			.section-title {
				font-weight: 600;
				font-size: 32rpx;
				color: #333333;
			}
		}

		.info-list {
			.info-item {
				display: flex;
				margin-bottom: 24rpx;

				&:last-child {
					margin-bottom: 0;
				}

				.info-label {
					width: 50%;
					font-size: 28rpx;
					color: #666;
					flex-shrink: 0;
				}

				.info-value {
					flex: 1;
					text-align: end;
					font-size: 28rpx;
					color: #333;
				}

				.copy-btn {
					margin-left: 16rpx;
					color: #2196F3;
					font-size: 24rpx;
					cursor: pointer;
				}

				.column {
					flex-direction: column;
				}

				.attachment-item {
					margin-top: 24rpx;
					display: flex;
					justify-content: space-between;
					align-items: center;
					gap: 16rpx;
					background: #F7F8FA;
					border-radius: 16rpx 16rpx 16rpx 16rpx;

					.left {
						display: flex;
						align-items: center;

						.img {
							width: 72rpx;
							height: 72rpx;
							margin-right: 24rpx;
						}

						.txt-item {
							.attachment-name {
								font-size: 28rpx;
								color: #333;
							}

							.attachment-size {
								font-size: 24rpx;
								color: #999;
							}
						}

					}



					.download-btn {
						width: 32rpx;
						height: 32rpx;
					}
				}
			}
		}
	}

	/* 客户信息样式 */
	.client-list {
		.client-item {
			display: flex;
			justify-content: space-between;
			align-items: center;
			padding: 16rpx 0;

			&:last-child {
				border-bottom: none;
			}

			.client-info {
				display: flex;
				align-items: center;

				.avatar {
					width: 88rpx;
					height: 88rpx;
					margin-right: 24rpx;
				}

				.client-txt {
					.client-name {
						font-size: 28rpx;
						font-weight: 500;
						color: #333;

						.client-level {
							margin-left: 8rpx;
							padding: 2rpx 8rpx;
							background: #FFF6E5;
							color: #C89743;
							font-size: 22rpx;
							border-radius: 8rpx;
						}
					}
				}


				.client-hospital {
					font-size: 24rpx;
					color: #666;
					margin-top: 4rpx;
					display: flex;
					align-items: center;

					.line {
						width: 2rpx;
						height: 28rpx;
						background: #EAEBEE;
						margin: 0 24rpx;
					}
				}
			}

			.client-stats {
				display: flex;
				gap: 24rpx;
				font-size: 24rpx;
				color: #999999;

				.stat-item {
					display: flex;
					flex-direction: column;
					align-items: center;

					.num {
						font-weight: 500;
						font-size: 28rpx;
						color: #333333;
					}
				}
			}
		}
	}

	/* 审批信息样式 */
	.approval-list {
		.approval-item {
			position: relative;
			padding-left: 24rpx;
			margin-bottom: 68rpx;
			display: flex;
			align-items: center;
			justify-content: space-between;

			&:last-child {
				margin-bottom: 0;
			}

			.left {
				display: flex;
				align-items: center;

				.avatar-box {
					width: 80rpx;
					height: 80rpx;
					margin-right: 32rpx;
					position: relative;

					.avatar {
						width: 100%;
						height: 100%;
					}

					.icon {
						position: absolute;
						bottom: 0;
						right: 0;
						width: 32rpx;
						height: 32rpx;
					}
				}


				.approval-user {
					gap: 12rpx;

					.user-name {
						font-weight: 500;
						font-size: 28rpx;
						color: #333;
					}

					.user-status {
						font-size: 24rpx;
					}
				}
			}


			.approval-time {
				font-size: 24rpx;
				color: #999;
				margin-top: 4rpx;
			}
		}

		.approval-line {
			position: absolute;
			left: 64rpx;
			bottom: -64rpx;
			width: 1rpx;
			height: 56rpx;
			background: #BFD8FF;
		}
	}

	.reason {
			font-size: 28rpx;
			color: #666666;
			line-height: 40rpx;
			margin-left: 136rpx;
		}

		/* 审批标签样式 */
		.audit-tabs {
			display: flex;
			margin: 24rpx 0;
			border-radius: 8rpx;
			background-color: #F7F8FA;
			overflow: hidden;
		}

		.audit-tab {
			flex: 1;
			text-align: center;
			padding: 16rpx 0;
			font-size: 28rpx;
			color: #666666;
			transition: all 0.3s ease;
			cursor: pointer;
		}

		.audit-tab.active {
			background-color: #4080FF;
			color: #FFFFFF;
			font-weight: 500;
		}

.bottom-bar {
		position: fixed;
		bottom: 0;
		left: 0;
		right: 0;
		background: #fff;
		padding: 24rpx 32rpx;
		border-top: 1rpx solid #F2F3F5;
		z-index: 100;
		display: flex;
		align-items: center;

		.action-buttons {
			display: flex;
			flex: 1;
			justify-content: space-between;

			.btn {
				width: 292rpx;
				height: 88rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				font-size: 32rpx;
				font-weight: 500;
				border-radius: 200rpx 200rpx 200rpx 200rpx;
				cursor: pointer;
				display: flex;
				align-items: center;

				&.btn-cancel {
					background: #fff;
					border: 2rpx solid #CF3546;
					color: #CF3546;
				}

				&.btn-submit {
					background: #388BFF;
					color: #fff;
				}

				.icon {
					width: 32rpx;
					height: 32rpx;
					margin-right: 16rpx;
				}
			}
		}
	}// 弹窗样式
	.reject-popup-content {
		padding: 32rpx;
		box-sizing: border-box;
		overflow: hidden;
		border-radius: 24rpx 24rpx 0 0;

		.popup-header {
			display: flex;
			justify-content: center;
			align-items: center;
			margin-bottom: 32rpx;
			position: relative;

			.popup-title {
				font-size: 32rpx;
				font-weight: bold;
				color: #333;
			}

			.close {
				position: absolute;
				right: 0;
				width: 44rpx;
				height: 44rpx;
			}
		}

		.input-area {
			margin-bottom: 40rpx;

			.reason-input {
				min-height: 120rpx;
				padding: 20rpx;
				background: #F7F8FA;
				border-radius: 12rpx;
				font-size: 28rpx;
				color: #333;
				width: 100%; // 新增：确保输入框宽度100%
				box-sizing: border-box;
			}
		}

		.btn-group {
			display: flex;
			gap: 24rpx;

			.button {
				width: 332rpx;
				height: 80rpx;
				flex: 1;
				border-radius: 200rpx;
				font-size: 28rpx;
				text-align: center;
				line-height: 80rpx;
			}

			.reject {
				color: #388BFF;
				background: #FFFFFF;
				border-radius: 200rpx 200rpx 200rpx 200rpx;
				border: 2rpx solid #388BFF;
			}

			.confirm {
				background: #388BFF;
				color: #FFFFFF;
			}
		}
	}

</style>