datePicker.vue 封装
<template> <el-date-picker v-model="currentTime" type="datetimerange" :picker-options="pickerOptions" range-separator="~" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" align="right" @change="getChorceTime"> </el-date-picker> </template> <script> module.exports = { name: "datePicker", props: ['time'], data() { return { currentTime: "", pickerOptions: { shortcuts: [ { text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '最近一个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', [start, end]); } }, { text: '最近三个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); picker.$emit('pick', [start, end]); } }] }, } }, methods:{ getChorceTime(val){ if(val == null){ bus.$emit('changeTimeValue',""); }else{ bus.$emit('changeTimeValue',val) } } } } </script> <style scoped> </style>
注意:
value-format :一定要,否则选择的时间是带有英文月份的时间,不是想要的年月日时分秒
getChorceTime(val){ if(val == null){ bus.$emit('changeTimeValue',""); // 必要:当交互中清除已选时间时查询条件应该清空 }else{ bus.$emit('changeTimeValue',val) // 传递当前选择的时间
} }
使用
js.
module.exports = { name:'FileUpload', components: { 'date-picker': httpVueLoader('/template/default/pc/home/index/components/datePicker.vue'), },
}
<template>
<date-picker :time="searchForm.time"></date-picker>
</template>
核心:
mounted(){ bus.$on('changeTimeValue',(val)=>{ if(val){ this.searchForm.time = val[0] + '~' + val[1]; }else{ this.searchForm.time = ""; } }) }