<script setup>
	import {
		ref,
		reactive,
		getCurrentInstance
	} from "vue";

	import {
		onLoad,
	} from "@dcloudio/uni-app";

	import {
		getHYFLlist,
	} from "@/api/work/projectInfo.js";

	import {
		getYearReportData,
		getYearReportTableData
	} from "@/api/work/analysis.js";

	import config from '@/config.js';

	// 年度
	let yearShow = ref(false);
	let defaultIndex = ref([0]);
	let yearColumns = ref([
		["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012",
			"2013",
			"2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026",
			"2027", "2028", "2029", "2030", "2031", "2032", "2033"
		]
	])
	const yearShowChoose = function() {
		yearShow.value = true;
	}
	const yearClose = function(e) {
		if (e) {
			searchInfo.year = e.value[0];
			// getTableData();
		}
		yearShow.value = false;
	}

	// 是否隐藏
	let hideFull = [{
		key: true,
		value: "包含"
	}, {
		key: false,
		value: "不包含"
	}, ];
	let hideColumns = ref([
		["包含", "不包含"]
	])
	let hideShow = ref(false);
	const hideShowChoose = function() {
		hideShow.value = true;
	}
	const hideClose = function(e) {
		if (e) {
			searchInfo.isHide = e.value[0];
			// getTableData();
		}
		hideShow.value = false;
	}

	// 行业分类
	let hyflFull = []


	let hyflShow = ref(false);
	let hyflList = ref([]);
	const getHYFL = () => {
		getHYFLlist().then(res => {
			hyflList.value = res.data.list;
		})
	}
	let hyflSelectIndex = [];
	let hyflChooseList = [];
	const hyflSelect = e => {
		hyflSelectIndex = e.detail.index;
	}
	const hyflShowChoose = () => {
		hyflSelectIndex = [];
		hyflShow.value = true
	}

	const closeHyflPopup = type => {
		if (type === "confirm") {
			let tempArr = [];
			for (let i in hyflSelectIndex) {
				tempArr.push(hyflList.value[hyflSelectIndex[i]])
			};
			hyflChooseList = tempArr;
			searchInfo.hyfl = tempArr.map(item => item.value).join("、");
		}
		hyflShow.value = false;
	}

	// 搜索条件
	let searchInfo = reactive({
		year: null, //年度
		isHide: "包含", //是否隐藏,
		hyfl: null,
	})
	const createReport = () => {
		uni.$u.route({
			url: "/pages/analysis/media/index",
			params: {
				year: searchInfo.year,
				containHide: hideFull.find(item => item.value === searchInfo.isHide)?.key,
				hyfl: hyflChooseList.map(item => item.key).join(","),
				token: uni.getStorageSync('App-Token'),
			}
		})
		// 老版本下载pdf
		// getYearReportData(params).then(res => {
		// 	return console.log(res);
		// 	let url =
		// 		`${baseUrlIp}/projects/outApi/projects/statics/downReportPdf?url=${res.data.url}&year=${res.data.year}`
		// 	downLoadFile(url)
		// })
	}


	// 列表数据
	let showList = ref([{
		text: "行业分类",
		key: "hyflName",
		value: null,
		width: "200rpx"
	}, {
		text: "数量",
		key: "totalNum",
		value: null,
		width: "100rpx"
	}, {
		text: "总投资金额(亿元)",
		key: "totalAmt",
		value: null,
		width: "200rpx"
	}, {
		text: "年度计划投资金额(亿元)",
		key: "yearPlan",
		value: null,
		width: "200rpx"
	}, {
		text: "占比",
		key: "planRate",
		value: null,
		width: "100rpx"
	}, {
		text: "已完成金额(亿元)",
		key: "endAmt",
		value: null,
		width: "200rpx"
	}, ])
	let tableList = ref([]);
	const getTableData = () => {
		let params = {
			year: searchInfo.year,
			containHide: hideFull.find(item => item.value === searchInfo.isHide)?.key,
			// hyfl: hyflFull.find(item => item.value === searchInfo.hyfl)?.key ?? "",
		}

		getYearReportTableData(params).then(res => {
			tableList.value = res.data.hyflData;
		})
	}

	let isDownload = ref(false); // 是否正在下载
	let downloadPrecent = ref(0); //下载进度
	// 文件预览
	const downLoadFile = url => {
		isDownload.value = true;
		let downloadTask = uni.downloadFile({
			url,
			success: function(res) {
				isDownload.value = false;
				let filepathss = plus.io.convertLocalFileSystemURL(res.tempFilePath);
				setTimeout(
					() =>
					uni.openDocument({
						filePath: filepathss,
						showMenu: false,
						success: function() {},
						fail: function(failRes) {
							uni.showToast({
								title: '暂不支持此类型',
								duration: 2000,
								icon: "none",
							});
						}
					}),
					1000
				);
			},
			fail: function(failRes) {
				isDownload.value = false;
			}
		});

		downloadTask.onProgressUpdate(res => {
			downloadPrecent.value = res.progress;
		})
	}

	onLoad(() => {
		let now = new Date();
		searchInfo.year = now.getFullYear();
		defaultIndex.value = [searchInfo.year - 2000];
	})
</script>

<template>
	<view class="container">
		<page-title>投资分析报告</page-title>

		<view class="cards-list">
			<view class="card only-card">
				<!-- 年度 -->
				<view class="card-item first-card-item" @click="yearShowChoose()">
					<view class="card-item-name">年度</view>
					<view class="card-item-description">
						<view v-if="searchInfo.year">{{searchInfo.year}}</view>
						<view v-else class="remind-text">请选择年度</view>
						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
					</view>
				</view>
				<!-- 行业分类 -->
				<view class="card-item" @click="hyflShowChoose()">
					<view class="card-item-name">行业分类</view>
					<view class="card-item-description">
						<view v-if="searchInfo.hyfl">{{searchInfo.hyfl}}</view>
						<view v-else class="remind-text">请选择类型</view>
						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
					</view>
				</view>

				<!-- 是否隐藏 -->
				<view class="card-item" @click="hideShowChoose()">
					<view class="card-item-name">是否包含隐藏</view>
					<view class="card-item-description">
						<view v-if="searchInfo.isHide">{{searchInfo.isHide}}</view>
						<view v-else class="remind-text">请选择</view>
						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
					</view>
				</view>
			</view>

			<view class="search-btn" @click="createReport()">生成报告</view>

			<!-- 	<scroll-view class="swiper-item-content" scroll-y>
				<uni-table stripe emptyText="暂无更多数据">
					<uni-tr>
						<uni-th align="center" v-for="(showItem,showIndex) in showList" :index="showIndex"
							:width="showItem.width">{{showItem.text}}</uni-th>
					</uni-tr>

					<uni-tr v-for="(item,index) in tableList" :key="index">
						<uni-td align="center" v-for="(showItem,showIndex) in showList" :index="showIndex">
							{{item[showItem.key] ?? "--"}}
						</uni-td>
					</uni-tr>
				</uni-table>
			</scroll-view> -->

			<view class="gap-bottom"></view>
		</view>

		<!-- 年度选择 -->
		<u-picker :show="yearShow" :defaultIndex="defaultIndex" :columns="yearColumns" @confirm="yearClose"
			@cancel="yearClose" @close="yearClose" closeOnClickOverlay></u-picker>
		<!-- 是否隐藏 -->
		<u-picker :show="hideShow" :columns="hideColumns" @confirm="hideClose" @cancel="hideClose" @close="hideClose"
			closeOnClickOverlay></u-picker>
		<!-- 行业分类 -->
		<u-popup :show="hyflShow" @open="getHYFL()" mode="center">
			<view class="user-choose">
				<view class="user-choose-title">
					<view class="uesr-choose-icon hide"></view>
					行业分类
					<view class="uesr-choose-icon" @click="closeHyflPopup('close')"></view>
				</view>

				<view class="search-item">
					<scroll-view class="swiper-item-content" scroll-y>
						<uni-table type="selection" emptyText="暂无更多数据" @selection-change="hyflSelect">
							<!-- 表头行 -->
							<uni-tr :style="{backgroundColor: '#c4daff'}">
								<uni-th align="center" :style="{color: '#1869F6',fontWeight: 'bold'}">行业分类</uni-th>
							</uni-tr>
							<!-- 表格数据行 -->
							<uni-tr v-for="(item,index) in hyflList" :key="index">
								<uni-td align="center">{{item.value}}</uni-td>
							</uni-tr>
						</uni-table>
					</scroll-view>
				</view>

				<view class="search-btn" @click="closeHyflPopup('confirm')">确定</view>
			</view>
		</u-popup>

		<u-overlay :show="isDownload">
			<view class="download-box">
				<view class="loading-box">
					<view class="loading-icon">
						<u-loading-icon v-if="downloadPrecent !== '100'" size="40"></u-loading-icon>
						<u-icon v-else name="checkmark" size="40"></u-icon>
					</view>

					<view class="loading-text">附件下载中</view>

					<view class="loading-progress">
						<u-line-progress :percentage="downloadPrecent" activeColor="#1869F6"></u-line-progress>
					</view>
				</view>
			</view>
		</u-overlay>
	</view>
</template>

<style lang="scss" scoped>
	.search-btn {
		width: 98%;
		height: 84rpx;
		margin: 40rpx auto 56rpx;
		line-height: 84rpx;
		text-align: center;
		color: #FFFFFF;
		font-size: 36rpx;
		background: #1763E7;
		border-radius: 16rpx;
	}

	.download-box {
		display: flex;
		align-items: center;
		justify-content: center;
		height: 100%;

		.loading-box {
			display: flex;
			flex-direction: column;
			justify-content: space-between;
			width: 360rpx;
			height: 360rpx;
			padding: 20rpx;
			background-color: #fff;
			border-radius: 40rpx;
		}

		.loading-icon {
			flex: 4;
			display: flex;
			flex-direction: column;
			justify-content: center;
		}

		.loading-text {
			flex: 1;
			display: flex;
			align-items: flex-end;
			text-align: center;
		}

		.loading-progress {
			flex: 1;
			display: flex;
			align-items: flex-end;
		}
	}

	.swiper-item-content {
		height: 1200rpx;
	}

	::v-deep .uni-table-scroll {
		height: 1000rpx;
	}

	.user-choose {
		width: 666rpx;
		height: 1220rpx;
		padding: 30rpx 28rpx;

		.user-choose-title {
			display: flex;
			justify-content: space-between;
			width: 100%;
			margin-bottom: 54rpx;
			font-weight: 500;
			color: #3D3D3D;
			font-size: 32rpx;

			.uesr-choose-icon {
				width: 44rpx;
				height: 44rpx;
				background: url("@/static/message-close.svg");
				background-size: 100% 100%;
			}

			.hide {
				background: none;
			}
		}

		.search-item {
			display: flex;
			justify-content: space-between;
			align-items: flex-start;
			width: 606rpx;
			height: 950rpx;
			padding: 26rpx 30rpx;
			margin-bottom: 32rpx;
			font-size: 28rpx;
			border-radius: 20rpx;
			border: 2rpx solid #D0D9E7;

			.search-item-name {
				min-width: 128rpx;
				color: #939AA5;
			}

			.search-item-content {
				color: #3D3D3D;
				text-align: right;
			}

			.swiper-item-content {
				height: 900rpx;
			}
		}

		.search-btn {
			width: 606rpx;
			height: 64rpx;
			margin-top: 50rpx;
			line-height: 64rpx;
			text-align: center;
			color: #FFFFFF;
			font-size: 28rpx;
			background: #1869F6;
			border-radius: 16rpx;
		}
	}

	::v-deep .u-popup__content {
		border-radius: 28rpx !important;
	}

	::v-deep .uni-table-th-content {
		// color: #1869F6 !important;
		// font-weight: bold;
	}
</style>