2023-11-07 21:22:37 +08:00
|
|
|
<template>
|
|
|
|
<el-date-picker v-model="value2" type="daterange" align="right" unlink-panels range-separator="至"
|
2023-11-09 15:20:28 +08:00
|
|
|
start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" format="yyyy-MM-dd HH:mm:ss">
|
2023-11-07 21:22:37 +08:00
|
|
|
</el-date-picker>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
pickerOptions: {
|
|
|
|
shortcuts: [
|
|
|
|
{
|
|
|
|
text: '今天',
|
|
|
|
onClick (picker) {
|
2023-11-09 15:20:28 +08:00
|
|
|
const start = new Date(new Date().setHours(0, 0, 0, 0))
|
|
|
|
const end = new Date(new Date().setHours(23, 59, 59, 999))
|
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text: '这月',
|
|
|
|
onClick (picker) {
|
2023-11-07 21:22:37 +08:00
|
|
|
const end = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
end.setHours(23, 59, 59, 999)
|
|
|
|
const start = new Date(new Date().getFullYear(), new Date().getMonth(), 1, 0, 0, 0, 0)
|
2023-11-07 21:22:37 +08:00
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2023-11-09 15:20:28 +08:00
|
|
|
text: '今年',
|
2023-11-07 21:22:37 +08:00
|
|
|
onClick (picker) {
|
|
|
|
const end = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
end.setHours(23, 59, 59, 999)
|
|
|
|
const start = new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)
|
2023-11-07 21:22:37 +08:00
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text: '最近一周',
|
|
|
|
onClick (picker) {
|
|
|
|
const end = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
end.setHours(23, 59, 59, 999)
|
2023-11-07 21:22:37 +08:00
|
|
|
const start = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
start.setDate(end.getDate() - 6)
|
|
|
|
start.setHours(0, 0, 0, 0)
|
2023-11-07 21:22:37 +08:00
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
2023-11-09 15:20:28 +08:00
|
|
|
},
|
|
|
|
{
|
2023-11-07 21:22:37 +08:00
|
|
|
text: '最近一个月',
|
|
|
|
onClick (picker) {
|
|
|
|
const end = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
end.setHours(23, 59, 59, 999)
|
2023-11-07 21:22:37 +08:00
|
|
|
const start = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
start.setMonth(end.getMonth() - 1)
|
|
|
|
start.setHours(0, 0, 0, 0)
|
2023-11-07 21:22:37 +08:00
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
2023-11-09 15:20:28 +08:00
|
|
|
},
|
|
|
|
{
|
2023-11-07 21:22:37 +08:00
|
|
|
text: '最近三个月',
|
|
|
|
onClick (picker) {
|
|
|
|
const end = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
end.setHours(23, 59, 59, 999)
|
2023-11-07 21:22:37 +08:00
|
|
|
const start = new Date()
|
2023-11-09 15:20:28 +08:00
|
|
|
start.setMonth(end.getMonth() - 3)
|
|
|
|
start.setHours(0, 0, 0, 0)
|
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text: '上月',
|
|
|
|
onClick (picker) {
|
|
|
|
const end = new Date(new Date().getFullYear(), new Date().getMonth(), 0, 23, 59, 59, 999)
|
|
|
|
const start = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1, 0, 0, 0, 0)
|
2023-11-07 21:22:37 +08:00
|
|
|
picker.$emit('pick', [start, end])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
value1: '',
|
|
|
|
value2: ''
|
|
|
|
}
|
2023-11-09 15:20:28 +08:00
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
value2 (newVal) {
|
|
|
|
if (newVal && newVal.length === 2) {
|
|
|
|
const end = newVal[1]
|
|
|
|
end.setHours(23, 59, 59, 999) // 设置结束日期为当天的23:59:59
|
|
|
|
const startTimestamp = Math.floor(newVal[0].getTime() / 1000) // 转换毫秒为秒
|
|
|
|
const endTimestamp = Math.floor(end.getTime() / 1000) // 转换毫秒为秒
|
|
|
|
this.$emit('dateRangepicked', { start: startTimestamp, end: endTimestamp })
|
|
|
|
}
|
|
|
|
if (newVal === null) {
|
|
|
|
this.$emit('dateRangepicked', { start: '', end: '' })
|
|
|
|
}
|
|
|
|
}
|
2023-11-07 21:22:37 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.el-date-editor .el-range__close-icon {
|
|
|
|
display: block !important;
|
|
|
|
}
|
|
|
|
</style>
|