|                                                                                       |  | <template>  <view class="calendar">    <uv-calendar       ref="calendar"       title="出行日期"      mode="single"       rowHeight="110"      :defaultDate="defaultDate"      @confirm="confirm"    ></uv-calendar>  </view></template>
<script>  export default {    props: {      value: {        type: String,        default: null      },      options: {        type: Array,        default() {          return []        }      },    },    data() {      return {        defaultDate: null,      }    },    computed: {      selected: {        set(val) {          this.$emit('input', val)        },        get() {          return this.value        }      },      startDateList() {        return this.options.map(item => {          const { startDate } = item
          return this.$dayjs(`2025/${startDate}`).format('YYYY-MM-DD')        })      },    },		onReady() {			this.$refs.calendar.setFormatter(this.formatter);		},		methods: {			formatter(day) {        const dateStr = this.$dayjs(day.date).format('YYYY-MM-DD')	        const index = this.startDateList.findIndex(startDate => startDate === dateStr) 
        if (index === -1) {          day.disabled = true
          return day;        }
        const { startDate, endDate, priceDiscount } = this.options[index]
        // day.topInfo = `${startDate}-${endDate}`
        day.topInfo = `~${endDate}`        day.bottomInfo = `¥${priceDiscount}`        return day			},			open() {        if (this.selected) {          const index = this.options.findIndex(option => option.id === this.selected)          this.defaultDate = this.startDateList[index]        }
				this.$refs.calendar.open();			},			confirm(e) {        const dateStr = e[0]        const index = this.startDateList.findIndex(startDate => startDate === dateStr) 
        this.selected = this.options[index].id			},		}  }</script>
<style lang="scss" scoped></style>
 |