vue两个时间选择器,在一个时间选择器确定时间后点击单选框选择时间段,另一个时间选择器发生改变到半年后时间
时间: 2024-05-03 13:16:57 浏览: 104
可以使用Vue的watch监听时间选择器的变化,当第一个时间选择器确定了时间且单选框被选中时,可以通过Vue的计算属性来计算半年后的时间,并将其赋值给第二个时间选择器的v-model。
具体实现代码如下:
```html
<template>
<div>
<div>
<label>开始时间:</label>
<el-date-picker
v-model="startTime"
type="datetime"
:picker-options="pickerOptions"
@change="handleChange"
></el-date-picker>
</div>
<div>
<label>结束时间:</label>
<el-date-picker
v-model="endTime"
type="datetime"
:picker-options="pickerOptions"
></el-date-picker>
</div>
<div>
<label>选择时间段:</label>
<el-radio-group v-model="timeRange">
<el-radio label="1">1小时</el-radio>
<el-radio label="3">3小时</el-radio>
<el-radio label="6">6小时</el-radio>
</el-radio-group>
</div>
</div>
</template>
<script>
export default {
data() {
return {
startTime: null,
endTime: null,
timeRange: null,
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
},
},
};
},
computed: {
halfYearLater() {
if (this.startTime) {
const halfYearLater = new Date(this.startTime);
halfYearLater.setMonth(halfYearLater.getMonth() + 6);
return halfYearLater;
}
return null;
},
},
watch: {
timeRange() {
if (this.timeRange && this.startTime) {
const endTime = new Date(this.startTime);
endTime.setHours(endTime.getHours() + parseInt(this.timeRange));
this.endTime = endTime;
}
},
startTime() {
if (this.timeRange) {
const endTime = new Date(this.startTime);
endTime.setHours(endTime.getHours() + parseInt(this.timeRange));
this.endTime = endTime;
}
},
halfYearLater() {
if (this.halfYearLater) {
this.endTime = this.halfYearLater;
}
},
},
methods: {
handleChange() {
if (this.timeRange && this.startTime) {
const endTime = new Date(this.startTime);
endTime.setHours(endTime.getHours() + parseInt(this.timeRange));
this.endTime = endTime;
}
},
},
};
</script>
```
在计算属性`halfYearLater`中,我们先判断第一个时间选择器是否已经选择了时间,如果已经选择了时间,就创建一个半年后的时间,并返回。在watch中,我们监听`timeRange`和`startTime`的变化,当它们的值都存在时,计算出结束时间,并将其赋值给第二个时间选择器的v-model。当`halfYearLater`发生变化时,将半年后的时间赋值给第二个时间选择器的v-model。
在模板中,我们使用了ElementUI的日期选择器和单选框组件,并绑定了对应的v-model和事件。同时,我们将第一个日期选择器的变化事件`@change`绑定到了方法`handleChange`上,当第一个时间选择器的值发生改变时,会调用该方法来计算结束时间。
阅读全文