之前寫過基於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="width: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="width: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: '',
// 開始日期至結束日期
}
}
}
其實也沒有做太大的改動,就是將返回的條件更改了一下,處理了一下數據就可以了。共勉!
