elementui时间组件库

本文详细描述了一个Vue应用中使用ElementUI的日期选择器组件,如何实现年份、月份和日期的选择,并处理默认值、状态切换以及日期范围限制的逻辑。
摘要由CSDN通过智能技术生成

    要求通过先选择年份,在根据选择的年份选择当前年的月份,在根据选择的月份选择日期,没选择的月份和日期不允许选择操作

<template>
    <div>
        <el-date-picker v-show="time == 1" v-model="datePickerVisibleYear" type="year" placeholder="输入年份"
            @change="handleYearChange" value-format="yyyy" >
        </el-date-picker>

        <el-date-picker v-show="time == 2" v-model="datePickerVisibleMonth" type="month" placeholder="输入月份"
            ref="timePickerRef" @change="handleMonthChange" value-format="yyyy-MM" :default-value="selectedMonth"
            :picker-options="pickerOptions"></el-date-picker>

        <el-date-picker v-show="time == 3" v-model="datePickerVisibleData" type="date" placeholder="输入日期"
            ref="timePickerRef2" @change="handleDateChange" value-format="yyyy-MM-dd" 
            :default-value="selectedDate" :picker-options="pickerOptionsData"></el-date-picker>
    </div>
</template>
<script>
export default {
    // 组件名字
    name: 'App',
    // 状态数据
    data() {
        return {
            selectedMonth: '',
            selectedDate:'',
            datePickerVisible: null,
            datePickerVisibleYear: null,
            datePickerVisibleMonth: null,
            datePickerVisibleData: null,
            time: 1,
        }
    },
    computed: {
        pickerOptions() {
            var selectedMonth = parseInt(this.selectedMonth);
            console.log(selectedMonth)
            return {
                disabledDate(time) {
                    return time.getFullYear() !== selectedMonth;
                }
            }
        },
        pickerOptionsData() {
            var Year = parseInt(this.selectedDate); // 提取年份并转换为数字
            var Month = parseInt(this.selectedDate.substring(5)); // 提取月份并转换为数字
            return {
                disabledDate(time) {
                    return time.getFullYear() !== Year || time.getMonth() !== Month - 1;
                },
            }
        },
    },
    methods: {
        handleYearChange(value) {
            this.time = 2
            this.selectedMonth = value
            this.datePickerVisible = value
            this.$nextTick(() => {
                var datePicker = this.$refs.timePickerRef;
                datePicker.showPicker();
            });
            if (value == null) {
                this.time = 1
                this.datePickerVisibleYear = null
                this.datePickerVisibleMonth = null
                this.datePickerVisibleData = null
            }
        },
        handleMonthChange(value) {
            this.time = 3
            this.selectedDate = value
            this.datePickerVisible = value
            console.log(this.selectedDate)
            this.$nextTick(() => {
                var datePicker = this.$refs.timePickerRef2;
                datePicker.showPicker();
            });
            if (value == null) {
                this.time = 1
                this.datePickerVisibleYear = null
                this.datePickerVisibleMonth = null
                this.datePickerVisibleData = null
            }


        },
        handleDateChange(value) {
            this.datePickerVisible = value
            console.log(this.datePickerVisible)
            if (value == null) {
                this.time = 1
                this.datePickerVisibleYear = null
                this.datePickerVisibleMonth = null
                this.datePickerVisibleData = null
            }

        },

    }

}
</script>
<style  scoped>
</style>

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值