Vue封装DateRangePicker组件流程详细介绍
前言
日期选择器在实际使用中,可能会要求默认固定日期、回显日期或者是时间固定点(00:00:00到23:59:59)
一、封装el-date-picker
<template>
<div>
<el-date-picker
@change="handleChange"
v-model="dateValue"
type="daterange"
align="right"
unlink-panels
:clearable=false
value-format="timestamp"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
:default-time="['00:00:00', '23:59:59']">
</el-date-picker>
</div>
</template>
<script>
export default {
name: 'DateRangePicker',
props: {
defaultTimeRange: {
type: Object,
default() {
return {};
}
}
},
data() {
return {
dateValue: '',
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date(new Date().toLocaleDateString()); ;
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
},
{
text: '最近一个月',
onClick(picker) {
const end = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date(new Date().toLocaleDateString()); ;
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
},
{
text: '最近三个月',
onClick(picker) {
const end = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1);
const start = new Date(new Date().toLocaleDateString()); ;
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
}
};
},
mounted() {
this.dateValue = [new Date(this.defaultTimeRange.from), new Date(this.defaultTimeRange.to)];
},
methods: {
handleChange(time) {
time = time || [];
this.$emit('handleChange', {start_time: time[0], end_time: time[1]});
}
}
};
</script>二、父组件中进行引用
父组件index.vue
<DateRangePicker @handleChange="handleTime" :default-time-range="defaultTimeRange"/>
<script>
import { generateTodayDefaultTimeRange } from '@/utils/utils';
export default {
data () {
return {
defaultTimeRange: { ...generateTodayDefaultTimeRange() }
}
}
methods:{
handleTime(time) {
//console.log(time)获取选择时间
}
}
}
</script>
引用JSutils.js
// 今日默认时间范围
export function generateTodayDefaultTimeRange(date = new Date()) {
const to = formatDateTime(new Date(date.getTime()));
const from = formatDateTime(new Date(date.getTime()));
return { from, to };
}
总结
- 综上所述,可见当前日期范围选择器默认时间是今天
default-time设置时间点固定为起始的00:00:00到23:59:59- 快捷项也设置成当前模式,自定义起始和结束时间文案
- 当前的获取时间格式为时间戳形式
value-format="timestamp"
到此这篇关于Vue封装DateRangePicker组件流程详细介绍的文章就介绍到这了,更多相关Vue DateRangePicker内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue轮播组件实现$children和$parent 附带好用的gif录制工具
这篇文章主要介绍了vue轮播组件实现,$children和$parent,附带好用的gif录制工具,需要的朋友可以参考下2019-09-09
vue-admin-template配置快捷导航的代码(标签导航栏)
这篇文章主要介绍了vue-admin-template配置快捷导航的方法(标签导航栏),本文通过实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
这篇文章主要介绍了vue vantUI tab切换时 list组件不触发load事件的解决办法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-02-02
vue之el-menu-item如何更改导航菜单栏选中的背景颜色
这篇文章主要介绍了vue之el-menu-item如何更改导航菜单栏选中的背景颜色问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05
vue项目页面的打印和下载PDF加loading效果的实现(加水印)
这篇文章主要介绍了vue项目页面的打印和下载PDF加loading效果的实现(加水印),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12
Vue3.0利用vue-grid-layout插件实现拖拽布局
这篇文章主要介绍了Vue3.0利用vue-grid-layout插件实现拖拽布局,工作中难免遇到需要对页面布局进行拖拽然后改变布局,保存布局,下面文章就围绕Vue3.0利用vue-grid-layout插件实现拖拽布局的相关资料展开详细内容,需要的朋友可以参考一下2021-11-11


最新评论