| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | <template>	<view class="calendar-content" v-if="showCalendar">		<text class="example-info">日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等。</text>		<uni-section title="插入模式" type="line"></uni-section>		<view>			<!-- 插入模式 -->			<uni-calendar class="uni-calendar--hook" :selected="info.selected" :showMonth="false" @change="change" @monthSwitch="monthSwitch" />		</view>		<uni-section class="hideOnPc" title="弹出模式" type="line"></uni-section>		<view class="example-body hideOnPc">			<button class="calendar-button" type="button" @click="open">打开日历</button>		</view>		<uni-calendar ref="calendar" class="uni-calendar--hook" :clear-date="true" :date="info.date" :insert="info.insert" :lunar="info.lunar" :startDate="info.startDate"		 :endDate="info.endDate" :range="info.range" @confirm="confirm" @close="close"/>	</view></template><script>	/**	 * 获取任意时间	 */	function getDate(date, AddDayCount = 0) {		if (!date) {			date = new Date()		}		if (typeof date !== 'object') {			date = date.replace(/-/g, '/')		}		const dd = new Date(date)		dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期		const y = dd.getFullYear()		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0		return {			fullDate: y + '-' + m + '-' + d,			year: y,			month: m,			date: d,			day: dd.getDay()		}	}	export default {		components: {},		data() {			return {				showCalendar: false,				info: {					lunar: true,					range: true,					insert: false,					selected: []				}			}		},		onReady() {			this.$nextTick(() => {				this.showCalendar = true			})			// TODO 模拟请求异步同步数据			setTimeout(() => {				this.info.date = getDate(new Date(),-30).fullDate				this.info.startDate = getDate(new Date(),-60).fullDate				this.info.endDate =  getDate(new Date(),30).fullDate				this.info.selected = [{						date: getDate(new Date(),-3).fullDate,						info: '打卡'					},					{						date: getDate(new Date(),-2).fullDate,						info: '签到',						data: {							custom: '自定义信息',							name: '自定义消息头'						}					},					{						date: getDate(new Date(),-1).fullDate,						info: '已打卡'					}				]			}, 2000)		},		methods: {			open() {				this.$refs.calendar.open()			},			close(){				console.log('弹窗关闭');			},			change(e) {				console.log('change 返回:', e)				// 模拟动态打卡				if (this.info.selected.length > 5) return				this.info.selected.push({					date: e.fulldate,					info: '打卡'				})			},			confirm(e) {				console.log('confirm 返回:', e)			},			monthSwitch(e) {				console.log('monthSwitchs 返回:', e)			}		}	}</script><style lang="scss">	.example-body {		/* #ifndef APP-NVUE */		display: flex;		/* #endif */		flex-direction: row;	}	.calendar-button {		flex: 1;		font-weight: bold;		font-size: 32rpx;	}</style>
 |