1. 核心的代码就是这两句
picker-options="expireTimeOption"
expireTimeOption: {
disabledDate(date) {
//disabledDate 文档上:设置禁用状态,参数为当前日期,要求返回 Boolean
return date.getTime() < Date.now() - 24 * 60 * 60 * 1000;
}
},
2. 效果图
<template>
<div class="fy-date-picker">
<el-date-picker
:end-placeholder="$_text['text.end.date']"
:range-separator="$_text['text.till']"
:start-placeholder="$_text['text.start.date']"
:type="format"
:picker-options="expireTimeOption"
@blur="handleBlur"
@change="handleChange"
@focus="handleFocus"
unlink-panels
v-model="dateValue"
value-format="timestamp"
></el-date-picker>
</div>
</template>
<script>
import util from '../utils.js'
export default {
name: 'fyElDatePicker',
mixins: [util], //这些混入实例对象可以像正常的实例对象一样包含选项(可以直接this.*使用混入对象中的方法)
inject: {
//获取父元素的provide中的值
fyForm: {
default: '',
},
fyFormItem: {
default: '',
},
},
data() {
return {
format: 'daterange',
dateValue: [],
}
},
props: {
startVal: {
type: Number,
default: 0,
},
endVal: {
type: Number,
default: 0,
},
expireTimeOption: { // 具体请参考 element-ui pick-option
type: Object,
default: function() {
return {}
}
}
},
created() {
if (this.startVal && this.endVal) {
this.dateValue.push(this.startVal, this.endVal)
}
},
mounted() {
this.dispatch('fyFormItem', 'formItem.addChildVc', [this]) //发送添加formitem对象的信息
},
watch: {
startVal(val) {
if (val) {
this.dateValue[0] = val
} else {
this.dateValue = null
}
},
endVal(val) {
if (val) {
this.dateValue[1] = val
} else {
this.dateValue = null
}
},
dateValue(val) {
if (!val) {
this.$emit('update:startVal', null)
this.$emit('update:endVal', null)
}
},
},
methods: {
resetField() {
this.$emit('update:startVal', null)
this.$emit('update:endVal', null)
},
//选择日期后的回调
handleChange(value) {
this.$emit('update:startVal', value ? value[0] : null)
this.$emit('update:endVal', value ? value[1] : null)
this.$emit('change', value ? value[0] : null, value ? value[1] : null)
this.dispatch('fyFormItem', 'el.form.change', [value])
},
handleFocus(event) {
this.$emit('focus', event)
this.dispatch('fyFormItem', 'el.form.focus')
},
handleBlur(event) {
this.$emit('blur', event)
this.dispatch('fyFormItem', 'el.form.blur')
},
},
}
</script>