uniapp+vue3预约时间和日期

picker组件

预约时间和日期,不能选择过去的日期时间

html 复制代码
<view class="whiteBox paddingBottom">
	<view class="title">预约上门时间</view>
	<picker mode="date" :value="nowDate" @change="bindDateChange" fields="day"
		style="border-bottom: 1rpx solid #E7E7E7;" :start="minDate">
		<view class="row">
			<view class="label">日期选择</view>
			<view class="value">{{nowDate ? nowDate : '请选择'}}</view>
		</view>
	</picker>
	<picker mode="time" :value="nowTime" @change="onTime" :start="minTime">
		<view class="row">
			<view class="label">时间选择</view>
			<view class="value">{{nowTime ? nowTime : '请选择'}}</view>
		</view>
	</picker>
</view>
javascript 复制代码
<script setup>
	import {
		ref,
		reactive,
		shallowRef
	} from 'vue'
	import {
		onLoad,
		onShow,
		onReachBottom
	} from '@dcloudio/uni-app'
	import i from '@/libs/common/index.js'
	import api from '@/request/api.js'
	import throttle from '@/libs/function/throttle.js'
	import config from '@/libs/config/index.js'
	import {
		userStore
	} from '@/store/userStore.js'
	import {
		commonStore
	} from '@/store/commonStore.js'
	const user = userStore()
	const common = commonStore()
	
	const nowDate = ref(getDate({
		format: true
	})); // 当前日期
	const nowTime = ref(getTime({
		format: true
	})); // 当前时间
	const minDate = ref(getDate({
		format: true
	})); // 最小可选日期
	const minTime = ref(getTime({
		format: true
	})); // 最小可选时间

	function getTime({
		format
	} = {
		format: false
	}) {
		const date = new Date();
		let hours = date.getHours().toString().padStart(2, '0');
		let minutes = date.getMinutes().toString().padStart(2, '0');
		return format ? `${hours}:${minutes}` : date;
	}

	function getDate({
		format
	} = {
		format: false
	}) {
		const d = new Date();
		const year = d.getFullYear();
		const month = String(d.getMonth() + 1).padStart(2, '0');
		const day = String(d.getDate()).padStart(2, '0');
		return format ? `${year}-${month}-${day}` : d;
	}

	function bindDateChange(e) {
		const selectedDate = new Date(e.detail.value);
		selectedDate.setHours(0, 0, 0, 0); // 将选择的日期设置为当天的开始时间
		const today = new Date();
		today.setHours(0, 0, 0, 0);

		if (selectedDate.getTime() === today.getTime()) {
			// 选择的是今天,设置时间选择器的起始时间为当前时间,并重置当前时间为当前时间
			const currentTime = getTime({
				format: true
			});
			minTime.value = currentTime;
			nowTime.value = currentTime;
		} else {
			// 选择的是未来日期,时间选择器不限制,设置为00:00,并重置当前时间为00:00
			minTime.value = '00:00';
			nowTime.value = '00:00';
		}

		nowDate.value = e.detail.value;
	}

	function onTime(e) {
		const selectedTime = e.detail.value;
		nowTime.value = selectedTime;
	}


</script>
css 复制代码
.whiteBox {
	background: #FFFFFF;
	box-shadow: 0rpx 5rpx 15rpx 10rpx rgba(80, 80, 80, 0.0322);
	border-radius: 16rpx;
	margin: 0 30rpx 30rpx;
	padding-bottom: 40rpx;

	.title {
		padding-top: 30rpx;
		padding-left: 30rpx;
		font-weight: bold;
		font-size: 30rpx;
		color: #3D3D3D;
	}
	.row {
		display: flex;
		justify-content: space-between;
		align-items: center;
		border-bottom: 1rpx solid #E4E4E4;
		margin: 0 30rpx;
		padding: 30rpx 0;

		.label {
			font-size: 28rpx;
			color: #606266;
		}

		.value {
			font-size: 28rpx;
			color: #3D3D3D;
		}
	}

	.row:last-child {
		border: none;
	}
}

.paddingBottom {
	padding-bottom: 0;
}
相关推荐
星光一影5 小时前
陪诊陪检系统源码,陪诊小程序,陪诊APP,陪诊服务,家政上门系统,居家护理陪护源码
mysql·小程序·uni-app·php
qq_398586545 小时前
浏览器中内嵌一个浏览器
前端·javascript·css·css3
abiao19815 小时前
如何在 VSCode 中创建 Vue 项目
ide·vue.js·vscode
西西西西胡萝卜鸡6 小时前
虚拟列表(Virtual List)组件实现与优化铁臂猿版(简易版)
前端·vue.js
宇余6 小时前
Unibest:新一代uni-app工程化最佳实践指南
前端·vue.js
Qlittleboy6 小时前
uniapp里 rich-text 里的img图片如何控制最大宽度
uni-app
阿奇__6 小时前
uniapp h5 app 小程序获取当前定位
小程序·uni-app
*小雪6 小时前
uniapp写H5授权登录及分享,返回到目标页面
开发语言·javascript·uni-app
性野喜悲6 小时前
ts+uniapp小程序时间日期选择框(分开选择)
前端·javascript·vue.js
一只程序熊6 小时前
uniapp uniim ios配置消息推送
uni-app