<span class="field_label">时间:</span> <el-date-picker v-model="loseTime" type="daterange" value-format="yyyy-MM-dd" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" :clearable="false" > </el-date-picker>
2、JS
export default { data() { const _this = this; return {
loseTime: ‘‘, // 日期
startEndDate: ‘‘, // 选择的开始日期 pickerOptions: { disabledDate(time) { return _this.compateDate(time); }, onPick(v) { _this.setDisabledDate(v); }, }, }; }, methods: { // 选择日期后,设置可选范围,前后超过一年不可选择 setDisabledDate(v) {if (!v.maxDate) { this.startEndDate = v.minDate; } else { this.startEndDate = ""; } }, // 对比可选日期 设置禁用状态,前后一年之外、今日之后禁止选择 compateDate(v) { const date = this.startEndDate; const compToday = v.getTime() >= new Date().getTime(); if (date) { // 选择了开始日期触发 const curTime = v.getTime(); // 当前时间控件遍历的的时间戳 const oneYearBefore = date.getTime() - 365 * 24 * 3600 * 1000; // 选择的开始时间前一年的时间戳 const oneYearLater = date.getTime() + 365 * 24 * 3600 * 1000; // 选择的开始时间后一年的时间戳 let flag; // 当前遍历日期的时间戳比开始日期一年前的日期还小、比一年后/今天还大,返回true,可以添加到禁止选择列表 if ( curTime <= oneYearBefore || curTime >= oneYearLater || compToday ) { flag = true; } else { // 否则返回false,不添加到禁止选择列表 flag = false; } return flag; } // 初始化日期选择组件,或者选择了结束时间时返回 return compToday; }, }, }
原文:https://www.cnblogs.com/icebreaker/p/14817608.html