82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
| 
 | |
| <cn>
 | |
| #### 自定义日期范围选择
 | |
| 当 `RangePicker` 无法满足业务需求时,可以使用两个 `DatePicker` 实现类似的功能。
 | |
| > * 通过设置 `disabledDate` 方法,来约束开始和结束日期。
 | |
| > * 通过 `open` `onOpenChange` 来优化交互。
 | |
| </cn>
 | |
| 
 | |
| <us>
 | |
| #### Customized Range Picker
 | |
| When `RangePicker` does not satisfied your requirements, try to implement similar functionality with two `DatePicker`.
 | |
| > * Use the `disabledDate` property to limit the start and end dates.
 | |
| > * Improve user experience with `open` and `onOpenChange`.
 | |
| </us>
 | |
| 
 | |
| ```html
 | |
| <template>
 | |
|   <div>
 | |
|     <a-date-picker
 | |
|       :disabledDate="disabledStartDate"
 | |
|       showTime
 | |
|       format="YYYY-MM-DD HH:mm:ss"
 | |
|       v-model="startValue"
 | |
|       placeholder="Start"
 | |
|       @openChange="handleStartOpenChange"
 | |
|     />
 | |
|     <a-date-picker
 | |
|       :disabledDate="disabledEndDate"
 | |
|       showTime
 | |
|       format="YYYY-MM-DD HH:mm:ss"
 | |
|       placeholder="End"
 | |
|       v-model="endValue"
 | |
|       :open="endOpen"
 | |
|       @openChange="handleEndOpenChange"
 | |
|     />
 | |
|   </div>
 | |
| </template>
 | |
| <script>
 | |
| export default {
 | |
|   data () {
 | |
|     return {
 | |
|       startValue: null,
 | |
|       endValue: null,
 | |
|       endOpen: false,
 | |
|     }
 | |
|   },
 | |
|   watch: {
 | |
|     startValue(val) {
 | |
|       console.log('startValue', val)
 | |
|     },
 | |
|     endValue(val) {
 | |
|       console.log('endValue', val)
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     disabledStartDate (startValue) {
 | |
|       const endValue = this.endValue;
 | |
|       if (!startValue || !endValue) {
 | |
|         return false;
 | |
|       }
 | |
|       return startValue.valueOf() > endValue.valueOf();
 | |
|     },
 | |
|     disabledEndDate (endValue) {
 | |
|       const startValue = this.startValue;
 | |
|       if (!endValue || !startValue) {
 | |
|         return false;
 | |
|       }
 | |
|       return startValue.valueOf() >= endValue.valueOf();
 | |
|     },
 | |
|     handleStartOpenChange (open) {
 | |
|       if (!open) {
 | |
|         this.endOpen = true;
 | |
|       }
 | |
|     },
 | |
|     handleEndOpenChange (open) {
 | |
|       this.endOpen = open;
 | |
|     },
 | |
|   },
 | |
| }
 | |
| </script>
 | |
| ```
 |