组件:
< template>
< div class = "time-picker" >
< el- radio- group size= "small" v- model= "timeType" @change= "changePickerType" >
< el- radio- button label= "hour" v- if = "isShow" > 时< / el- radio- button>
< el- radio- button label= "day" > 日< / el- radio- button>
< el- radio- button label= "month" > 月< / el- radio- button>
< el- radio- button label= "quarter" > 季< / el- radio- button>
< el- radio- button label= "year" > 年< / el- radio- button>
< / el- radio- group>
< el- date- picker v- if = "timeType != 'year' && timeType != 'quarter'" v- model= "timeList" : type= "pickerType[timeType].type" range- separator= "-" start- placeholder= "开始日期" end- placeholder= "结束日期" size= "small" style= "width: 300px" value- format= "timestamp" : clearable= "false" : format= "pickerType[timeType].format" @change= "changeDatePicker" class = "select-time" popper- class = "time-popper" : default - time= "['00:00:00', '23:00:00']" >
< / el- date- picker>
< YearYear1 v- if = "timeType == 'year'" style= "width:300px" : initYear= "dateValue2" @updateTimeRange= "updateStatisticYear" / >
< QuarterTime v- if = "timeType == 'quarter'" @getQuarter= "getQuarter" > < / QuarterTime>
< / div>
< / template>
< script>
import YearYear1 from "@/components/YearYear1" ;
import QuarterTime from "@/components/QuarterTime" ;
export default {
model : {
prop : "times" ,
event : "updatetimes" ,
} ,
props : {
times : {
type : Array,
} ,
isShow : {
type : Boolean,
default : true ,
} ,
} ,
components : {
YearYear1,
QuarterTime,
} ,
data ( ) {
return {
timeType : "hour" ,
timeList : [ ] ,
yearTime : [ ] ,
dateValue2 : [ ] ,
pickerType : {
hour : {
type : "datetimerange" ,
format : "yyyy-MM-dd HH时" ,
} ,
day : {
type : "daterange" ,
} ,
month : {
type : "monthrange" ,
} ,
quarter : {
type : "quarter" ,
} ,
year : {
type : "year" ,
} ,
} ,
} ;
} ,
methods : {
changePickerType ( type ) {
let dayType = {
month : {
type : "years" ,
count : 1 ,
} ,
day : {
type : "days" ,
count : 3 ,
} ,
hour : {
type : "days" ,
count : 3 ,
} ,
quarter : {
type : "quarter" ,
count : 1 ,
} ,
year : {
type : "years" ,
count : 2 ,
} ,
} ;
this . timeList = [ ] ;
this . yearTime = this . timeList;
} ,
isNull ( value ) {
if ( value) {
return false ;
}
return true ;
} ,
getQuarter ( val ) {
console. log ( "季节:" , val) ;
} ,
updateStatisticYear ( val ) {
console. log ( "年" , val) ;
} ,
changeDatePicker ( e ) {
console. log ( "选择:" , e) ;
this . $emit ( "updatetimes" , e) ;
} ,
} ,
} ;
< / script>
< style lang= "scss" scoped>
. time- picker {
display : flex;
}
. time- popper {
. el- time- spinner {
display : flex;
justify- content: center;
& > : nth- child ( 2 ) {
display : none;
}
}
. el- picker- panel__footer {
& > : first- child {
display : none;
}
}
}
. el- radio- group {
margin- right: 10px;
}
. year- picker {
line- height: 28px;
}
: : v- deep . el- radio- button-- small . el- radio- button__inner {
height : 36px;
line- height: 18px;
}
: : v- deep . el- range- editor-- small. el- input__inner {
height : 36px;
line- height: 18px;
}
: : v- deep . el- range- editor-- small . el- range__icon {
line- height: 30px;
}
< / style>
里面的年(YearYear1)和季度(QuarterTime)组件是前面分享的文章:
标题:年至年的选择仿elementui的样式、仿真elementUI的时间选择的季度选择
引入即可
使用:
< SelectTimePicker : isShow= "false" @updatetimes= "updatetimes" > < / SelectTimePicker>
import SelectTimePicker from "@/components/SelectTimePicker/index.vue" ;
components : { SelectTimePicker } ,
updatetimes ( val ) {
console. log ( "点击:" , val) ;
} ,