324 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			324 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | |
| 	<view class="content">
 | |
| 		<view class="djsTimes">
 | |
| 			<view class="times">
 | |
| 				<view class='time_kuang'>
 | |
| 					<view class='tk1'>{{times.userDay}}</view>
 | |
| 					<view class='tk2'>{{'天'}}</view>
 | |
| 				</view>
 | |
| 				<view class='time_kuang'>
 | |
| 					<view class='tk1'>{{times.userHr}}</view>
 | |
| 					<view class='tk2'>{{'时'}}</view>
 | |
| 				</view>
 | |
| 				<view class='time_kuang'>
 | |
| 					<view class='tk1'>{{times.userMin}}</view>
 | |
| 					<view class='tk2'>{{'分'}}</view>
 | |
| 				</view>
 | |
| 				<view class='time_kuang'>
 | |
| 					<view class='tk1'>{{times.userSec}}</view>
 | |
| 					<view class='tk2'>{{'秒'}}</view>
 | |
| 				</view>
 | |
| 			</view>
 | |
| 			<view class="timeRemarks">
 | |
| 				{{'显示进行中最早的倒计时'}}
 | |
| 			</view>
 | |
| 		</view>
 | |
| 		<view class="timeSlide">
 | |
| 			<view class="timeA">{{'开始时间'}}</view>
 | |
| 			<view class="timeB" @click="openDate(0)">
 | |
| 				{{ queryParams.endStartDate?queryParams.endStartDate:'开始时间' }}
 | |
| 			</view>
 | |
| 			<view class="timeA">{{'至'}}</view>
 | |
| 			<view class="timeB" @click="openDate(1)">
 | |
| 				{{ queryParams.endDate?queryParams.endDate:'结束时间' }}
 | |
| 			</view>
 | |
| 			<view class="seatch_r" @click="getDataList">
 | |
| 				<u-icon name="search" size="22" color="#fff"></u-icon>
 | |
| 			</view>
 | |
| 		</view>
 | |
| 		<template v-if="dataList.length>0">
 | |
| 			<view class="thecontent" @click="goDetail(item)" v-for='(item,index) in dataList' :key="index">
 | |
| 				<view class="line_box">
 | |
| 					<view class='line1'>{{'考核状态'}}</view>
 | |
| 					<view class='line2'>{{item.isReachVal}}</view>
 | |
| 				</view>
 | |
| 				<view class="line_box">
 | |
| 					<view class='line1'>{{'礼包数量'}}</view>
 | |
| 					<view class='line3'>{{item.giftNum}}</view>
 | |
| 				</view>
 | |
| 			
 | |
| 				<view class="line_box">
 | |
| 					<view class='line1'>{{'开始时间'}}</view>
 | |
| 					<view class='line2'>{{item.enableDate}}</view>
 | |
| 				</view>
 | |
| 				<view class="line_box">
 | |
| 					<view class='line1'>{{'结束时间'}}</view>
 | |
| 					<view class='line2'>{{item.endDate}}</view>
 | |
| 				</view>
 | |
| 				<view class="line_box">
 | |
| 					<view class='line1'>{{'考核用时(天)'}}</view>
 | |
| 					<view class='line2'>{{item.useDate}}</view>
 | |
| 				</view>
 | |
| 				<view class="line_box">
 | |
| 					<view class='line1'>{{'剩余时间'}}</view>
 | |
| 					<view class='line2'>{{item.daystime}}</view>
 | |
| 				</view>
 | |
| 			
 | |
| 			
 | |
| 			</view>
 | |
| 		</template>
 | |
| 		<u-empty
 | |
| 		v-else
 | |
| 		        mode="data"
 | |
| 		     
 | |
| 		>
 | |
| 		</u-empty>
 | |
| 		<u-datetime-picker :closeOnClickOverlay="true" @close="dataShow = false" @cancel="dataShow = false"
 | |
| 			@confirm="getDate" :show="dataShow" v-model="value1" mode="date"></u-datetime-picker>
 | |
| 	</view>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| 	import * as ene from '@/config/market.js'
 | |
| 	import {
 | |
| 		formatMsToDate
 | |
| 	} from '@/util/index'
 | |
| 
 | |
| 	export default {
 | |
| 		data() {
 | |
| 			return {
 | |
| 				dataList: [],
 | |
| 				queryParams: {
 | |
| 					pageNum: 1,
 | |
| 					pageSize: 50,
 | |
| 					endStartDate: "",
 | |
| 					endDate: "",
 | |
| 
 | |
| 				},
 | |
| 				dataShow: false,
 | |
| 				timeIndex: 0,
 | |
| 				value1: '',
 | |
| 				times: {
 | |
| 					userDay: "0",
 | |
| 					userHr: "00",
 | |
| 					userMin: "00",
 | |
| 					userSec: "00"
 | |
| 				},
 | |
| 				theSecond: "",
 | |
| 				countdownInterval:""
 | |
| 			}
 | |
| 		},
 | |
| 		onLoad() {
 | |
| 
 | |
| 			this.getDataList();
 | |
| 
 | |
| 
 | |
| 		},
 | |
| 		beforeDestroy() {
 | |
| 		 clearInterval(this.countdownInterval); // 清除倒计时定时器
 | |
| 		},
 | |
| 		methods: {
 | |
| 			goDetail(item) {
 | |
| 				uni.navigateTo({
 | |
| 					url: '/pages/makerspaceView/energySiloDetail?pkId=' + item.pkId
 | |
| 				})
 | |
| 			},
 | |
| 			// 倒计时事件
 | |
| 			countdown() {
 | |
| 				const that = this;
 | |
| 				// 获取后台接口返回的时间戳(以秒为单位)
 | |
| 				let surplusDate = that.theSecond;
 | |
| 				// 创建一个计时器
 | |
| 				that.countdownInterval = setInterval(() => {
 | |
| 					// 将时间戳减去一秒
 | |
| 					surplusDate--;
 | |
| 					if (surplusDate <= 0) {
 | |
| 						// 倒计时结束
 | |
| 						clearInterval(that.countdownInterval);
 | |
| 						return;
 | |
| 					}
 | |
| 					// 计算倒计时的天、小时、分钟和秒数
 | |
| 					let day = Math.floor(surplusDate / (60 * 60 * 24));
 | |
| 					let hour = Math.floor((surplusDate % (60 * 60 * 24)) / (60 * 60));
 | |
| 					let minute = Math.floor((surplusDate % (60 * 60)) / 60);
 | |
| 					let second = surplusDate % 60;
 | |
| 					// 将单个数字补零,以保持统一的格式
 | |
| 					day = day < 10 ? "0" + day : day;
 | |
| 					hour = hour < 10 ? "0" + hour : hour;
 | |
| 					minute = minute < 10 ? "0" + minute : minute;
 | |
| 					second = second < 10 ? "0" + second : second;
 | |
| 
 | |
| 					// 将倒计时的天、小时、分钟和秒数分别存储起来
 | |
| 					// 在页面上展示倒计时
 | |
| 					that.times.userDay = day;
 | |
| 					that.times.userHr = hour;
 | |
| 					that.times.userMin = minute;
 | |
| 					that.times.userSec = second;
 | |
| 
 | |
| 				}, 1000);
 | |
| 			},
 | |
| 			openDate(index) {
 | |
| 				this.timeIndex = index
 | |
| 				this.dataShow = true
 | |
| 			},
 | |
| 			getDate(e) {
 | |
| 				if (this.timeIndex == 1) {
 | |
| 					this.queryParams.endDate = formatMsToDate(e.value)
 | |
| 				} else {
 | |
| 					this.queryParams.endStartDate = formatMsToDate(e.value)
 | |
| 				}
 | |
| 				this.dataShow = false
 | |
| 			},
 | |
| 			getDataList() {
 | |
| 				ene.getSiloList(this.queryParams).then(res => {
 | |
| 					if (res.total > 0) {
 | |
| 						this.theSecond = res.rows[0].surplusDate
 | |
| 						res.rows.forEach(ele => {
 | |
| 							ele.daystime = ele.surplusDate
 | |
| 							let days = parseInt(ele.daystime / (3600 * 24)); // 计算天数
 | |
| 							let hours = parseInt((ele.daystime % (3600 * 24)) / 3600); // 计算小时数
 | |
| 							let minutes = parseInt((ele.daystime % 3600) / 60); // 计算分钟数
 | |
| 							let seconds = ele.daystime % 60; // 计算秒数
 | |
| 							ele.daystime = days + '天' + hours + '时' + minutes +'分' + seconds +'秒';
 | |
| 						})
 | |
| 						this.dataList = res.rows
 | |
| 						this.countdown()
 | |
| 					} else {
 | |
| 						this.theSecond =0
 | |
| 						this.dataList = res.rows
 | |
| 						this.times.userDay = "0";
 | |
| 						this.times.userHr = "0";
 | |
| 						this.times.userMin = "0";
 | |
| 						this.times.userSec = "0";
 | |
| 					 clearInterval(this.countdownInterval); // 清除倒计时定时器
 | |
| 
 | |
| 					}
 | |
| 
 | |
| 				})
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
| 	::v-deep .u-empty{
 | |
| 		background-color: #FFFFFF;
 | |
| 	}
 | |
| 	.content {
 | |
| 		background-color: #F2F2F2;
 | |
| 
 | |
| 		.djsTimes {
 | |
| 			background: linear-gradient(180deg, #FE5541, #F65C1A);
 | |
| 			padding: 37rpx 60rpx;
 | |
| 
 | |
| 			.times {
 | |
| 				display: flex;
 | |
| 				align-items: center;
 | |
| 				justify-content: space-around;
 | |
| 
 | |
| 				.time_kuang {
 | |
| 					width: 106rpx;
 | |
| 					height: 106rpx;
 | |
| 					padding: 13rpx 17rpx;
 | |
| 					background-color: rgba(255, 255, 255, 0.35);
 | |
| 					box-shadow: 0rpx 3rpx 7rpx 0rpx rgba(255, 255, 255, 0.35);
 | |
| 					border-radius: 8rpx;
 | |
| 					display: flex;
 | |
| 					flex-direction: column;
 | |
| 					justify-content: center;
 | |
| 					align-items: center;
 | |
| 
 | |
| 					.tk1 {
 | |
| 						font-size: 68rpx;
 | |
| 						font-family: Arial;
 | |
| 						font-weight: bold;
 | |
| 						color: #FFFFFF;
 | |
| 					}
 | |
| 
 | |
| 					.tk2 {
 | |
| 						font-size: 24rpx;
 | |
| 						font-family: Source Han Sans CN;
 | |
| 						font-weight: 400;
 | |
| 						color: #FFFFFF;
 | |
| 					}
 | |
| 
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			.timeRemarks {
 | |
| 				margin-top: 33rpx;
 | |
| 				text-align: center;
 | |
| 				ont-size: 26rpx;
 | |
| 				font-family: Source Han Sans CN;
 | |
| 				font-weight: 400;
 | |
| 				color: #FFFFFF;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		.timeSlide {
 | |
| 			display: flex;
 | |
| 			align-items: center;
 | |
| 			padding: 38rpx 26rpx;
 | |
| 			justify-content: space-between;
 | |
| 			background-color: #FFFFFF;
 | |
| 
 | |
| 			.timeA {
 | |
| 				font-size: 26rpx;
 | |
| 				font-family: Source Han Sans CN;
 | |
| 				font-weight: 400;
 | |
| 				color: #333;
 | |
| 				margin-right: 46rpx;
 | |
| 			}
 | |
| 
 | |
| 			.timeB {
 | |
| 				font-size: 24rpx;
 | |
| 				font-family: Arial;
 | |
| 				font-weight: 400;
 | |
| 				color: #999999;
 | |
| 				text-align: center;
 | |
| 			}
 | |
| 
 | |
| 			.seatch_r {
 | |
| 				background: #005BAC;
 | |
| 				border-radius: 50%;
 | |
| 				padding: 8rpx;
 | |
| 				margin-left: 24rpx;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		.thecontent {
 | |
| 			background-color: #FFFFFF;
 | |
| 			margin-top: 25rpx;
 | |
| 			margin-bottom: 21rpx;
 | |
| 			padding: 10rpx 23rpx 30rpx 23rpx;
 | |
| 
 | |
| 			.line_box {
 | |
| 				display: flex;
 | |
| 				align-items: center;
 | |
| 				justify-content: space-between;
 | |
| 				margin-top: 25rpx;
 | |
| 
 | |
| 				.line1 {
 | |
| 					font-size: 26rpx;
 | |
| 					font-family: Source Han Sans CN;
 | |
| 					font-weight: 400;
 | |
| 					color: #999999;
 | |
| 				}
 | |
| 
 | |
| 				.line2 {
 | |
| 					font-size: 26rpx;
 | |
| 					font-family: Source Han Sans CN;
 | |
| 					font-weight: 400;
 | |
| 					color: #333333;
 | |
| 				}
 | |
| 
 | |
| 				.line3 {
 | |
| 					font-size: 26rpx;
 | |
| 					font-family: Source Han Sans CN;
 | |
| 					font-weight: 400;
 | |
| 					color: rgba(251, 48, 36, 1);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| </style> |