html部分:
<div>
<div style=" width: 220px; margin: 20px auto 0;">
<el-date-picker
v-model="startDate"
type="date"
placeholder="选择开始日期"
format="yyyy/MM/dd "
value-format="timestamp"
:picker-options="pickerOptionsStart"
@change="changeStart">
</el-date-picker>
</div>
<div style=" width: 220px; margin: 20px auto 0;">
<el-date-picker
v-model="endDate"
type="date"
placeholder="选择结束日期"
format="yyyy/MM/dd "
value-format="timestamp"
:picker-options="pickerOptionsEnd"
@change="changeEnd">
</el-date-picker>
</div>
</div>
js部分:
data() {
return {
pickerOptionsStart: {},
pickerOptionsEnd: {},
startDate: '', // 开始日期
endDate: '', // 结束日期
}
}
methods: {
changeStart() { // 限制开始时间
this.pickerOptionsEnd = Object.assign({}, this.pickerOptionsEnd, {
disabledDate: (time) => {
if (this.startDate) {
return time.getTime() < this.startDate
}
}
})
},
changeEnd() { // 限制结束时间
console.log(this.endDate);
this.pickerOptionsStart = Object.assign({}, this.pickerOptionsStart, {
disabledDate: (time) => {
if (this.endDate) {
return time.getTime() > this.endDate
}
}
})
},
beautifyTimeFormat(value) { // 时间戳转换时间格式
if (value == null) {
return '';
} else {
let date = new Date(value);
let y = date.getFullYear();// 年
let MM = date.getMonth() + 1;// 月
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();// 日
d = d < 10 ? ('0' + d) : d;
return y + '-' + MM + '-' + d;
}
}
}
html写法2
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.3.8/lib/index.js"></script>
<div id="app">
<template>
<div class="block">
<span class="demonstration">起始日期</span>
<el-date-picker v-model="startDate" type="date" placeholder="选择日期" :picker-options="pickerOptionsStart" @change="changeEnd">
</el-date-picker>
</div>
<div class="block">
<span class="demonstration">截止日期</span>
<el-date-picker v-model="endDate" type="date" placeholder="选择日期" :picker-options="pickerOptionsEnd" @change="changeStart">
</el-date-picker>
</div>
</template>
</div>
js部分:
var Main = {
data() {
return {
pickerOptionsStart: {},
pickerOptionsEnd:{},
startDate: '',
endDate: '',
};
},
methods:{
changeStart (){
this.pickerOptionsStart = Object.assign({},this.pickerOptionsStart,{
disabledDate: (time) => {
return time.getTime() > this.endDate
}
})
},
changeEnd (){
this.pickerOptionsEnd = Object.assign({},this.pickerOptionsEnd,{
disabledDate: (time) => {
return time.getTime() < this.startDate
}
})
}
}
};
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
css部分:
@import url("//unpkg.com/element-ui@2.3.8/lib/theme-chalk/index.css");
.block{
margin-top:10px;
}