<template>
	<view>
		<u-navbar   :is-back="true" title=" " :title-bold="true" :title-size="34"
					:background="{ background: '#57ab6d'}"
					back-icon-name="close" back-icon-size="34" back-icon-color="#f0f0f0"
					:border-bottom="false">
		</u-navbar>
		<view>
			<scroll-view :scroll-x="false" :scroll-y="true" class="hidden-scroll-bar"
						 style="'width: 100%;background-color: #ffffff;height:88.5vh">
				<!-- 头部块 -->
				<view style="padding-bottom: 20rpx;background-color:#57ab6d;">
					<view class="u-flex u-row-center u-col-center">
						<!-- 年度账单/月度账单 -->
						<view  style="width: 500rpx;">
							<u-tabs :list="tabList" :is-scroll="false" :current="currentTab" @change="tabChange"
									:font-size="32" :height="90" :bar-width="100"
									active-color="#ffffff" inactive-color="#d6d6d6" bg-color="#57ab6d"></u-tabs>
						</view>	
					</view>
					<!-- 月份,年份,类型 -->
					<view  style="padding:40rpx;width:100%;padding-bottom: 30rpx;"
							class="u-flex u-row-between u-col-center">
						<view style="width: 50%;" v-if="currentTab==0">
							<u-icon name="arrow-down" size="24" color="#ffffff"  @click="openTimePicker('month')"
								:label="currentBillObj.year+'年'+currentBillObj.month+'月'" 
								label-color="#ffffff"  
								label-size="30rpx" label-pos="left" 
								margin-right="6rpx">
							</u-icon>
						</view>
						<view style="width: 50%;" v-if="currentTab==1">
							<u-icon name="arrow-down" size="24" color="#ffffff"  @click="openTimePicker('year')"
								:label="currentBillObj.year+'年'" 
								label-color="#ffffff"  
								label-size="30rpx" label-pos="left" 
								margin-right="6rpx">
							</u-icon>
						</view>
						<view class="u-flex u-row-between u-col-center" style="color:#d6d6d6;width: 50%;">
							<view  :class="currentBillObj.currentbillTitle==0?'active-bill-type':'bill-type'" @click="changebillTitle(0)">支出</view>
							<view  :class="currentBillObj.currentbillTitle==1?'active-bill-type':'bill-type'" @click="changebillTitle(1)">收入</view>
							<view  :class="currentBillObj.currentbillTitle==2?'active-bill-type':'bill-type'" @click="changebillTitle(2)">其他</view>
						</view>
					</view>
					<!-- 支付类型摘要信息 -->		
					<view v-if="currentBillObj.currentbillTitle!=2"  
						  style="padding:40rpx;background-color:#57ab6d;width:100%;padding-top: 20rpx;">
						<view style="color:#d6d6d6;font-size: 26rpx;">
							共{{currentBillObj.currentbillTitle==0?'支出':'收入'}}{{currentBillObj.tradeCount}}笔，合计
						</view>
						<view class="u-flex u-row-left u-col-top" 
								style="color: #ffffff;font-size: 26px;margin-top: 20rpx;font-weight: bold;">
							<view style="margin-right:16rpx;font-size: 22px;margin-top: 4rpx;">¥</view>
							<view class="u-m-l-10">{{Number(currentBillObj.tradeAmount).toFixed(2)}}</view>
						</view>
					</view>
				</view>	
				<!-- 白色块 -->
				<view class="u-p-20" v-show="currentTab==0"
					  style="background-color: #ffffff;border-top-left-radius: 20rpx;border-top-right-radius: 20rpx;">
					<view class="u-flex u-row-between u-col-center  u-p-30" 
						style="background-color: #f0f0f0;border-radius: 20rpx;">
						<view class="u-flex u-row-left u-col-center">
							<view class="u-m-r-20">
								<u-icon name="red-packet-fill" color="#57ab6d" size="32"></u-icon>
							</view>
							<view>
								<view class="u-line-2" style="color:#909399;">使用记账本，查看分类统计(餐饮、交通等)</view>
							</view>
						</view>
						<view>
							<u-icon name="arrow-right" color="#909399" size="32"></u-icon>
						</view>
					</view>
					<view v-show="currentBillObj.currentbillTitle!=2"  >
						<!-- 图表 -->
						<view class="u-p-20">
							<view class="u-font-34 ">{{currentBillObj.currentbillTitle==0?'每月支出':'每月收入'}}对比</view>
							<view style="height: 500rpx;">
								<l-echart ref="chart"></l-echart>
							</view>
						</view>
						<!-- 排行榜 -->
						<view class="u-p-20">
							<view class="u-m-b-50">{{currentBillObj.currentbillTitle==0?'支出':'收入'}}排行榜</view>
							
							<view class="u-flex u-row-between u-col-center u-m-b-30" 
									v-for="(rankItem,index) in monthRankingkList" :key="index">
								<view class="u-flex u-row-left u-col-center">
									<view class="u-m-r-30" style="width: 40rpx;">{{rankItem.id}}</view>
									<view class="u-flex u-row-left u-col-center">
										<view>
											<u-image width="60rpx" height="60rpx" shape="circle" :src="rankItem.iconSrc"></u-image>
										</view>
										<view class="u-m-l-20 u-line-1" style="width: 350rpx;">{{rankItem.billTitle}}</view>
									</view>
								</view>
								<view>
									<view class="u-flex u-row-left u-col-center">
										<view style="color: #000000;font-weight: bold;width: 150rpx;text-align: right;">
											<text>¥</text>
											<text>{{Number(rankItem.amountValue).toFixed(2)}}</text>
										</view>
										<view class="u-m-l-20">
											<u-icon name="arrow-right" color="#909399"></u-icon>
										</view>
									</view>
								</view>
							</view>
						</view>
					</view>
					
					<view v-show="currentBillObj.currentbillTitle==2">
						<view style="padding-top: 20%;">
							<!-- 可以给src图片 -->
							<u-empty  text="无其他资金流转记录" mode="data" :icon-size="100"></u-empty>
						</view>
					</view>
				</view>
				
				<view class="u-p-40" v-show="currentTab==1"  
						style="background-color: #ffffff;border-top-left-radius: 20rpx;border-top-right-radius: 20rpx;">
					<view  v-if="currentBillObj.currentbillTitle!=2">
						<view class="u-font-34">
							{{currentBillObj.currentbillTitle==0?'支出':'收入'}}构成
						</view>
						
						<view class="u-m-t-40"  v-for="(yearBillItem,index) in yearBillBuildArr" :key="index">
							<u-row>
								<u-col :span="4">
									<view class="u-flex u-row-left u-col-center">
										<view>
											<u-image :src="yearBillItem.iconSrc" :width="36" :height="36"></u-image>
										</view>
										<view class="u-m-l-20 u-line-1" 
												style="width: 70%;font-size: 28rpx;">
												{{yearBillItem.billTitle}}
										</view>
									</view>
								</u-col>
								<u-col :span="4">
									<view>
										<u-line-progress  :show-percent="false"  :height="16"
														  :active-color="yearBillItem.color" 
														  :percent="yearBillItem.percentValue"></u-line-progress>
									</view>
								</u-col>
								<u-col :span="4">
									<view style="width: 100%;" class="u-flex u-row-right u-col-center">
										<view style="text-align: right;font-weight: bold;color:#000000;font-size: 26rpx;">
											¥{{Number(yearBillItem.amountValue).toFixed(2)}}
										</view>
										<view class="u-m-l-10">
											<u-icon name="arrow-right" color="#909399"></u-icon>
										</view>
									</view>
								</u-col>
							</u-row>
						</view>
					
					</view>
					<view  v-if="currentBillObj.currentbillTitle==2">
						<view class="u-font-34">
							<view class="u-flex u-row-left u-col-center">
								<view> 个人资金流转</view>
								<view class="u-m-l-16">
									<u-icon name="info-circle" color="#909399"></u-icon>
								</view>
							</view>
						</view>
						
						<view class="u-m-t-40">
							<view class="u-flex u-row-between u-col-center u-m-t-40" 
								  v-for="(otherItem,otherIndex) in yearBillBuildOtherArr" :key="otherIndex">
								<view class="u-flex u-row-left u-col-center">
									<view>
										<u-icon name="rmb-circle" color="#ff9900" size="40"></u-icon>
									</view>
									<view class="u-m-l-20 u-font-32">{{otherItem.title}}</view>
								</view>
								<view class="u-flex u-row-left u-col-center">
									<view style="font-weight: bold;">¥{{Number(otherItem.amountValue).toFixed(2)}}</view>
									<view class="u-m-l-10">
										<u-icon name="arrow-right" color="#909399"></u-icon>
									</view>
								</view>
							</view>
						</view>
					</view>
				</view>	 
						
					 
			</scroll-view>
		</view>
		<!-- 月份查询筛选-->
		<u-picker mode="time" v-model="monthPickerShow" :params="monthTimeParams" end-year="2026" 
			confirm-color="#3c2e55" confirm-text="确定" @confirm="monthTimePickerConfirm"
			:show-time-tag="false"></u-picker>
		<!-- 年度查询筛选-->
		<u-picker mode="time" v-model="yearPickerShow" :params="yearTimeParams" end-year="2026"
			confirm-color="#3c2e55" confirm-text="确定" @confirm="yearTimePickerConfirm"
			:show-time-tag="false"></u-picker>
	</view>
</template>

<script>
	// #ifdef APP-PLUS
	import * as echarts from '@/uni_modules/lime-echart/static/app/echarts.min';
	// #endif
	// #ifndef APP-PLUS
	import * as echarts from '@/uni_modules/lime-echart/static/web/echarts.esm.min';
	// #endif
	export default {
		data() {
			return {
				//年月tab切换器
				tabList:[
					{name:"月账单"},{name:"年账单"}
				],
				//当期年月tab的下标
				currentTab:0,
				//参数
				currentBillObj:{
					year:new Date().getFullYear(),  //年
					month:new Date().getMonth()+1,	//月
					currentbillTitle:0 ,//0支出 ,1收入 2其他
					tradeCount:264,
					tradeAmount:216734.8
				},
				monthPickerShow:false, //月份时间选择器开关
				yearPickerShow:false, //年度事件选择器开关
				//时间参数-月
				monthTimeParams:{
					year: true,
					month: true,
					day: false,
					hour: false,
					minute: false,
					second: false,
					timestamp: true,
				},
				//时间参数-年
				yearTimeParams:{
					year: true,
					month: false,
					day: false,
					hour: false,
					minute: false,
					second: false,
					timestamp: true,
				},
				//月度排行榜
				monthRankingkList:[],
				//年度账单构成
				yearBillBuildArr:[
					{
						billTitle:"转账",
						percentValue:70,
						amountValue:513080,
						color:"#F29100",
						iconSrc:"/static/image/bill/zhuanzhang.jpg"
					},
					{
						 billTitle:"消费支出",
						 percentValue:20,
						 amountValue:231160.58,
						 color:"#2979ff",
						 iconSrc:"/static/image/bill/xiaofei.jpg"
					},
					{
						 billTitle:"发红包",
						 percentValue:10,
						 amountValue:44650,
						 color:"#fa3534",
						 iconSrc:"/static/image/bill/hongbao.jpg"
					}
				],
				//年度账单其他类型的数据结构
				yearBillBuildOtherArr:[],
				//图表插件 :https://ext.dcloud.net.cn/plugin?id=4899
				//图表的配置 参考:https://echarts.apache.org/zh/option.html#xAxis.axisLine.lineStyle.join
				chartOption: {
					xAxis: {
						type: 'category',
						data: ['7月', '8月', '9月', '10月', '11月', '12月'],
						axisLabel: {
							color: '#909399',
							fontSize:10,
						},
						axisLine:{
							lineStyle:{
								color:'rgb(172, 233, 189)'
							}
						}
					},
					yAxis: {
						type: 'value',
						show:false,
					},
					series: [{
						data: [0,0,0,0,0,0],
						type: 'bar',//柱状
						showBackground:false,//是否显示阴影
						color:'rgb(172, 233, 189)',//柱体颜色
						borderColor:'#fff',//柱体背景颜色
						barWidth:20,//柱条的宽度，
						label:{
							show:true,
							position:'top',
							fontSize:9,
							color:'inherit',
							formatter:function(params){
								//console.log(params);
								let val= params.value;
								//console.log("数值",val);
								if(val<10000){
									return "¥"+val.toFixed(2);
								}else{
									return "¥"+(val/10000).toFixed(1)+"万"
								}
							}
						},
					}]
				}
			};
		},
		
		mounted:function(){
			let that=this;
			that.$refs.chart.init(echarts, chart=> {
				that.getMonthData();
				chart.on('click',function(params){
					that.listenerChartClick(params.dataIndex)
				})
			});
		},
		methods:{
			//年账单,月账单切换事件
			tabChange:function(index){
				this.currentTab = index;
				if(index==1){
					this.getYearBillData();
				}else{
					//获取月度数据,以图表为例
					this.getMonthData();
				}
			},
			//打开时间选择器
			openTimePicker:function(type){
				let that=this;
				if(type=='month'){
					that.monthPickerShow=true;	
				}
				if(type=='year'){
					that.yearPickerShow=true;	
				}
			},
			//选择时间变化-月度
			monthTimePickerConfirm:function(obj){
				let year=obj.year;
				let monthStr=obj.month;
				let month= (new Date(obj.timestamp*1000)).getMonth()+1;
				console.log("选择的月份",month);
				this.currentBillObj.month=month;
				this.currentBillObj.year=year;
				this.getMonthData();
			},
			//选择时间变化-年度
			yearTimePickerConfirm:function(obj){
				let year=obj.year;
				this.currentBillObj.year=year;
				this.getYearBillData();
			},
			//改变账单类型  0支出 1收入 2其他
			changebillTitle:function(index){
				this.currentBillObj.currentbillTitle=index;
				//年度账单
				if(this.currentTab==1){
					this.getYearBillData();
				}
				//获取月度数据,以图表为例
				if(this.currentTab==0&&index!=2){
					this.getMonthData();
				}
			},
			//获取图表数据
			getMonthData:function(){
				let that=this;
				let param={
					currentTab:this.currentTab, //0月度  1年度
					currentBillType:this.currentBillObj.currentbillTitle,//0支出 1收入 2其他
					year:this.currentBillObj.year,		//当前年度
					month:this.currentBillObj.month  	//当前月度(如果当前选择是年度,month参数要忽略的)
				};
				console.log("获取月度账单参数",param);
				if(this.currentTab==0){
					if(this.currentBillObj.currentbillTitle==1){
						//下面数据临时写死,实际后端请求要得到柱状图的的x,y坐标系的数据以及月度排行数据
						let xData=['6月', '7月', '8月', '9月', '10月', '11月'];
						let currentMonthIndex= xData.findIndex(item=>item.indexOf(that.currentBillObj.month)!=-1);
						//console.log("currentMonthIndex",currentMonthIndex);
						let dataArr=[21000,84000,16000,98000,102000,216743];
						let currentMonthValue= dataArr[currentMonthIndex];
						dataArr[currentMonthIndex]={
							value:currentMonthValue,
							itemStyle:{
								color:"#19bE6B"
							}
						}
						that.chartOption.xAxis.data=xData;
						that.chartOption.series[0].data=dataArr;
						that.$refs.chart.setOption(this.chartOption);
						//模拟后台数据
						that.currentBillObj.tradeCount=267;//交易记录次数
						that.currentBillObj.tradeAmount=318962.2;//交易记录总额
						//月度排行数据
						that.monthRankingkList=[
							{id:1,iconSrc:"/static/image/bill/zhuanzhang.jpg",billTitle:"转账",amountValue:182204.3},
							{id:2,iconSrc:"/static/image/bill/xiaofei.jpg",billTitle:"二维码收付款",amountValue:21523.5},
							{id:3,iconSrc:"/static/image/bill/hongbao.jpg",billTitle:"微信红包",amountValue:8550},
						];
					}else{
						let xData=['6月', '7月', '8月', '9月', '10月', '11月'];
						let currentMonthIndex= xData.findIndex(item=>item.indexOf(that.currentBillObj.month)!=-1);
						//console.log("currentMonthIndex",currentMonthIndex);
						let dataArr=[55000,102000,38000,116000,114000,265400];
						let currentMonthValue= dataArr[currentMonthIndex];
						dataArr[currentMonthIndex]={
							value:currentMonthValue,
							itemStyle:{
								color:"#19bE6B"
							}
						}
						that.chartOption.xAxis.data=xData;
						this.chartOption.series[0].data=dataArr;//模拟后台数据
						this.$refs.chart.setOption(this.chartOption);
						that.currentBillObj.tradeCount=324;//交易记录次数
						that.currentBillObj.tradeAmount=216734.8;//交易记录总额
						that.monthRankingkList=[
							{id:1,iconSrc:"/static/image/bill/zhuanzhang.jpg",billTitle:"转账",amountValue:182204.3},
							{id:2,iconSrc:"/static/image/bill/xiaofei.jpg",billTitle:"二维码收付款",amountValue:21523.5},
							{id:3,iconSrc:"/static/image/bill/hongbao.jpg",billTitle:"微信红包",amountValue:8550},
						];
					}
				}
			},
			//获取年账单
			getYearBillData:function(){
				let that=this;
				let param={
					currentTab:this.currentTab, //0月度  1年度
					currentBillType:this.currentBillObj.currentbillTitle,//0支出 1收入 2其他
					year:this.currentBillObj.year,		//当前年度
					month:this.currentBillObj.month  	//当前月度(如果当前选择是年度,month参数要忽略的)
				};
				console.log("获取年度度账单参数",param);
				if(this.currentTab==1){
					that.currentBillObj.currentbillTitle;
					//收入
					if(that.currentBillObj.currentbillTitle==0){
						that.currentBillObj.tradeCount=3120;
						that.currentBillObj.tradeAmount=3816734.8;
						this.yearBillBuildArr=[
							{
								billTitle:"转账",
								percentValue:78,
								amountValue:that.currentBillObj.tradeAmount*0.78,
								color:"#F29100",
								iconSrc:"/static/image/bill/zhuanzhang.jpg"
							},
							{
								 billTitle:"消费支出",
								 percentValue:21,
								 amountValue:that.currentBillObj.tradeAmount*0.21,
								 color:"#2979ff",
								 iconSrc:"/static/image/bill/xiaofei.jpg"
							},
							{
								 billTitle:"发红包",
								 percentValue:1,
								 amountValue:that.currentBillObj.tradeAmount*0.01,
								 color:"#fa3534",
								 iconSrc:"/static/image/bill/hongbao.jpg"
							}
						];
					}
					//支出
					if(that.currentBillObj.currentbillTitle==1){
						that.currentBillObj.tradeCount=3878;
						that.currentBillObj.tradeAmount=4201384.68;
						this.yearBillBuildArr=[
							{
								billTitle:"收转账",
								percentValue:80,
								amountValue:that.currentBillObj.tradeAmount*0.8,
								color:"#F29100",
								iconSrc:"/static/image/bill/zhuanzhang.jpg"
							},
							{
								 billTitle:"二维码收款",
								 percentValue:10,
								 amountValue:that.currentBillObj.tradeAmount*0.1,
								 color:"#fa3534",
								 iconSrc:"/static/image/bill/hongbao.jpg"
							},
							{
								 billTitle:"收红包",
								 percentValue:5,
								 amountValue:that.currentBillObj.tradeAmount*0.05,
								 color:"#fa3534",
								 iconSrc:"/static/image/bill/hongbao.jpg"
							},
							{
								 billTitle:"退款",
								 percentValue:3,
								 amountValue:that.currentBillObj.tradeAmount*0.03,
								 color:"#2979ff",
								 iconSrc:"/static/image/bill/xiaofei.jpg"
							},
							{
								 billTitle:"其他",
								 percentValue:2,
								 amountValue:that.currentBillObj.tradeAmount*0.02,
								 color:"#2979ff",
								 iconSrc:"/static/image/bill/hongbao.jpg"
							}
						];
					}
					//其他
					if(that.currentBillObj.currentbillTitle==2){
						this.yearBillBuildOtherArr=[
							{title:"零钱提现",amountValue:1001},
							{title:"零钱提现",amountValue:430}
						];
					}
				}
			},
			//监听柱状图点击事件
			listenerChartClick(dataIndex){
				console.log("dataIndex",dataIndex);
				let monthIndex= this.chartOption.xAxis.data[dataIndex];
				this.currentBillObj.month=monthIndex.replace('月','');
				this.getMonthData();
			},
		}
	}
</script>

<style lang="scss" scoped>
	.bill-type{
		border-radius: 30rpx;
		padding: 4rpx 16rpx;
		color: #ffffff;
	}
	.active-bill-type{
		border: 1rpx solid #fff;
		border-radius: 30rpx;
		padding: 4rpx 16rpx;
		color: #ffffff;
	}
</style>

