欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > vue elemnt-ui自定义时间日期选择

vue elemnt-ui自定义时间日期选择

2025/6/1 9:08:59 来源:https://blog.csdn.net/weixin_43278947/article/details/145076571  浏览:    关键词:vue elemnt-ui自定义时间日期选择

如图
在这里插入图片描述
先写个日期组件 DateRangePicker/index.vue

<script>
import { DatePicker, DatePickerOptions } from 'element-ui'
import { calendarShortcuts } from '@/utils/shortcuts'export default {name: 'DateRangePicker',mixins: [DatePicker],props: {type: {type: String,default: 'datetimerange'},valueFormat: {type: String,default: 'yyyy-MM-dd HH:mm:ss'},defaultTime: {type: Array,default: _ => ['00:00:00', '23:59:59']},pickerOptions: {type: DatePickerOptions,default: _ => {return { shortcuts: calendarShortcuts }}},size: {type: String,default: 'small'},rangeSeparator: {type: String,default: ':'},startPlaceholder: {type: String,default: '开始日期'},endPlaceholder: {type: String,default: '结束日期'}}
}
</script>

核心代码 shortcuts.js

import Date from './datetime.js'export const calendarBaseShortcuts = [{text: '今天',onClick(picker) {const startTime = new Date(new Date().setHours(0, 0, 0))const endTime = new Date(new Date().setHours(23, 59, 59))picker.$emit('pick', [startTime, endTime])}
}, {text: '昨天',onClick(picker) {const startTime = new Date(new Date().daysAgo(1).setHours(0, 0, 0))const endTime = new Date(new Date().daysAgo(1).setHours(23, 59, 59))picker.$emit('pick', [startTime, endTime])}
}, {text: '最近一周',onClick(picker) { const startTime = new Date(new Date().daysAgo(7).setHours(0, 0, 0))const endTime = new Date(new Date().setHours(23, 59, 59))picker.$emit('pick', [startTime, endTime])}
}, {text: '最近30天',onClick(picker) {const startTime = new Date(new Date().daysAgo(30).setHours(0, 0, 0))const endTime = new Date(new Date().setHours(23, 59, 59))picker.$emit('pick', [startTime, endTime])}
}, {text: '这个月',onClick(picker) {const startTime = new Date(new Date().monthBegin().setHours(0, 0, 0))const endTime = new Date(new Date().setHours(23, 59, 59))picker.$emit('pick', [startTime, endTime])}
}, {text: '本季度',onClick(picker) {const startTime = new Date(new Date().quarterBegin().setHours(0, 0, 0))const endTime = new Date(new Date().setHours(23, 59, 59))picker.$emit('pick', [startTime, endTime])}
}]export const calendarMoveShortcuts = [{text: '‹ 往前一天 ',onClick(picker) {let startTime = new Date(new Date().daysAgo(1).setHours(0, 0, 0))let endTime = new Date(new Date().daysAgo(1).setHours(23, 59, 59))if (!picker.value) {picker.value = [startTime, endTime]}startTime = picker.value[0].daysAgo(1)endTime = picker.value[1].daysAgo(1)picker.$emit('pick', [startTime, endTime])}
}, {text: ' 往后一天 ›',onClick(picker) {let startTime = new Date(new Date().setHours(0, 0, 0))let endTime = new Date(new Date().setHours(23, 59, 59))if (!picker.value) {picker.value = [startTime, endTime]}startTime = picker.value[0].daysAgo(-1)endTime = picker.value[1].daysAgo(-1)picker.$emit('pick', [startTime, endTime])}
}, {text: '« 往前一周 ',onClick(picker) {let startTime = new Date(new Date().setHours(0, 0, 0))let endTime = new Date(new Date().setHours(23, 59, 59))if (!picker.value) {picker.value = [startTime.daysAgo(new Date().getDay()),endTime.daysAgo(new Date().getDay() + 1)]} else {picker.value = [picker.value[0].daysAgo(picker.value[0].getDay()),picker.value[1].daysAgo(picker.value[1].getDay() + 1)]}startTime = picker.value[0].daysAgo(7)endTime = picker.value[1]picker.$emit('pick', [startTime, endTime])}
}, {text: ' 往后一周 »',onClick(picker) {let startTime = new Date(new Date().setHours(0, 0, 0))let endTime = new Date(new Date().setHours(23, 59, 59))if (!picker.value) {picker.value = [startTime.daysAgo(new Date().getDay() - 7),endTime.daysAgo(new Date().getDay() - 6)]} else {picker.value = [picker.value[0].daysAgo(picker.value[0].getDay() - 7),picker.value[1].daysAgo(picker.value[1].getDay() - 6)]}startTime = picker.value[0]endTime = picker.value[1].daysAgo(-7)picker.$emit('pick', [startTime, endTime])}
}]export const calendarShortcuts = [...calendarBaseShortcuts,...calendarMoveShortcuts
]

组件的使用
main.js中引入

// 时间组件
import DateRangePicker from '@/components/DateRangePicker'Vue.component('DateRangePicker', DateRangePicker)
<date-range-picker   v-model="acceptTime" :clearable="false" :pickerOptions="pickerOptions"  style="width: 350px !important;margin-right: 10px;" class="date-item" />

好了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词