ant-design-vue/components/date-picker/demo/start-end.md

82 lines
1.9 KiB
Markdown
Raw Normal View History

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