<template> <view class="u-page"> <u-navbar title="日历" @leftClick="navigateBack" safeAreaInsetTop fixed placeholder ></u-navbar> <u-cell-group> <u-cell @click="showCalendar(index)" :title="item.title" v-for="(item, index) in list" :key="index" :label="values[index]" isLink > <image slot="icon" class="u-cell-icon" :src="item.iconUrl" mode="widthFix" ></image> </u-cell> </u-cell-group> <u-calendar :show="show1" defaultDate="2022-02-15" @confirm="confirm" @close="close" ></u-calendar> <u-calendar :show="show2" mode="multiple" :defaultDate="['2022-03-01']" @confirm="confirm" @close="close" ></u-calendar> <u-calendar :show="show3" mode="range" @confirm="confirm" @close="close" ></u-calendar> <u-calendar :show="show4" mode="range" @confirm="confirm" @close="close" color="#f56c6c" :defaultDate="customThemeDefaultDate" ></u-calendar> <u-calendar :show="show5" mode="range" @confirm="confirm" @close="close" :defaultDate="customTextDefaultDate" startText="住店" endText="离店" confirmDisabledText="请选择离店日期" :formatter="formatter" ></u-calendar> <u-calendar :show="show6" @confirm="confirm" @close="close" :maxDate="maxDate" ></u-calendar> <u-calendar :show="show7" @confirm="confirm" @close="close" showLunar ></u-calendar> <u-calendar :show="show8" @confirm="confirm" @close="close" mode="multiple" :defaultDate="defaultDateMultiple" ></u-calendar> </view> </template> <script> export default { data() { const d = new Date() const year = d.getFullYear() let month = d.getMonth() + 1 month = month < 10 ? `0${month}` : month const date = d.getDate() return { index: 0, show1: false, show2: false, show3: false, show4: false, show5: false, show6: false, show7: false, show8: false, values: ['','','','','','','',''], customThemeDefaultDate: [`${year}-${month}-${date}`, `${year}-${month}-${date + 5}`], customTextDefaultDate: [`${year}-${month}-${date}`], maxDate: `${year}-${month}-${date + 10}`, defaultDateMultiple: [`${year}-${month}-${date}`, `${year}-${month}-${date + 1}`, `${year}-${month}-${date + 2}`], list: [{ title: '单个日期', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/7.png' }, { title: '多个日期', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/8.png' }, { title: '日期范围', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/9.png' }, { title: '自定义主题颜色', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/15.png' },{ title: '自定义文案', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/14.png' },{ title: '日期最大范围', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/13.png' },{ title: '显示农历', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/5.png' },{ title: '默认日期', iconUrl: 'https://cdn.uviewui.com/uview/demo/calendar/10.png' } ] } }, methods: { showCalendar(index) { this.index = index + 1 this[`show${index + 1}`] = true }, navigateBack() { uni.navigateBack(); }, confirm(e) { this[`show${this.index}`] = false console.log(e); switch(this.index - 1) { case 0: this.values[this.index - 1] = e[0]; break; case 1: e.forEach((value, index) => { index === 0 ? this.values[this.index - 1] = value : this.values[this.index - 1] += ';' + value }) break; case 2: this.values[this.index - 1] = e[0] + '~' + e[e.length - 1]; break; case 3: this.values[this.index - 1] = e[0] + '~' + e[e.length - 1]; break; case 4: this.values[this.index - 1] = e[0] + '~' + e[e.length - 1]; break; case 5: this.values[this.index - 1] = e[0]; break; case 6: this.values[this.index - 1] = e[0]; break; case 7: e.forEach((value, index) => { index === 0 ? this.values[this.index - 1] = value : this.values[this.index - 1] += ';' + value }) break; } }, close() { this[`show${this.index}`] = false }, formatter(day) { const d = new Date() let month = d.getMonth() + 1 const date = d.getDate() if(day.month == month && day.day == date + 3) { day.bottomInfo = '有优惠' day.dot = true } return day } }, } </script> <style lang="scss"> .u-page { padding: 0; } </style>