| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 | <template>	<view>		<view class="calendar">			<view class="calendar_day">				<view class="day_x" :style="{'color': (day_index == index ? '#1EDA94' : '')}"					v-for="(item, index) in dayArr" :key="index" @click.stop="dayList(item,index)">					<view class="day_x_a">{{item.weeks}}</view>					<view class="day_x_b">{{item.days}}</view>				</view>			</view>			<view scroll-y class="calendar_time">				<view class="time_x" :class="host_index == item.timeStamp ? 'time_x_sty' : ''"					v-for="(item, index) in hostArr[day_index]" :key="index"					@click.stop="nowTimes < item.timeStamp ? hosts(item) : ''"					:style="{'color': (nowTimes > item.timeStamp ? '#999999' : '')}">{{item.hours}}</view>			</view>			<view style="color: #1EDA94;width: 100%;text-align: center;" @click="sub()">添加时间</view>		</view>		<!-- <view class="sub" @click="sub()">			添加待选		</view> -->	</view></template><script>	export default {		props: {			sta_num: {				type: Number | String,				default: 9			},			end_num: {				type: Number | String,				default: 18			},			int_num: {				type: Number | String,				default: 30			},		},		data() {			return {				dayArr: [],				hostArr: [],				day_index: 0,				host_index: '',				host_All: [],				nowTimes: '',			}		},		mounted() {			let dateArr = []			let today = new Date();			let nowTime = today.getTime() // 当前时间戳			this.nowTimes = parseInt(nowTime / 1000)			for (let i = 0; i < 5; i++) {				let newDate = new Date(today.getTime() + i * 1000 * 60 * 60 * 24)				let month = (parseInt(newDate.getMonth()) + 1) > 9 ? (parseInt(newDate.getMonth()) + 1) : "0" + (parseInt(					newDate.getMonth()) + 1) // 当前月份				let day = (newDate.getDate()) > 9 ? newDate.getDate() : "0" + newDate.getDate() //当前日期				let backTime = newDate.getTime() // 几天后时间戳				let backDays = newDate.getDay() // 几天后周几				let remTime = (backTime - nowTime) / 1000 // 距离今天几天				let week = ''				if (remTime == 0) {					week = "今天"				} else if (remTime == 86400) {					week = "明天"				} else if (remTime == 172800) {					week = "后天"				} else {					if (backDays == 0) {						week = "周日"					} else if (backDays == 1) {						week = "周一"					} else if (backDays == 2) {						week = "周二"					} else if (backDays == 3) {						week = "周三"					} else if (backDays == 4) {						week = "周四"					} else if (backDays == 5) {						week = "周五"					} else if (backDays == 6) {						week = "周六"					}				}				let fullDate = `${month}-${day}`				let ass = {					weeks: week,					days: fullDate				}				dateArr.push(ass)			}			this.dayArr = dateArr			let timeArr = []			for (let i = 0; i < 5; i++) {				// let as = new Date(new Date().toLocaleDateString()).getTime() / 1000				let as = new Date(new Date().toLocaleDateString()).getTime() / 1000 + i * 60 * 60 * 24				let staTime = this.sta_num * 60 * 60 + as				let endTime = this.end_num * 60 * 60 + as				let int = this.int_num * 60				let timeArr_s = []				let datatime = {					hours: '00:00',					timeStamp: ''				}								timeArr_s.push(datatime)				for (staTime; staTime < endTime - int; staTime + int) {					staTime = staTime + int					let hours = this.times(staTime)					let asb = {						hours,						timeStamp: staTime					}					timeArr_s.push(asb)					if(timeArr_s.length == 2){						timeArr_s[0].timeStamp = timeArr_s[1].timeStamp - 1800					}				}				timeArr.push(timeArr_s)			}			this.hostArr = timeArr		},		methods: {			// 点击日期			dayList(e, index) {				this.day_index = index				let day = this.dayArr[this.day_index]				let comTime = {					days: day.days,					weeks: day.weeks				}				this.$emit('getDate', comTime);			},			// 点击时间			hosts(e) {				this.host_All = e				this.host_index = e.timeStamp			},			// 点击立即预约			sub() {				if (this.host_index == '') {					this.$queue.showToast('请选择时间')				} else {					let day = this.dayArr[this.day_index]					let time = this.time(this.host_index)					let comTime = {						days: day.days,						weeks: day.weeks,						hours: this.host_All.hours,						timeStamp: this.host_All.timeStamp,						time: time					}					this.$emit('getTime', comTime);				}			},			// 格式化时间			times(data) {				let date = new Date(data * 1000);				//时间戳为10位需*1000,时间戳为13位的话不需乘1000				let h = date.getHours();				h = h < 10 ? ('0' + h) : h; //小时补0				let m = date.getMinutes();				m = m < 10 ? ('0' + m) : m; //分钟补0				return h + ':' + m			},			time(data, type) {				let date = new Date(data * 1000);				//时间戳为10位需*1000,时间戳为13位的话不需乘1000				let y = date.getFullYear();				let MM = date.getMonth() + 1;				MM = MM < 10 ? ('0' + MM) : MM; //月补0				let d = date.getDate();				d = d < 10 ? ('0' + d) : d; //天补0				let h = date.getHours();				h = h < 10 ? ('0' + h) : h; //小时补0				let m = date.getMinutes();				m = m < 10 ? ('0' + m) : m; //分钟补0				let s = date.getSeconds();				s = s < 10 ? ('0' + s) : s; //秒补0				if (type == 'yymmdd') {					return y + '-' + MM + '-' + d				} else if (type == 'hhmmss') {					return h + ':' + m + ':' + s;				} else {					return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;				}			}		}	}</script><style lang="scss">	page {		background-color: #F4F4F4;	}	.act {		color: #1EDA94;	}	.calendar {		// width: 710rpx;		height: min-content;		background-color: #FFFFFF;		margin: 20rpx auto 10rpx;		border-radius: 8rpx;		padding-bottom: 20rpx;	}	.calendar_day {		display: flex;		width: 100%;		height: 120rpx;		.day_x {			display: flex;			flex-flow: column nowrap;			justify-content: center;			align-items: center;			width: 20%;			height: 100%;			font-size: 30rpx;			color: #333333;		}	}	.calendar_time {		display: flex;		width: 100%;		height: min-content;		flex-flow: row wrap;		align-content: flex-start;		margin: 20rpx 0;		overflow-y: auto;		.time_x {			display: flex;			flex-flow: row;			justify-content: center;			align-items: center;			width: 20%;			height: 54rpx;			border-radius: 26rpx;			margin: 10rpx 0;			font-size: 30rpx;			color: #333333;		}		.time_x_sty {			background-color: #E8FAE1;			color: #2FB57A !important;		}	}	.sub {		display: flex;		justify-content: center;		align-items: center;		width: 710rpx;		height: 100rpx;		border-radius: 50rpx;		margin: 30rpx auto;		color: #FFFFFF;		font-size: 36rpx;		background-color: #2FB57A;	}</style>
 |