票务网站开发,seo工具包,自己做网站什么类型的比较好,工业设计服务平台效果 思路
查阅elemnet plus官网#xff0c;日期时间选择器typedatetimerange这个选中开始时间并没有对应事件会被触发#xff0c;因此思路更换成typedatetime的两个组成一起可以通过监听开始时间v-model的值变化更新结束时间的值。
代码
日期时间…效果 思路
查阅elemnet plus官网日期时间选择器typedatetimerange这个选中开始时间并没有对应事件会被触发因此思路更换成typedatetime的两个组成一起可以通过监听开始时间v-model的值变化更新结束时间的值。
代码
日期时间选择器
templatediv classdataStyleel-date-picker v-modelstartTime typedatetime classstartStyle placeholder请选择开始时间:disabled-datedisabledFutureDate /-el-date-picker v-modelendTime typedatetime classendStyle placeholder请选择结束时间:disabled-datedisabledEndDate //div
/templatescript setup
import { ref, watch } from vue;// 定义开始时间和结束时间
const startTime ref();
const endTime ref();// 禁用未来日期
const disabledFutureDate (time) {const now new Date();// 禁用当天 23:59:59 之后的时间const endOfToday new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);return time.getTime() endOfToday.getTime();
};// 自动设置结束时间为开始时间的 30 分钟后
watch(startTime, (newStartTime) {if (newStartTime) {const start new Date(newStartTime); // 将开始时间转换为日期对象const newEndTime new Date(start.getTime() 30 * 60 * 1000); // 增加30分钟endTime.value newEndTime; // 设置结束时间}
});
//允许结束时间只能大于或等于开始时间
const disabledEndDate (time) {if (!startTime.value) return disabledFutureDate(time);const start new Date(startTime.value);return time.getTime() start.getTime() || disabledFutureDate(time);
};
/script
style langscss
.startStyle,
.endStyle {.el-input__wrapper {border-radius: 0;box-shadow: none}
}
/stylestyle langscss scoped
.dataStyle {background-color: #fff;width: 24rem;display: flex;.startStyle .endStyle {width: 12rem;}
}
/style日期选择器
templatediv classparentStyleel-date-picker classleftStyle popper-classleftPopper v-modelform.startTime typedate:disabled-datedisabledDateStart placeholder选择开始日期 /-el-date-picker classrightStyle popper-classrightPopper v-modelform.endTime typedate:disabled-datedisabledDate placeholder选择结束日期 //div/templatescript setup
import dayjs from dayjs;
import { reactive, watch } from vue;
const form reactive({startTime: ,endTime:
});
watch(() form.startTime, (newValue, oldValue) {if (newValue) {const start dayjs(newValue)form.endTime new Date(start.add(1, day).toISOString()) // 使用 ISO 8601 格式console.log(form);}
})
const disabledDateStart (time) {return time.getTime() Date.now();
}
const disabledDate (time) {if (!form.startTime) {return false; // 若未选择开始时间不禁用任何日期}return time.getTime() form.startTime;
}/script
style langscss
.leftStyle,
.rightStyle {.el-input__wrapper {border-radius: 0;box-shadow: none}
}.leftPopper {}.rightStyle {}
/stylestyle langscss scoped
.parentStyle {background-color: #fff;width: 20rem;display: flex;align-items: center;justify-content: space-between;border-radius: 5rem;.leftStyle,.rightStyle {width: 9rem;}
}
/style