You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.1 KiB
166 lines
5.1 KiB
2 years ago
|
<template>
|
||
|
<view>
|
||
|
<uni-popup @change="change" ref="popup" type="center">
|
||
|
<view class="datebody">
|
||
|
<view style="text-align: end;">
|
||
|
<uni-icons @click="change({show:false})" type="clear" size="30"></uni-icons>
|
||
|
</view>
|
||
|
<view style="flex: 1;display: flex;flex-wrap: wrap;align-content: flex-start; gap:25rpx">
|
||
|
<view @click="seleFn(index)" v-for="(item,index) in dateOptions"
|
||
|
:class=" seleIndex==index?'seledatebody_item': 'datebody_item'">{{item.label}}</view>
|
||
|
<uni-datetime-picker @change='pickerClick' type="datetimerange" :start="starDate" :end="endDate"
|
||
|
rangeSeparator="至" v-model="single">
|
||
|
<view @click="seleIndex=4" :class=" seleIndex==4?'seledatebody_item':'datebody_item'">自定义</view>
|
||
|
</uni-datetime-picker>
|
||
|
</view>
|
||
|
</view>
|
||
|
</uni-popup>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
|
||
|
export default {
|
||
|
props: {
|
||
|
value: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
},
|
||
|
list: {
|
||
|
type: Array,
|
||
|
default: () => {
|
||
|
return [{
|
||
|
value: '1',
|
||
|
label: '江'
|
||
|
},
|
||
|
{
|
||
|
value: '2',
|
||
|
label: '湖'
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
watch: {
|
||
|
value: function(n, o) {
|
||
|
console.log('监听', n)
|
||
|
if (n) {
|
||
|
this.$refs.popup.open('center')
|
||
|
} else {
|
||
|
this.$refs.popup.close()
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
single: '',
|
||
|
endDate:'',
|
||
|
starDate:'',
|
||
|
seleIndex: 1,
|
||
|
seachValue: '',
|
||
|
dateOptions: [{
|
||
|
value: 0,
|
||
|
label: '当天'
|
||
|
},
|
||
|
{
|
||
|
value: 1,
|
||
|
label: '昨日'
|
||
|
},
|
||
|
{
|
||
|
value: 2,
|
||
|
label: '上周'
|
||
|
},
|
||
|
{
|
||
|
value: 3,
|
||
|
label: '上月'
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
let date = new Date
|
||
|
this.starDate = new Date
|
||
|
this.starDate.setMonth((date.getMonth()-1 ==0?12:date.getMonth()-1))
|
||
|
this.starDate.setDate(1)
|
||
|
this.starDate = `${this.starDate.getFullYear()}-${this.starDate.getMonth()+1}-${this.starDate.getDate()} ${this.starDate.getHours()}:${this.starDate.getMinutes()}`
|
||
|
this.endDate = `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}`
|
||
|
},
|
||
|
methods: {
|
||
|
pickerClick(e){
|
||
|
this.$emit('input', false)
|
||
|
this.$emit('datePopupChange',e)
|
||
|
},
|
||
|
seleFn(index) {
|
||
|
this.seleIndex = index
|
||
|
let date = new Date
|
||
|
switch (this.seleIndex) {
|
||
|
case 0:
|
||
|
this.$emit('datePopupChange',[`${date.getFullYear()}-${date.getMonth()+1<10?'0'+(date.getMonth()+1):date.getMonth()+1}-${date.getDate()<10?'0'+date.getDate():date.getDate()} 00:00:00`,`${date.getFullYear()}-${date.getMonth()+1<10?'0'+(date.getMonth()+1):date.getMonth()+1}-${date.getDate()<10?'0'+date.getDate():date.getDate() } 23:59:59`])
|
||
|
break;
|
||
|
case 1:
|
||
|
let yesterday = new Date((date.getTime() - (86400000)))
|
||
|
this.$emit('datePopupChange',[`${yesterday.getFullYear()}-${yesterday.getMonth()+1<10?'0'+(yesterday.getMonth()+1):yesterday.getMonth()+1}-${yesterday.getDate()<10?'0'+yesterday.getDate():yesterday.getDate()} 00:00:00`,`${yesterday.getFullYear()}-${yesterday.getMonth()+1<10?'0'+(yesterday.getMonth()+1):yesterday.getMonth()+1}-${yesterday.getDate()<10?'0'+yesterday.getDate():yesterday.getDate()} 23:59:59`])
|
||
|
break;
|
||
|
case 2:
|
||
|
let endLastWeek = new Date(date.getTime() - ((date.getDay() == 0 ? 7 : date.getDay()) * 86400000 ))
|
||
|
let starLastWeek = new Date(endLastWeek.getTime() - (6*86400000))
|
||
|
this.$emit('datePopupChange',[`${starLastWeek.getFullYear()}-${starLastWeek.getMonth()+1<10?'0'+(starLastWeek.getMonth()+1):starLastWeek.getMonth()+1}-${starLastWeek.getDate()<10?'0'+starLastWeek.getDate():starLastWeek.getDate()} 00:00:00`,`${endLastWeek.getFullYear()}-${endLastWeek.getMonth()+1<10?'0'+(endLastWeek.getMonth()+1):endLastWeek.getMonth()+1}-${endLastWeek.getDate()<10?'0'+endLastWeek.getDate():endLastWeek.getDate()} 23:59:59`])
|
||
|
break;
|
||
|
case 3:
|
||
|
let LastMonth = new Date(date.getTime() - ((86400000 * date.getDate())))
|
||
|
this.$emit('datePopupChange',[`${LastMonth.getFullYear()}-${LastMonth.getMonth()+1<10?'0'+(LastMonth.getMonth()+1):LastMonth.getMonth()+1}-01 00:00:00`,`${LastMonth.getFullYear()}-${LastMonth.getMonth()+1<10?'0'+(LastMonth.getMonth()+1):LastMonth.getMonth()+1}-${LastMonth.getDate()<10?'0'+LastMonth.getDate():LastMonth.getDate()} 23:59:59`])
|
||
|
break;
|
||
|
}
|
||
|
this.$emit('input',false)
|
||
|
},
|
||
|
pickerChange(e) {
|
||
|
this.$emit('pickerChange', this.list[e.detail.value[0]])
|
||
|
},
|
||
|
change(e) {
|
||
|
this.$emit('input',e.show)
|
||
|
},
|
||
|
confirmFn() {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
.seledatebody_item {
|
||
|
width: 140rpx;
|
||
|
height: 60rpx;
|
||
|
background: #ADCEFF;
|
||
|
border-radius: 10px;
|
||
|
color: #FFFFFF;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
margin-top: 18rpx;
|
||
|
}
|
||
|
|
||
|
.datebody_item {
|
||
|
width: 140rpx;
|
||
|
height: 60rpx;
|
||
|
background: #FFFFFF;
|
||
|
border-radius: 10px;
|
||
|
color: #BBBBBB;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
margin-top: 18rpx;
|
||
|
}
|
||
|
|
||
|
.datebody {
|
||
|
width: 520rpx;
|
||
|
height: 500rpx;
|
||
|
background: #F0F0F0;
|
||
|
border-radius: 20px !important;
|
||
|
overflow: hidden;
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
flex-wrap: wrap;
|
||
|
padding: 15rpx 23rpx;
|
||
|
}
|
||
|
</style>
|