<el-form-item label="颁发日期" :rules="[{ required: true, message: '颁发日期不能为空' }]"> <el-date-picker v-model="formData.promulgateDate" value-format="yyyy-MM-dd" type="year" placeholder="选择年" :style="{ width: '33%' }" > </el-date-picker> </el-form-item> <el-form-item label="实施日期" :rules="[{ required: true, message: '实施日期不能为空' }]"> <el-date-picker v-model="formData.execDate" value-format="yyyy-MM-dd" type="year" placeholder="选择年" :style="{ width: '33%' }" :picker-options="expireTimeOption" > </el-date-picker> </el-form-item> <el-form-item label="失效日期" :rules="[{ required: true, message: '失效日期不能为空' }, { validator: (rule, value, callback) => checkExpiryDate(rule, value, callback, formData.promulgateDate), trigger: 'blur' }]"> <el-date-picker v-model="formData.expiryDate" value-format="yyyy-MM-dd" type="year" placeholder="选择年" :style="{ width: '33%' }" :picker-options="expiryDateOption"> </el-date-picker> </el-form-item> expiryDateOption: { // disabledDate: (time) => { // return time.getTime()< new Date(this.formData.promulgateDate).getTime() // } disabledDate: (time) => { if (!this.formData.execDate) { // 如果 execDate 为空,expiryDate<promulgateDate return time.getTime() < new Date(this.formData.promulgateDate).getTime() } else if (time.getTime() < new Date(this.formData.execDate).getTime()) { return this.formData.execDate = null } else if (time.getTime() > new Date(this.formData.promulgateDate).getTime()) { return this.formData.expiryDate = null } else { return time.getTime() < new Date(this.formData.promulgateDate).getTime() } },优化下这个方法
时间: 2024-03-11 09:43:25 浏览: 138
这段代码的主要作用是限制失效日期的选择范围,使其不能早于颁发日期或实施日期。以下是我给出的优化建议:
1. 将失效日期选择器的限制方法单独提出来,方便复用和测试。
2. 将失效日期选择器的限制方法拆分为两个部分,分别处理失效日期早于实施日期和晚于颁发日期的情况。
3. 增加对失效日期和实施日期的非空判断,避免空指针异常。
4. 修改失效日期选择器的限制方法的命名,使其更加准确和易懂。
优化后的代码如下:
```
function disableExpiryDate(time) {
if (!this.formData.execDate) {
// 如果 execDate 为空,expiryDate<promulgateDate
return time.getTime() < new Date(this.formData.promulgateDate).getTime();
} else if (time.getTime() < new Date(this.formData.execDate).getTime()) {
// 处理失效日期早于实施日期的情况
return true;
} else if (time.getTime() > new Date(this.formData.promulgateDate).getTime()) {
// 处理失效日期晚于颁发日期的情况
return true;
} else {
return false;
}
}
// 在模板中使用
<el-form-item label="失效日期" :rules="[{ required: true, message: '失效日期不能为空' }, { validator: (rule, value, callback) => checkExpiryDate(rule, value, callback, formData.promulgateDate), trigger: 'blur' }]">
<el-date-picker v-model="formData.expiryDate" value-format="yyyy-MM-dd" type="year" placeholder="选择年" :style="{ width: '33%' }" :picker-options="expiryDatePickerOptions"></el-date-picker>
</el-form-item>
// 在组件中定义
data() {
return {
expiryDatePickerOptions: {
disabledDate: disableExpiryDate.bind(this)
}
};
}
```
阅读全文