<template>
	<view class="form_warp">
		<view class="form_intro">
			<view>如有填报问题，请咨询公共服务中心</view>
			<view>中心值班电话：<text class="tel">66007587</text></view>
		</view>
		<view class="form_item_box">
			<view class="form_item_title">基本信息</view>
			<!-- <view class="form_item">
				<view class="form_item_label">管理单位名称：</view>
				<view class="form_item_input select">
					{{form.affiliatedUnit}}
				</view>
			</view> -->
			<view class="form_item">
				<view class="form_item_label">统计日期：</view>
				<view class="form_item_input picker">
					<picker mode="date" :value="form.reportDate" @change="bindDateChange">
						<text class="picker_select"
							:style="form.reportDate?'color:#333;':''">{{form.reportDate?form.reportDate:'请选择时段'}}</text>
						<uni-icons type="right" size="16" color="#D4D4D4"></uni-icons>
					</picker>
				</view>
			</view>
			<view class="form_item">
				<view class="form_item_label">统计时段：</view>
				<view class="form_item_input picker">
					<picker :value="index" :range="array" range-key="dictLabel" @change="changeStatPeriod">
						<text class="picker_select"
							:style="index>-1?'color:#333;':''">{{index>-1?array[index].dictLabel:'请选择时段'}}</text>
						<uni-icons type="right" size="16" color="#D4D4D4"></uni-icons>
					</picker>
				</view>
			</view>
		</view>
		<view class="form_item_box" style="margin-top: 30rpx;">
			<!-- 陆岛 -->
			<view class="form_item_li" v-for="(item,index) in form.bizWaterwayIslandDataSaveOrUpdateDTOList"
				:key="index">
				<view class="form_item"
					style="display:flex; justify-content: space-between;font-size: 30rpx;color:#333;font-weight: bold;margin-top: 30rpx;">
					序号-{{index+1}}
					<uni-icons type="trash" color="red" @click="delRow(index)" size="18"></uni-icons>
				</view>
				<view class="form_item">
					<view class="form_item_label">水路(陆岛)：</view>
					<view class="form_item_input picker">
						<picker :value="item.landNameIndex" :range="landList" @change="e => changeLandName(e, index)">
							<text class="picker_select"
								:style="item.landName?'color:#333;':''">{{item.landName ? item.landName : '请选择'}}</text>
							<uni-icons type="right" size="16" color="#D4D4D4"></uni-icons>
						</picker>
					</view>
				</view>
				<view class="form_item">
					<view class="form_item_label">航次：</view>
					<view class="form_item_input form_input">
						<uni-easyinput @blur="calcYoyMom(index)" type="number" v-model="item.voyage"
							placeholderStyle="color: #D4D4D4;font-size:28rpx;" placeholder="请输入" maxlength="20">
						</uni-easyinput>
					</view>
				</view>
				<!-- 同比环比 -->
				<view class="form_item_rate" :class="item.voyage && item.voyage == item.yesterdayVoyage ? 'danger' : '' ">
					<view class="rate_item">
						<view class="rate_item_label"
							:style="item.voyage && item.voyage == item.yesterdayVoyage ? 'color: #EB4747' : ''">航次环比(%)
						</view>
						<view class="rate_item_input"
							:style="item.voyage && item.voyage == item.yesterdayVoyage ? 'color: #EB4747' : ''">
							{{item.voyageRingRatio === 0 ? item.voyageRingRatio : item.voyageRingRatio ? item.voyageRingRatio.toFixed(2) : ''}}
						</view>
					</view>
					<view class="line"></view>
					<view class="rate_item">
						<view class="rate_item_label">航次同比(%)</view>
						<view class="rate_item_input">
							{{item.voyageYearOnYear === 0 ? item.voyageYearOnYear : item.voyageYearOnYear ? item.voyageYearOnYear.toFixed(2) : ''}}
						</view>
					</view>
				</view>
				<view class="form_item">
					<view class="form_item_label">人数：</view>
					<view class="form_item_input form_input">
						<uni-easyinput @blur="calcYoyMom(index)" type="number" v-model="item.numberOfPeople"
							placeholderStyle="color: #D4D4D4;font-size:28rpx;" placeholder="请输入" maxlength="20">
						</uni-easyinput>
					</view>
				</view>
				<!-- 同比环比 -->
				<view class="form_item_rate"
					:class="item.numberOfPeople && item.numberOfPeople == item.yesterdayNumberOfPeople ? 'danger' : '' ">
					<view class="rate_item">
						<view class="rate_item_label"
							:style="item.numberOfPeople && item.numberOfPeople == item.yesterdayNumberOfPeople ? 'color: #EB4747' : ''">人数环比(%)
						</view>
						<view class="rate_item_input"
							:style="item.numberOfPeople && item.numberOfPeople == item.yesterdayNumberOfPeople ? 'color: #EB4747' : ''">
							{{item.peopleRingRatio === 0 ? item.peopleRingRatio : item.peopleRingRatio ? item.peopleRingRatio.toFixed(2) : ''}}
						</view>
					</view>
					<view class="line"></view>
					<view class="rate_item">
						<view class="rate_item_label">人数同比(%)</view>
						<view class="rate_item_input">
							{{item.peopleYearOnYear === 0 ? item.peopleYearOnYear : item.peopleYearOnYear ? item.peopleYearOnYear.toFixed(2) : ''}}
						</view>
					</view>
				</view>
				<view class="form_item">
					<view class="form_item_label">昨日航次：</view>
					<view class="form_item_input form_input">
						{{item.yesterdayVoyage}}
					</view>
				</view>
				<view class="form_item">
					<view class="form_item_label">去年航次：</view>
					<view class="form_item_input form_input">
						{{item.lastYearVoyage}}
					</view>
				</view>
				<view class="form_item">
					<view class="form_item_label">昨日人数：</view>
					<view class="form_item_input form_input">
						{{item.yesterdayNumberOfPeople}}
					</view>
				</view>
				<view class="form_item">
					<view class="form_item_label">去年人数：</view>
					<view class="form_item_input form_input">
						{{item.lastYearNumberOfPeople}}
					</view>
				</view>
				<view class="line"></view>
			</view>
			<view class="add_btn" @click="addRow()">增行</view>

		</view>
		<!-- 底部按钮 -->
		<view class="foot_btn">
			<view class="act_btn" @click="doCancel">取消</view>
			<view class="act_btn blue" @click="doSubmit">确认</view>
		</view>
	</view>
</template>
<script>
	import {
		checkNotEmpty,
		getDateStr
	} from "../../../common/util.js"
	export default {
		data() {
			return {
				form: {
					"bizWaterwayIslandDataSaveOrUpdateDTOList": [{
						"landNameIndex":"",
						"landName": "",
						"lastYearNumberOfPeople": 0,
						"lastYearVoyage": 0,
						"numberOfPeople": 0,
						"peopleRingRatio": 0.0,
						"peopleYearOnYear": 0.0,
						"voyage": 0,
						"voyageRingRatio": 0.0,
						"voyageYearOnYear": 0.0,
						"yesterdayNumberOfPeople": 0,
						"yesterdayVoyage": 0
					}],
					"reportDate": ""
				}, //登录form
				array: [], //时段选择列表
				index: 2, //时段选择,默认0-24
				userInfo: {},
				landList: ['灵山岛', '斋堂岛', '青黄线', '竹岔', '田横'], //事故等级
				pageType: ''
			}
		},
		onLoad(options) {
			this.userInfo = uni.getStorageSync('userInfo');
			if (options.type == 'add') {
				this.pageType = 'add';
				let now = new Date();
				this.form.reportDate = getDateStr(now, -1); //默认前一天
				this.queryTime(); //统计时段
				this.queryLandList();//陆岛权限列表
			} else if (options.item) {
				this.form = JSON.parse(options.item);
				this.form.bizWaterwayIslandDataSaveOrUpdateDTOList = this.form.bizWaterwayIslandDataVOList;
				this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.map(item => {
					let idx = this.landList.findIndex(item2 => item2 == item.landName);
					item.landNameIndex = idx > -1 ? idx : '';
				})
				this.queryTime();
			} else if (options.id) {
				this.queryDetailInfo(options.id);
			}
		},
		methods: {
			formatdate(date) {
				return date.length < 12 ? date + ' 00:00:00' : date;
			},
			//陆岛列表
			queryLandList() {
				this.$request(getApp().globalData.baseUrl + '/api/biz/bizWaterwayIslandAuthority/list', {}, 'GET').then(res => {
					let arr = [];
					res.data.map(item => {
						arr.push(item.stationId);
					})
					this.landList = arr;
					this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.map(item => {
						let idx = this.landList.findIndex(item2 => item2 == item.landName);
						item.landNameIndex = idx > -1 ? idx : '';
					})
				})
			},
			//陆岛切换
			changeLandName(e, index) {
				//判断是否重复选择
				let idx = this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.findIndex(item => item.landNameIndex == e.detail
					.value);
				if (idx > -1 && this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].landNameIndex == '') {
					uni.showToast({
						title: '水运(陆岛)不能重复选择',
						icon: 'none'
					});
				}else{
					this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].landNameIndex = e.detail.value;
					this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].landName = this.landList[e.detail.value];
					this.calcYoyMom(index);
				}
			},
			//环比同比计算
			calcYoyMom(index) {
				if (this.form.reportDate == '' || this.form.statPeriod == '' || this.form
					.bizWaterwayIslandDataSaveOrUpdateDTOList[index].landName == '') {
					return;
				}
				this.$request(getApp().globalData.baseUrl + '/api/biz/waterwayIslandData/getYoyMom?statDate=' + this.form
						.reportDate + '&statPeriod=' + this.form.statPeriod + '&landName=' + this.form
						.bizWaterwayIslandDataSaveOrUpdateDTOList[index].landName + '&_t=' + Date.parse(new Date()), {},
						'GET')
					.then(res => {
						let yesterdayData = res.data.yesterdayData;
						let lastYearData = res.data.lastYearData;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].yesterdayVoyage = checkNotEmpty(yesterdayData.voyage) ? yesterdayData.voyage : 0;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].lastYearVoyage = checkNotEmpty(lastYearData.voyage) ? lastYearData.voyage : 0;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].yesterdayNumberOfPeople = checkNotEmpty(yesterdayData.numberOfPeople) ? yesterdayData.numberOfPeople : 0;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].lastYearNumberOfPeople = checkNotEmpty(lastYearData.numberOfPeople) ? lastYearData.numberOfPeople : 0;
						//环比-同比
						let obj = this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index];
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].voyageRingRatio = !checkNotEmpty(obj.voyage) ? '' : !checkNotEmpty(yesterdayData.voyage) || yesterdayData.voyage === 0 ? 100 : (parseInt(obj.voyage) - yesterdayData.voyage) / yesterdayData.voyage * 100 ;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].voyageYearOnYear = !checkNotEmpty(obj.voyage) ? '' : !checkNotEmpty(lastYearData.voyage) || lastYearData.voyage === 0 ? 100 : (parseInt(obj.voyage) - lastYearData.voyage) / lastYearData.voyage * 100;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].peopleRingRatio = !checkNotEmpty(obj.numberOfPeople) ? '' : !checkNotEmpty(yesterdayData.numberOfPeople) || yesterdayData.numberOfPeople === 0 ? 100 : (parseInt(obj.numberOfPeople) - yesterdayData.numberOfPeople) / yesterdayData.numberOfPeople * 100;
						this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index].peopleYearOnYear = !checkNotEmpty(obj.numberOfPeople) ? '' : !checkNotEmpty(lastYearData.numberOfPeople) || lastYearData.numberOfPeople === 0 ? 100 : (parseInt(obj.numberOfPeople) - lastYearData.numberOfPeople) / lastYearData.numberOfPeople * 100;
						console.log('环比同比', this.form.bizWaterwayIslandDataSaveOrUpdateDTOList[index])
					})
			},
			//id查询详情
			queryDetailInfo(id) {
				this.$request(getApp().globalData.baseUrl + '/api/biz/waterwayIslandData/getById/' + id, {},
					'GET').then(res => {
					this.form = res.data;
					this.form.bizWaterwayIslandDataSaveOrUpdateDTOList = this.form.bizWaterwayIslandDataVOList;
					this.queryTime(); //统计时段
					this.queryLandList();
				})
			},
			//统计时段切换选择
			changeStatPeriod(e) {
				this.index = e.detail.value;
				this.form.statPeriod = this.array[e.detail.value].dictValue;
				console.log('change 时段', this.form)
				//重新计算同比环比
				this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.map((item, index) => {
					this.calcYoyMom(index);
				})
			},
			//取消
			doCancel() {
				uni.navigateBack();
			},
			//选择统计日期
			bindDateChange(e) {
				this.form.reportDate = e.detail.value;
				//重新计算同比环比
				this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.map((item, index) => {
					this.calcYoyMom(index);
				})
			},
			//时段
			queryTime() {
				this.$request(getApp().globalData.baseUrl + '/api/dict/dictList?dictType=airport_time' + '&_t=' + Date
					.parse(
						new Date()), {}, 'GET').then(res => {
					this.array = res.data;
					if (this.pageType == 'add') {
						let now = new Date();
						//11:00-13:30 默认选择0-12
						let dateStr = getDateStr(now, 0);
						if (new Date(dateStr + ' 11:00').getTime() < new Date().getTime() && new Date().getTime() <
							new Date(dateStr +
								' 13:30').getTime()) {
							this.form.statPeriod = '0012';
							let idx = this.array.findIndex(item => item.dictValue == '0012');
							this.index = idx > -1 ? idx : '';
						} else {
							this.form.statPeriod = '03'; //默认0-24
							let idx = this.array.findIndex(item => item.dictValue == '03');
							this.index = idx > -1 ? idx : '';
						}
					} else {
						let idx = this.array.findIndex(item => item.dictValue == this.form.statPeriod);
						this.index = idx > -1 ? idx : '';
					}
				})
			},
			//增行
			addRow() {
				this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.push({
					"landNameIndex": "",
					"landName": "",
					"lastYearNumberOfPeople": 0,
					"lastYearVoyage": 0,
					"numberOfPeople": 0,
					"peopleRingRatio": 0.0,
					"peopleYearOnYear": 0.0,
					"voyage": 0,
					"voyageRingRatio": 0.0,
					"voyageYearOnYear": 0.0,
					"yesterdayNumberOfPeople": 0,
					"yesterdayVoyage": 0
				});
			},
			//删行
			delRow(index) {
				this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.splice(index, 1);
			},
			//确认提交
			doSubmit() {
				console.log(this.form)
				if (this.form.reportDate == '' || this.form.statPeriod == '') {
					uni.showToast({
						title: '报送日期和时段不能为空',
						icon: 'none'
					})
					return;
				}
				let checkAccident = true;
				if (this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.length > 0) {
					checkAccident = this.form.bizWaterwayIslandDataSaveOrUpdateDTOList.every(item => {
						return checkNotEmpty(item.landName) && checkNotEmpty(item.numberOfPeople) && checkNotEmpty(
							item.voyage)
					})
				}
				if (!checkAccident) {
					uni.showToast({
						title: '陆岛详情不能为空',
						icon: 'none'
					})
					return;
				}
				console.log(this.form.id)
				uni.showModal({
					title: '提示',
					content: this.form.id == undefined ? '您确认提交该条报送数据?' : '您确认将该条数据进行修改?',
					success: (res) => {
						if (res.confirm) {
							this.submitForm();
						}
					}
				})
			},
			submitForm() {
				uni.showLoading({
					title: '提交中...',
					mask: true
				})
				this.$request(getApp().globalData.baseUrl + '/api/biz/waterwayIslandData/saveOrUpdate', this
					.form,
					'POST').then(res => {
					uni.hideLoading();
					if (res.code == 200) {
						uni.showToast({
							title: '报送提交成功',
							icon: 'none',
							success: () => {
								if (this.form.id == undefined) {
									setTimeout(() => {
										uni.redirectTo({
											url: '/pages/water/waterWay/list'
										})
									}, 300)
								} else {
									uni.navigateBack();
								}
							}
						})
					}
				}).catch(() => {
					uni.hideLoading();
				})
			},
		}
	}
</script>

<style lang="scss" scoped>
	.form_warp {
		padding: 30rpx 30rpx 195rpx;

		.form_intro {
			color: #666;
			font-size: 26rpx;
			font-family: PingFang SC-Bold, PingFang SC;
			line-height: 48rpx;
			text-align: center;
			margin-bottom: 20rpx;

			.tel {
				color: #2D8CF0;
				font-weight: bold;
			}
		}

		.form_item_box {
			padding: 30rpx 20rpx 30rpx 30rpx;
			background-color: #fff;
			border-radius: 30rpx;

			//环比同比
			.form_item_rate {
				background: #F6F6F6;
				border: 1px solid #F6F6F6;
				padding: 30rpx;
				margin-bottom: 30rpx;
				border-radius: 30rpx;

				.line {
					height: 1px;
					background-color: #dfdfdf;
					margin: 30rpx 0;
				}

				.rate_item {
					display: flex;
					justify-content: space-between;
					font-size: 24rpx;
					font-family: PingFang SC-Regular, PingFang SC;
					font-weight: 400;

					.rate_item_label {
						color: #666;
						font-size: 24rpx;
					}

					.rate_item_input {
						color: #333;
						font-size: 28rpx;
					}
				}

				&.danger {
					background-color: #FEF6F3;
					border-color: #F0622D;
				}
			}

			.form_item_title {
				color: #333;
				line-height: 42rpx;
				font-size: 30rpx;
				font-family: PingFang SC-Bold, PingFang SC;
				font-weight: bold;
				margin-bottom: 30rpx;
			}

			.form_item_remark {
				margin-bottom: 30rpx;

				.form_item_label {
					color: #333333;
					line-height: 42rpx;
					font-size: 30rpx;
					font-family: PingFang SC-Bold, PingFang SC;
					font-weight: bold;
					margin-bottom: 30rpx;
				}
			}

			.form_item {
				display: flex;
				align-items: center;
				justify-content: space-between;
				line-height: 37rpx;
				font-family: PingFang SC-Regular, PingFang SC;
				font-weight: 400;
				margin-bottom: 30rpx;

				.form_item_label {
					width: 260rpx;
					color: #666666;
					font-size: 26rpx;
					word-break: break-all;
				}

				.form_item_input {
					color: #333;
					text-align: right;
					word-break: break-all;

					&.picker {
						flex: 1;
						// display: flex;
						// justify-content: space-between;

						// /deep/ picker {
						// 	flex: 1;
						// }

						.picker_select {
							color: #D4D4D4;
							font-size: 28rpx;
							font-family: PingFang SC-Regular, PingFang SC;
							font-weight: 400;
							text-align: right;
						}
					}

					//纯展示
					&.text {
						color: #333333;
						line-height: 40rpx;
						font-size: 28rpx;
						font-family: PingFang SC-Regular, PingFang SC;
						font-weight: 400;
					}

					//输入框
					&.form_input {
						/deep/ .is-input-border {
							border: 0 !important;

							.uni-easyinput__content-input {
								height: 35rpx !important;
								text-align: right;
							}
						}

						/deep/ .uni-date-x--border {
							border: 0 !important;

							.uni-date__x-input {
								// height: 35rpx !important;
								text-align: right;
							}
						}
					}
				}
			}
		}
	}

	//收费站
	.station_box {
		display: flex;
		flex-wrap: wrap;
		margin-top: 40rpx;

		.station_item {
			height: 60rpx;
			color: #666666;
			line-height: 60rpx;
			font-size: 26rpx;
			font-family: PingFang SC-Regular, PingFang SC;
			font-weight: 400;
			border-radius: 20rpx;
			border: 1rpx solid #C1C1C1;
			padding: 0 20rpx;
			margin-bottom: 40rpx;
			margin-right: 20rpx;

			&.active {
				position: relative;
				color: #1ECE5F;
				border-color: #1ECE5F;
				background: #EBFAF2;

				.tag {
					position: absolute;
					top: 0;
					right: 0;
					width: 34rpx;
					height: 23rpx;
					background: #1ECE5F;
					border-radius: 0rpx 20rpx 0rpx 5rpx;
					text-align: center;
				}
			}
		}
	}

	.foot_btn {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		display: flex;
		justify-content: space-between;
		padding: 40rpx 30rpx;
		background-color: #f5f5f5;
		z-index: 11;

		.act_btn {
			width: 329rpx;
			height: 90rpx;
			color: #666666;
			font-size: 28rpx;
			line-height: 90rpx;
			font-family: PingFang SC-Regular, PingFang SC;
			font-weight: 400;
			text-align: center;
			background: #F6F6F6;
			border-radius: 100rpx;
			border: 1rpx solid #C1C1C1;

			&.blue {
				color: #fff;
				background: #2D8CF0;
				border-color: #2D8CF0;
			}
		}
	}

	//增行
	.line {
		height: 1px;
		background-color: #E1E1E1;
	}

	.add_btn {
		height: 90rpx;
		line-height: 90rpx;
		color: #2D8CF0;
		font-size: 28rpx;
		font-family: PingFang SC-Regular, PingFang SC;
		font-weight: 400;
		text-align: center;
		background: #ECF5FF;
		border-radius: 30rpx;
		border: 2rpx solid #2D8CF0;
		margin-top: 30rpx;
	}

	.tab_box {
		display: flex;
		justify-content: space-around;

		.tab_nav {
			color: #999999;
			line-height: 42rpx;
			font-size: 30rpx;
			font-family: PingFang SC-Regular, PingFang SC;
			font-weight: 400;
			padding-bottom: 25rpx;

			&.active {
				position: relative;
				color: #2D8CF0;
				font-weight: bold;

				&::after {
					position: absolute;
					content: '';
					left: 50%;
					bottom: 0;
					width: 74rpx;
					height: 6rpx;
					background: #2D8CF0;
					border-radius: 100rpx;
					margin-left: -37rpx;
				}
			}
		}
	}

	button {
		background-color: #007aff;
		color: #ffffff;
	}
</style>
