<template>
<mt-field required label="开始时间" disabled placeholder="请选择开始时间" v-model="form.startTime" @click.native.capture="openDateStart">
<icon-svg iconClass="left"></icon-svg>
</mt-field>
<mt-field required label="结束时间" disabled placeholder="请选择结束时间" v-model="form.endTime" @click.native.capture="openDateEnd">
<icon-svg iconClass="left"></icon-svg>
</mt-field>
<!-- 开始时间 -->
<mt-datetime-picker ref="dateStart" type="date" @confirm="confirmDateStart" @input="inputDateStart"
year-format="{value} 年" month-format="{value} 月" date-format="{value} 日"
:closeOnClickModal="false" :endDate="startTimeEnd"
v-model="form.startTime"></mt-datetime-picker>
<!-- 结束时间 -->
<mt-datetime-picker ref="dateEnd" type="date" @confirm="confirmDateEnd" @input="inputDateEnd"
year-format="{value} 年" month-format="{value} 月" date-format="{value} 日"
:closeOnClickModal="false" :startDate="endTimeStart"
v-model="form.endTime"></mt-datetime-picker>
</template>
data(){
return {
form: {
startTime: this.$moment().format('YYYY-MM-DD'),
endTime: this.$moment().add(365,'days').format('YYYY-MM-DD'),
},
startTimeEnd: new Date(),
endTimeStart: new Date()
}
}
methods:{
openDateStart () {
this.$refs.dateStart.open()
},
inputDateStart (value) {
const startTime = this.$moment(value)
const endTime = this.$moment(this.form.endTime)
if (endTime.isBefore(startTime)) {
this.$toast({ message: '开始时间不能超过结束时间', duration: 3000 })
} else {
this.form.startTime = this.$moment(value).format('YYYY-MM-DD')
this.endTimeStart = this.$moment(value).toDate()
}
},
confirmDateStart (value) {
this.form.startTime = this.$moment(value).format('YYYY-MM-DD')
this.endTimeStart = this.$moment(value).toDate()
},
// 结束时间
openDateEnd () {
this.$refs.dateEnd.open()
},
inputDateEnd (value) {
const startTime = this.$moment(this.form.startTime)
const endTime = this.$moment(value)
if (endTime.isBefore(startTime)) {
this.$toast({ message: '开始时间不能超过结束时间', duration: 3000 })
} else {
this.form.endTime = this.$moment(value).format('YYYY-MM-DD')
this.startTimeEnd = this.$moment(value).toDate()
}
},
confirmDateEnd (value) {
this.form.endTime = this.$moment(value).format('YYYY-MM-DD')
this.startTimeEnd = this.$moment(value).toDate()
},
}
效果:点击输入框,弹出日期控件,data里form的初始化很重要.