之前写过基于element ui 中的日期控件都开始日期的限制和结束日期的限制,最近项目要求要做个限制日期在30天内,然后将之前的代码重构了一下。
代码如下
<el-form-item label="开始日期" label-width="90px" prop="startDate"> <el-date-picker v-model="statDate" :picker-options="startDateOptions" type="date" clearable style="140px" value-format="yyyy-MM-dd" placeholder="开始日期"/> </el-form-item> <el-form-item label="结束日期" label-width="90px" prop="endDate"> <el-date-picker v-model="endDate" :picker-options="EndDateOptions" type="date" clearable style="140px" value-format="yyyy-MM-dd" placeholder="结束日期"/> </el-form-item> export default{ data() { return { // 时间开始测试 startDateOptions: { // console.log(time) disabledDate: (time) => { if (this.endDate) {
const day=30*24*3600*1000 //将日期转换为毫秒 return time.getTime() > Date.now(this.endDate) - 8.64e7 ||time.getTime() < new Date(this.endDate).getTime()-day // 如果当天可选,就不用减8.64e7 ,将日期的限制在结束日期减去30天内可选,其他的日期不可选 } else { return time.getTime() < new Date(this.endDate).getTime() || time.getTime() > Date.now() || time.getTime() > Date.now(this.endDate) - 8.64e7 } } }, // 时间结束测试 EndDateOptions: { disabledDate: (time) => {
if(this.statDate){
const day=30*24*3600*1000
return time.getTime() > new Date(this.statDate).getTime()+ day|| time.getTime() > Date.now()
|| time.getTime()<new Date(this.statDate).getTime ||time.getTime() > Date.now(this.statDate) - 8.64e7 // 如果当天可选,就不用减8.64e7
}else{ return time.getTime() < new Date(this.statDate).getTime() || time.getTime() > Date.now() || time.getTime() > Date.now(this.statDate) - 8.64e7 // 如果当天可选,就不用减8.64e7
} } }, statDate: '', // 结束日期 endDate: '', // 开始日期至结束日期 } } }
其实也没有做太大的改动,就是将返回的条件更改了一下,处理了一下数据就可以了。共勉!