【ElementUI】ruleForm循环中根据上个选择的开始日期,限制结束日期不能大于开始日期
如下图所示
<div class="addbdan"
v-for="(item, index) in ruleForm.employeesAssessments"
:key="index"
>
<p class="fl addsy">第{{index+1}}次</p>
<el-form-item label="考核日期:"
:prop="`employeesAssessments[${index}].examinationDate`"
:rules="{ type: 'string', required: true, message: '请选择日期', trigger: 'change' }"
class="bitianxian">
<el-date-picker
:picker-options="pickerOptions2"
v-model="item.examinationDate"
value-format="yyyy-MM-dd"
:default-value='defaultTimekh'
type="date"
placeholder="选择日期"
@change="change_khrq(item.examinationDate)">
</el-date-picker>
</el-form-item>
<el-form-item label="发证日期:"
:prop="`employeesAssessments[${index}].certificateDate`"
:rules="{ type: 'string', required: true, message: '请选择日期', trigger: 'change' }"
:class="item.certificatePass==2?'':'bitianxian'">
<el-date-picker
:picker-options="beginDate(item.examinationDate)"
v-model="item.certificatePass==2?'':item.certificateDate"
value-format="yyyy-MM-dd"
:default-value='defaultTimefz'
type="date"
:disabled="item.certificatePass==2"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</div>
data
data (){
return {
pickerOptions2: {
disabledDate(time) {
return time.getTime() > Date.now();
}
},
}
}
change_khrq(e){
console.log(e)
}
beginDate(oldtime){
if(oldtime != '') {
let date = new Date(oldtime)
let pickerDate = date.toDateString() === new Date(oldtime).toDateString()
console.log(pickerDate)
return {
// 日期限制
disabledDate: (time) => {
let old = oldtime
return time.getTime() < new Date(old).getTime() - 86400000 || time.getTime() > Date.now()
},
}
}
},
<el-form-item label="培训开始时间:"
prop="trainingStartTime"
class="bitianxian">
<el-date-picker
v-model="ruleForm.trainingStartTime"
value-format="yyyy-MM-dd HH:mm:ss"
:default-value='defaultTimepx'
type="datetime"
:picker-options="pickerOptions0"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="培训结束时间:"
prop="trainingEndTime"
class="bitianxian">
<el-date-picker
v-model="ruleForm.trainingEndTime"
value-format="yyyy-MM-dd HH:mm:ss"
:default-value='defaultTimepx'
type="datetime"
:picker-options="endDate(ruleForm.trainingStartTime)"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
data
pickerOptions0: {
},
defaultTimepx: new Date(), //日期
endDate(oldtime){
if(oldtime != '') {
let date = new Date(oldtime)
let minutes = date.getMinutes() + 1
// // h和m 是将日期只取时分
let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
let m = (minutes < 10 ? '0' + minutes : minutes);
// pickerDate 判断当前选择时间是否等于上条数据时间
// 若等于时,限制时间从00:00:00 - 上条数据开始时间,不等于时,24小时可选
let pickerDate = date.toDateString() === new Date(oldtime).toDateString()
return {
// 日期限制
disabledDate: (time) => {
return time.getTime() < new Date(oldtime).getTime()- 1*24*60*60*1000;//减去一天的时间代表可以选择同一天;
},
// 时间限制
selectableRange: pickerDate? h + m + ':00 - 23:59:59' : '00:00:00 - 23:59:59'
}
}
},