<template>
	<view style="min-height: 100vh;position: relative;">

		<!-- 顶部图片 -->
		<view class="top-img">
			<image class="ui-img" :src="$image.original(resourceInfo.showImg)" mode="aspectFill"></image>
			<text @click="back()" class="cuIcon-back backbut"></text>
		</view>
		<view class="resource-box">
			<view class="resource-view">
				<view class="resource-section-icon resource-section-icon-large resource-title-icon">
					<uni-icons type="cloud-download" size="28" color="#6d52f5"></uni-icons>
				</view>
				<view class="resource-font">
					{{resourceInfo.resourceTitle}}
				</view>
			</view>
			
			<view class="resource-list">
				<view v-if="type != 1" class="resource-view">
					<view class="resource-section-icon">
						<uni-icons type="info" size="22" color="#6d52f5"></uni-icons>
					</view>
					<view class="resource-font2">
						下载说明
					</view>
				</view>
				<view v-if="type != 1" class="data-view">
					<view style="border: 1px solid #ffffff" class="ql-container ql-snow">
						<rich-text :nodes="contentDate" class="ql-editor"></rich-text>
					</view>
					<!-- <mp-html  class="ql-editor" :tag-style="tag_style" :content="contentDate" :container-style="container_style"
						selectable="true"> </mp-html> -->
				</view>
				
				<!-- 付费资源规格 -->
				<view v-if="isLookAd == 3" class="spec-section">
					<view class="resource-view">
						<view class="resource-section-icon">
							<uni-icons type="list" size="22" color="#6d52f5"></uni-icons>
						</view>
						<view class="resource-font2">选择版本</view>
					</view>
					<view v-if="paySpecs.length" class="spec-list">
						<view
							v-for="item in paySpecs"
							:key="item.id"
							class="spec-item"
							:class="{'spec-item-selected': selectedResourceListId == item.id}"
							@click="selectSpec(item)"
						>
							<view class="spec-content">
								<view class="spec-name">
									<text class="spec-name-text">{{item.listName}}</text>
								</view>
								<view v-if="item.purchased || item.status == 0" class="spec-meta">
									<text v-if="item.purchased" class="purchased-tag">已拥有</text>
									<text v-else class="disabled-tag">已停用</text>
								</view>
							</view>
							<view class="spec-price">
								<text v-if="isUpgradeSpec(item)" class="upgrade-price-label">补差价</text>
								<text class="spec-price-value">¥{{formatPrice(getPayablePriceFen(item))}}</text>
							</view>
						</view>
					</view>
					<view v-else class="empty-spec">暂无可购买规格，请联系管理员</view>
				</view>

				<!-- 资源列表 -->
				<view>
					<view class="resource-view">
						<view class="resource-section-icon">
							<uni-icons type="download" size="22" color="#6d52f5"></uni-icons>
						</view>
						<view class="resource-font2">
							{{isLookAd == 3 ? '已购资源' : '资源列表'}}
						</view>
					</view>
					<template v-if="isLookAd == 3">
						<view v-if="purchasedSpecs.length" id="purchased-resources">
							<view class="shuoming2">复制下方链接，在手机浏览器中打开即可下载</view>
							<view v-for="item in purchasedSpecs" :key="item.id" class="file-list purchased-file">
								<view class="file-header">
									<view class="file-type-icon">
										<uni-icons type="link" size="20" color="#6d52f5"></uni-icons>
									</view>
									<view class="file-heading">
										<text class="file-title">{{item.listName}}</text>
										<text class="file-password" v-if="item.password">提取码：{{item.password}}</text>
									</view>
								</view>
								<view class="file-url-box">
									<text class="file-url">{{item.listUrl}}</text>
									<view @click="copy(item.listUrl)" class="file-copy">复制</view>
								</view>
							</view>
						</view>
						<view v-else class="shuoming2">选择上方版本并完成付款后，即可查看下载地址</view>
					</template>
					<template v-else>
						<view v-if="isLookAd == 0" class="shuoming2">复制下方链接打开手机浏览器进行下载！！！</view>
						<view v-else class="shuoming2">请先点击下方按钮即可获取资源下载列表！</view>
					</template>
					<template v-if="isLookAd == 0">
						<view v-for="(item,index) in resourceInfo.appResourceListList" :key="index" class="file-list">
							<view class="file-header">
								<view class="file-type-icon">
									<uni-icons type="link" size="20" color="#6d52f5"></uni-icons>
								</view>
								<view class="file-heading">
									<text class="file-title">{{item.listName}}</text>
									<text class="file-password" v-if="item.password != '' && item.password != null">提取码：{{item.password}}</text>
								</view>
							</view>
							<view class="file-url-box">
								<text class="file-url">{{item.listUrl}}</text>
								<view @click="copy(item.listUrl)" class="file-copy">复制</view>
							</view>
						</view>
					</template>
					
					<view v-if="adUnitId" style="width: 100%; margin-top: 50rpx;">
						<ad-custom :unit-id="adUnitId"  ad-intervals="30" ></ad-custom>
					</view>
					
				</view>
				
			</view>
		</view>
		<view
			v-if="(isLookAd == 1 || isLookAd == 2 || isLookAd == 3) && (isLookAd != 3 || selectedSpec)"
			class="action-placeholder"
			:class="{'action-placeholder-paid': isLookAd == 3}"
		></view>
		<view
			v-if="(isLookAd == 1 || isLookAd == 2 || isLookAd == 3) && (isLookAd != 3 || selectedSpec)"
			class="bottom-action-bar"
		>
			<view v-if="isLookAd == 3 && selectedSpec" class="action-summary">
				<view class="action-summary-name">
					<text class="action-summary-label">{{selectedIsUpgrade ? '升级补差' : '已选'}}</text>
					<text class="action-summary-value">{{selectedSpec.listName}}</text>
				</view>
				<view class="action-summary-price">¥{{formatPrice(selectedPayPriceFen)}}</view>
			</view>
			<view v-if="isLookAd ==1" @click="lookAd()" class="resource-ad">
				广告查看
			</view>
			<view v-if="isLookAd ==2" @click="jfAd()" class="resource-ad">
				积分获取（ {{resourceInfo.adNumber}} 积分 ）
			</view>
			<view v-if="isLookAd ==3 && selectedSpec" @click="handlePaidAction()" class="resource-ad" :class="{'resource-owned': selectedSpec.purchased}">
				{{paidButtonText}}
			</view>
		</view>
		<u-toast ref="uToast"></u-toast>

	</view>
</template>

<script>
	import {
		getResource,getResourceByUserId,resourceDownLoad,appGetUserById,exchangeResource,
		createVirtualResourceOrder,getVirtualResourceOrder
	} from "@/api/app/index.js"
	import config from '@/config'
	let videoAd = null;
	export default {
		data() {
			return {
				baseUrl: config.baseUrl,
				adUnitId:"",
				adUnitId2:"",
				id:null,
				resourceInfo:{
					resourceTitle: '',
					showImg: '',
					appResourceListList: []
				},
				isLookAd:null,
				paying: false,
				selectedResourceListId: null,
				tag_style: {
					h1: 'line-height: 50px;font-size:16px;',
					h2: 'line-height: 50px;font-size:16px',
					h3: 'line-height: 50px;font-size:16px',
					h4: 'line-height: 50px;font-size:16px',
				},
				container_style: 'font-size:15px;overflow-x: hidden;line-height:30px;letter-spacing:1px',
				contentDate: "",
				userId: null,
				type:0
			}
		},
		computed: {
			paySpecs() {
				var list = this.resourceInfo.appResourceListList || [];
				return list.filter(function(item) {
					return item.status == 1 || item.purchased;
				});
			},
			purchasedSpecs() {
				return this.paySpecs.filter(function(item) {
					return !!item.purchased && !!item.listUrl;
				});
			},
			highestPurchasedSpec() {
				var purchased = this.paySpecs.filter(function(item) {
					return !!item.purchased;
				});
				purchased.sort(function(left, right) {
					var sortDiff = Number(right.sortOrder || 0) - Number(left.sortOrder || 0);
					return sortDiff || Number(right.id || 0) - Number(left.id || 0);
				});
				return purchased.length ? purchased[0] : null;
			},
			selectedSpec() {
				var selectedId = this.selectedResourceListId;
				return this.paySpecs.find(function(item) {
					return String(item.id) === String(selectedId);
				}) || null;
			},
			selectedPayPriceFen() {
				return this.getPayablePriceFen(this.selectedSpec);
			},
			selectedIsUpgrade() {
				return this.isUpgradeSpec(this.selectedSpec);
			},
			paidButtonText() {
				if (!this.selectedSpec) {
					return '暂无可购买规格';
				}
				if (this.selectedSpec.purchased) {
					return '已购买，查看资源';
				}
				if (this.paying) {
					return '支付结果确认中...';
				}
				return this.selectedIsUpgrade ? '补差价升级' : '立即购买';
			}
		},
		// 分享好友配置
		onShareAppMessage(res) {
			var that = this;
			return {
				title: that.resourceInfo.resourceTitle,
				imageUrl: that.resourceInfo.showImg,
				path: 'pages/blog/resource?id='+that.resourceInfo.id+"&share=1",
			}
		},
		onShareTimeline(){
			var that = this;
		    return {
		      title:that.resourceInfo.resourceTitle,
		      query:{
				  id: that.resourceInfo.id,
				  share: 1
		      },
		      imageUrl:that.resourceInfo.showImg
		    }
		},
		onLoad(option) {
			const sysSet = uni.getStorageSync("sysSet") || {}
			const userInfo = uni.getStorageSync("userInfo") || {}
			this.adUnitId = sysSet.zyinfoAd || ""
			this.adUnitId2 = sysSet.downVideoAd || ""
			this.userId = userInfo.userId || null
			const id = option && option.id
			if (!/^\d+$/.test(String(id || ''))) {
				uni.showToast({
					title: '资源参数错误，请重新进入',
					icon: 'none'
				})
				return
			}
			this.id = id
			if (option && /^\d+$/.test(String(option.resourceListId || ''))) {
				this.selectedResourceListId = option.resourceListId
			}
			if(option.type){
				this.type = option.type
			}
			// 请求详情
			this.getInfo()
			//初始化激励广告
			this.CreateAd()
		},
		methods: {
			CreateAd(){
				var that = this;
				if (this.adUnitId2 != '') {
					if (wx.createRewardedVideoAd) {
						videoAd = wx.createRewardedVideoAd({
							adUnitId: this.adUnitId2
						})
						videoAd.onLoad(() => {})
						videoAd.onError((err) => {
							that.$refs.uToast.show({
								type: 'error',
								title: '',
								message: "请使用移动端设备访问",
								icon: false
							})
						})
						videoAd.onClose((res) => {
							if (res && res.isEnded) {
								// that.$refs.uToast.show({
								// 	type: 'success',
								// 	title: '',
								// 	message: "╮(๑•́ ₃•̀๑)╭ 谢谢您的支持 ",
								// 	icon: false
								// })
								that.isLookAd = 0
								resourceDownLoad({id: that.id}).then(response => {})
							} else {
								
							}
						})
					}
				
				}
			},
			jfAd(){
				var that = this;
				appGetUserById(that.userId).then(response => {
					if (that.resourceInfo.adNumber > response.user.integral) {
						uni.showModal({
						        title: '积分不足',
						        content: '您的积分为 '+response.user.integral+' ,签到做任务可获得积分',
						        cancelText: "取消",
						        confirmText: "获取积分",
						        confirmColor:'#ff0000',
						        cancelColor:'#000000',
						        success: function(res) {
						        if (res.confirm) {
						            // 执行确认后的操作
									uni.switchTab({
										url: '/pages/mine/index'
									});
						        } 
						        else {
						            // 执行取消后的操作
						        }
						    }
						})
						
						
					} else {
						var data = {
							source: '资源兑换',
							isAdd: 1,
							integralNumber: that.resourceInfo.adNumber,
							userId: that.userId,
							resourceId: that.id
						}
						exchangeResource(data).then(response => {
							that.$refs.uToast.show({
								type: 'success',
								title: '',
								message: "兑换成功",
								icon: false
							})
							that.getInfo()
						})
					}
				
				
				})
			},
			lookAd(){
				// 用户触发广告后，显示激励视频广告
				if (videoAd) {
				  videoAd.show().catch(() => {
				    // 失败重试
				    videoAd.load()
				      .then(() => videoAd.show())
				      .catch(err => {
				        console.error('激励视频 广告显示失败', err)
				      })
				  })
				}
				
				//下载次数+1
				//添加广告记录
			},
			getInfo(){
				var that = this;
				getResourceByUserId(this.id).then(response => {
					if (!response || !response.data) {
						uni.showToast({
							title: '资源信息不存在',
							icon: 'none'
						})
						return
					}
					if(response.data.isAd == 0){
						this.isLookAd = 0
						resourceDownLoad({id: this.id}).then(response => {})
					}else if(response.data.isAd == 1){
						this.isLookAd = 1
						//resourceDownLoad({id: this.id}).then(response => {})
					}else if(response.data.isAd == 2){
						this.isLookAd = 2
					}else if(response.data.isAd == 3){
						this.isLookAd = 3
					}
					that.resourceInfo = response.data
					if (response.data.isAd == 3) {
						that.selectDefaultSpec()
					}
					var str = that.resourceInfo.explain || ''
					if (str.includes("/dev-api")) {
					 that.resourceInfo.explain = str.replace("/dev-api", that.baseUrl)
					} else {
					  that.resourceInfo.explain = str.replace("/prod-api", that.baseUrl)
					}
					that.contentDate = that.resourceInfo.explain
						.replace(/<h1([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<h1')
						.replace(/<h1([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<h1')
						.replace(/<h1>/ig, '<h1 class="h1">')
								
						.replace(/<h2([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<h2')
						.replace(/<h2([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<h2')
						.replace(/<h2>/ig, '<h2 class="h2">')
								
						.replace(/<h3([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<h3')
						.replace(/<h3([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<h3')
						.replace(/<h3>/ig, '<h3 class="h3">')
								
						.replace(/<h4([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<h4')
						.replace(/<h4([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<h4')
						.replace(/<h4>/ig, '<h4 class="h4">')
								
						.replace(/<h5([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<h5')
						.replace(/<h5([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<h5')
						.replace(/<h5>/ig, '<h5 class="h4">')
								
						.replace(/<h6([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<h6')
						.replace(/<h6([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<h6')
						.replace(/<h6>/ig, '<h6 class="h6">')
								
						.replace(/<code([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<code')
						.replace(/<code([\s\w"=\/\.:;]+)((?:(class="[^"]+")))/ig, '<code')
						.replace(/<code>/ig, '<code class="language-css">')
				})
			},
			copy(url){
				if (!url) {
					return;
				}
				uni.setClipboardData({
					data: url,
					showToast: false,
					success: function () {
						uni.showToast({
							title: '链接已复制',
							icon: 'success',
							duration: 1200
						});
					}
				});
			},
			isUpgradeSpec(item){
				if (!item || item.purchased || !this.highestPurchasedSpec) {
					return false;
				}
				return Number(item.sortOrder || 0) > Number(this.highestPurchasedSpec.sortOrder || 0);
			},
			getPayablePriceFen(item){
				if (!item) {
					return 0;
				}
				var targetPrice = Number(item.priceFen || 0);
				if (!this.isUpgradeSpec(item)) {
					return targetPrice;
				}
				var ownedPrice = Number(this.highestPurchasedSpec.priceFen || 0);
				return Math.max(targetPrice - ownedPrice, 0);
			},
			selectDefaultSpec(){
				var currentId = this.selectedResourceListId;
				var currentExists = this.paySpecs.some(function(item) {
					return String(item.id) === String(currentId);
				});
				if (currentExists) {
					return;
				}
				var firstUnpurchased = this.paySpecs.find(function(item) {
					return item.status == 1 && !item.purchased;
				});
				this.selectedResourceListId = firstUnpurchased
					? firstUnpurchased.id
					: (this.paySpecs.length ? this.paySpecs[0].id : null);
			},
			selectSpec(item){
				if (this.paying) {
					return;
				}
				this.selectedResourceListId = item.id;
			},
			handlePaidAction(){
				if (!this.selectedSpec) {
					return;
				}
				if (this.selectedSpec.purchased) {
					uni.pageScrollTo({
						selector: '#purchased-resources',
						duration: 250
					});
					return;
				}
				this.payResource();
			},
			payResource(){
				var that = this;
				if (this.paying) {
					return;
				}
				if (!this.userId) {
					uni.showToast({
						title: '请先登录后购买',
						icon: 'none'
					});
					return;
				}
				if (!this.selectedSpec || this.selectedSpec.status != 1) {
					uni.showToast({
						title: '请选择可购买的版本',
						icon: 'none'
					});
					return;
				}
				if (!this.selectedPayPriceFen || this.selectedPayPriceFen <= 0) {
					uni.showToast({
						title: '价格信息错误',
						icon: 'none'
					});
					return;
				}
				if (typeof wx === 'undefined' || typeof wx.requestVirtualPayment !== 'function') {
					uni.showToast({
						title: '当前微信版本不支持虚拟支付，请升级微信',
						icon: 'none'
					});
					return;
				}

				this.paying = true;
				uni.login({
					provider: 'weixin',
					success: loginRes => {
						createVirtualResourceOrder({
							resourceListId: that.selectedSpec.id,
							code: loginRes.code
						}).then(response => {
							var payParams = response.data;
							wx.requestVirtualPayment({
								signData: payParams.signData,
								paySig: payParams.paySig,
								signature: payParams.signature,
								mode: payParams.mode,
								success: () => {
									that.confirmVirtualOrder(payParams.orderNo, 0);
								},
								fail: err => {
									that.paying = false;
									var cancelled = err && err.errCode === -2;
									uni.showToast({
										title: cancelled ? '已取消支付' : '支付未完成，请重试',
										icon: 'none'
									});
								}
							});
						}).catch(() => {
							that.paying = false;
						});
					},
					fail: () => {
						that.paying = false;
						uni.showToast({
							title: '获取微信登录凭证失败',
							icon: 'none'
						});
					}
				});
			},
			confirmVirtualOrder(orderNo, attempt){
				var that = this;
				var shouldSync = attempt === 1 || attempt === 6;
				getVirtualResourceOrder(orderNo, shouldSync).then(response => {
					var order = response.data;
					if (order.unlocked) {
						that.paying = false;
						that.$refs.uToast.show({
							type: 'success',
							title: '',
							message: '购买成功',
							icon: false
						});
						resourceDownLoad({id: that.id}).then(function() {});
						that.getInfo();
						return;
					}
					if (order.status === 2 || order.status === 3) {
						that.paying = false;
						uni.showToast({
							title: order.status === 2 ? '订单已退款' : '订单已关闭',
							icon: 'none'
						});
						return;
					}
					if (attempt < 10) {
						setTimeout(function() {
							that.confirmVirtualOrder(orderNo, attempt + 1);
						}, 1200);
					} else {
						that.paying = false;
						uni.showToast({
							title: '支付结果确认中，请稍后重新进入页面',
							icon: 'none',
							duration: 3000
						});
					}
				}).catch(() => {
					if (attempt < 10) {
						setTimeout(function() {
							that.confirmVirtualOrder(orderNo, attempt + 1);
						}, 1200);
					} else {
						that.paying = false;
					}
				});
			},
			formatPrice(priceFen){
				var value = Number(priceFen || 0) / 100;
				return value.toFixed(2);
			},
			back(val) {
				const pages = getCurrentPages();
				if (pages.length > 1) {
					uni.navigateBack()
				} else {
					uni.switchTab({
						url: '/pages/index'
					});
				}
			}
		}
	}
</script>

<style>
	page {
		background-color: #ffffff;
		min-height: 100%;
	}
	.data-view {
		margin: 0upx 20upx;
		font-size: 34upx;
		color: #333232;
		line-height: 60upx;
		word-wrap: break-word;
	}
	
	.jiesao{
		padding: 20rpx 30rpx;
	}
	.resource-ad{
		height: 88rpx;
		width: 100%;
		margin: 0;
		border-radius: 100rpx;
		background: #7a60fd;
		line-height: 88rpx;
		text-align: center;
		font-size: 34rpx;
		color: white;
		box-shadow: 0 8rpx 22rpx rgba(122, 96, 253, 0.22);
	}
	.bottom-action-bar{
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 99;
		box-sizing: border-box;
		width: 100%;
		padding: 18rpx 5% calc(18rpx + constant(safe-area-inset-bottom));
		padding: 18rpx 5% calc(18rpx + env(safe-area-inset-bottom));
		background: rgba(255, 255, 255, 0.98);
		border-top: 1rpx solid #eeeeee;
		box-shadow: 0 -10rpx 30rpx rgba(45, 45, 45, 0.1);
	}
	.action-summary{
		height: 54rpx;
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0 12rpx 12rpx;
	}
	.action-summary-name{
		display: flex;
		align-items: center;
		min-width: 0;
	}
	.action-summary-label{
		flex-shrink: 0;
		margin-right: 14rpx;
		padding: 3rpx 12rpx;
		border-radius: 999rpx;
		font-size: 21rpx;
		color: #6d52f5;
		background: #f0ecff;
	}
	.action-summary-value{
		max-width: 420rpx;
		overflow: hidden;
		white-space: nowrap;
		text-overflow: ellipsis;
		font-size: 27rpx;
		color: #333333;
	}
	.action-summary-price{
		flex-shrink: 0;
		font-size: 31rpx;
		font-weight: 600;
		color: #e54d42;
	}
	.action-placeholder{
		width: 100%;
		height: calc(142rpx + constant(safe-area-inset-bottom));
		height: calc(142rpx + env(safe-area-inset-bottom));
	}
	.action-placeholder-paid{
		height: calc(208rpx + constant(safe-area-inset-bottom));
		height: calc(208rpx + env(safe-area-inset-bottom));
	}
	.resource-owned{
		background: #39b54a;
	}
	.spec-section{
		margin-bottom: 45rpx;
	}
	.spec-list{
		margin: 24rpx 10rpx 0;
	}
	.spec-item{
		box-sizing: border-box;
		min-height: 104rpx;
		margin-bottom: 18rpx;
		padding: 16rpx 24rpx;
		border: 2rpx solid #e5e5e5;
		border-radius: 18rpx;
		display: flex;
		align-items: center;
		justify-content: space-between;
		background: #ffffff;
	}
	.spec-item-selected{
		border-color: #7a60fd;
		background: #f5f2ff;
		box-shadow: 0 8rpx 20rpx rgba(122, 96, 253, 0.12);
	}
	.spec-content{
		flex: 1;
		min-width: 0;
		padding-right: 16rpx;
	}
	.spec-name{
		font-size: 29rpx;
		font-weight: 500;
		line-height: 42rpx;
		color: #2b2b2b;
	}
	.spec-name-text{
		display: block;
		word-break: keep-all;
		overflow-wrap: break-word;
	}
	.spec-meta{
		margin-top: 8rpx;
		line-height: 1;
	}
	.spec-price{
		flex-shrink: 0;
		min-width: 120rpx;
		display: flex;
		flex-direction: column;
		align-items: flex-end;
		justify-content: center;
	}
	.upgrade-price-label{
		margin-bottom: 4rpx;
		font-size: 20rpx;
		font-weight: 500;
		line-height: 28rpx;
		color: #7a60fd;
	}
	.spec-price-value{
		white-space: nowrap;
		text-align: right;
		font-size: 31rpx;
		font-weight: 600;
		line-height: 42rpx;
		color: #e54d42;
	}
	.purchased-tag,
	.disabled-tag{
		display: inline-block;
		padding: 4rpx 12rpx;
		border-radius: 999rpx;
		font-size: 21rpx;
		font-weight: 400;
	}
	.purchased-tag{
		color: #248b3e;
		background: #e8f7ec;
	}
	.disabled-tag{
		color: #8799a3;
		background: #f1f1f1;
	}
	.empty-spec{
		margin: 24rpx 10rpx;
		padding: 28rpx;
		text-align: center;
		border-radius: 18rpx;
		color: #8799a3;
		background: #f7f7f7;
	}
	.file-list{
		box-sizing: border-box;
		margin: 24rpx 10rpx 0;
		padding: 24rpx;
		border: 1rpx solid #eeeeee;
		border-radius: 20rpx;
		background: #ffffff;
		box-shadow: 0 8rpx 24rpx rgba(45, 45, 45, 0.05);
	}
	.file-header{
		display: flex;
		align-items: flex-start;
	}
	.file-type-icon{
		box-sizing: border-box;
		width: 44rpx;
		height: 44rpx;
		flex: 0 0 44rpx;
		display: flex;
		align-items: center;
		justify-content: center;
		border-radius: 12rpx;
		background: #f3f0ff;
	}
	.file-heading{
		min-width: 0;
		margin-left: 16rpx;
		display: flex;
		flex: 1;
		flex-direction: column;
	}
	.file-title{
		font-size: 27rpx;
		font-weight: 500;
		line-height: 42rpx;
		color: #2b2b2b;
	}
	.file-password{
		align-self: flex-start;
		margin-top: 8rpx;
		padding: 4rpx 12rpx;
		border-radius: 999rpx;
		font-size: 22rpx;
		line-height: 30rpx;
		color: #8a4b00;
		background: #fff7db;
	}
	.file-url-box{
		box-sizing: border-box;
		width: 100%;
		min-height: 80rpx;
		margin-top: 20rpx;
		padding: 12rpx 12rpx 12rpx 20rpx;
		display: flex;
		align-items: center;
		border: 1rpx solid #e8e8ec;
		border-radius: 16rpx;
		background: #f6f6f8;
	}
	.file-url{
		flex: 1;
		min-width: 0;
		overflow: hidden;
		white-space: nowrap;
		text-overflow: ellipsis;
		font-size: 25rpx;
		line-height: 56rpx;
		color: #3f3f46;
	}
	.file-copy{
		min-width: 96rpx;
		height: 56rpx;
		margin-left: 16rpx;
		padding: 0 16rpx;
		display: flex;
		align-items: center;
		justify-content: center;
		border-radius: 14rpx;
		font-size: 24rpx;
		font-weight: 500;
		color: #6d52f5;
		background: #ebe7ff;
	}
	.shuoming{
		margin: 25rpx 25rpx 30rpx 25rpx;
		font-size: 25rpx;
	}
	.shuoming2{
		margin: 25rpx 20rpx 30rpx;
		box-sizing: border-box;
		display: flex;
		align-items: center;
		justify-content: center;
		min-height: 85rpx;
		padding: 20rpx 16rpx;
		font-size: 26rpx;
		line-height: 1.6;
		background-color: #fff7db;
		border: 1rpx solid #f2d18a;
		text-align: center;
		border-radius: 20rpx;
		color: #8a4b00;
	}
	.resource-list{
		margin: 40rpx 20rpx;
	}
	
	.resource-font {
		font-weight: 600;
		font-size: 35rpx;
		margin-left: 20rpx;
	}
	.resource-view {
		display: flex;
		align-items: center;
		justify-content: flex-start;
	}
	.resource-section-icon {
		box-sizing: border-box;
		width: 48rpx;
		height: 48rpx;
		flex: 0 0 48rpx;
		display: flex;
		align-items: center;
		justify-content: center;
		border: 1rpx solid #ddd6ff;
		border-radius: 14rpx;
		background: #f3f0ff;
	}
	.resource-section-icon-large {
		width: 64rpx;
		height: 64rpx;
		flex-basis: 64rpx;
		border-radius: 18rpx;
	}
	.resource-title-icon {
		display: none;
	}
	.resource-font2 {
		font-weight: 600;
		font-size: 30rpx;
		margin-left: 20rpx;
	}
	.resource-box{
		min-height: 350rpx;
		width: 100%;
		background-color: white;
		border-radius: 50rpx;
		margin-top: -60rpx;
		position: relative;
		z-index: 2;
		padding: 50rpx 30rpx;
	}

	.top-img {
		height: 500upx;
		width: 100%;
		position: relative;
		z-index: 1;
	}

	.ui-img {
		height: 100%;
		width: 100%;
		position: relative;
	}

	.backbut {
		position: absolute;
		left: 20rpx;
		top: 100rpx;
		font-size: 50rpx;
	}
</style>
