<template>
	<view class="dateContainer">
		<view class="topSection">
			<view class="title">{{title}}</view>
			<view class="dateItems">
				<view class="item" v-for="(item, idx) in dateItems" :key="idx" :style="`color: ${item.value == defaultParameter.dateType ? '#454545' : '#999999'};`"
				 @click="screenAction(item.value)">
					{{item.title}}
				</view>
			</view>
		</view>
		<view class="botttomSection" @click="screenAction(4)">
			<view class="bottomItem">
				<view class="leftText">起</view>
				<view class="dateText">{{beginDate | visitTimeFilter}}</view>
				<image class="rightIcon" src="../../static/icons/more.png" mode=""></image>
			</view>
			<view class="bottomItem">
				<view class="leftText">终</view>
				<view class="dateText">{{endDate | visitTimeFilter}}</view>
				<image class="rightIcon" src="../../static/icons/more.png" mode=""></image>
			</view>
		</view>

		<dm-calendar-picker-view ref='calendarPickerView' @confirmSelDate='confirmSelDate'></dm-calendar-picker-view>
	</view>
</template>

<script>
	import dmCalendarPickerView from './dmCalendarPickerView.vue'
	import moment from '../../static/moment.min.js'
	import {
		displayDateFormatChi
	} from '../../static/format.js'

	export default {
		props: {
			title: {
				type: String,
				default: '筛选日期'
			},
			defaultParameter: {
				type: Object,
				default () {
					return {
						'dateType': '1',
						'startDate': '',
						'endDate': '',
						'terminal': '0'
					}
				}
			},
			modelValue: {
				type: [Number, String],
				default: '0'
			},
		},
		data() {
			return {
				dateItems: [{
						title: '今日',
						value: 1
					},
					{
						title: '近7日',
						value: 2
					},
					{
						title: '近30天',
						value: 3
					},
				],
				beginDate: null,
				endDate: null
			}
		},
		mounted() {

		},
		methods: {
			screenAction(val) {
				if (val < 4) {
					this.$emit('screenDateAction', val)
				} else {
					this.$refs.calendarPickerView.show()
				}
			},

			confirmSelDate(e) {
				const startDate = e.startDate;
				const endDate = e.endDate;
				var start = ''
				var end = ''
				if (moment(startDate).isBefore(endDate)) {
					start = startDate;
					end = endDate;
				} else {
					start = endDate;
					end = startDate;
				}

				this.$emit('screenDateAction', 4, start, end)
			},

			displayDate() {
				var dateType = parseInt(this.defaultParameter.dateType)
				let curDate = (new Date()).getTime();
				this.beginDate = null
				this.endDate = null

				if (dateType == 1) {
					this.beginDate = curDate
					this.endDate = curDate
				} else if (dateType == 2) {
					this.endDate = curDate
					this.beginDate = this.getBeginDate(6)
				} else if (dateType == 3) {
					this.endDate = curDate
					this.beginDate = this.getBeginDate(29)
				} else if (dateType == 4) {
					this.beginDate = this.stringToStamp(this.defaultParameter.startDate)
					this.endDate = this.stringToStamp(this.defaultParameter.endDate)
				}
			},

			getBeginDate(days) {
				let curDate = (new Date()).getTime();
				let beginDay = curDate - days * 24 * 60 * 60 * 1000
				return beginDay
			},
			stringToStamp(val) {
				// var timeStr = val.replace('-', '/') + ' ' + '00:00:00'
				var timeStr = val.replace(/-/g,'/') + " " + '00:00:00'
				var stamp = new Date(timeStr).getTime()
				return stamp
			}
		},

		filters: {
			visitTimeFilter(val) {
				return displayDateFormatChi(val)
			},
		},
		watch: {
			defaultParameter: {
				handler(e) {
					this.displayDate()
				},
				deep: true,
				immediate: true
			}
		},
		components: {
			dmCalendarPickerView
		}
	}
</script>

<style scoped lang="scss">
	.dateContainer {
		width: 100%;
		font-family: Verdana;
		padding: 0 30rpx;
		box-sizing: border-box;

		.topSection {
			width: 100%;
			display: flex;
			justify-content: space-between;
			align-items: center;

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

			.dateItems {
				display: flex;
				justify-content: flex-end;
				font-size: 28rpx;
				color: #999999;

				.item {
					margin-left: 20rpx;
				}
			}
		}

		.botttomSection {
			background-color: #F1F5F9;
			border-radius: 16rpx;
			width: 100%;
			height: 94rpx;
			display: flex;
			justify-content: space-between;
			padding: 0 30rpx;
			box-sizing: border-box;
			margin-top: 22rpx;

			.bottomItem {
				display: flex;
				justify-content: flex-start;
				align-items: center;

				.leftText {
					color: #999999;
					font-size: 28rpx;
					font-weight: bold;
					margin-right: 12rpx;
				}

				.dateText {
					color: #333333;
					font-size: 28rpx;
					margin-right: 20rpx;
				}

				.rightIcon {
					width: 15rpx;
					height: 24rpx;
				}

			}
		}

	}
</style>
