elementUI时间选择器

这篇具有很好参考价值的文章主要介绍了elementUI时间选择器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<template>
	//月选择器
	//:clearable="false" 去掉×
	 <div class="monthCard">
	    <el-date-picker
	            :clearable="false"
	            v-model="monthValue"
	            type="month"
	            placeholder="选择月"
	            @change="handleChangeMonth($event)">
	    </el-date-picker>
	</div>
	//周选择器
	<div class="weekCard">
	    <el-date-picker
	            :clearable="false"
	            v-model="dateValue"
	            type="week"
	            :format="bill_date.date"
	            :picker-options="onPicker"
	            placeholder="选择周"
	            @change="showDate($event)">
	    </el-date-picker>
	</div>
	//自定义时间选择器
	<div class="customCard">
	    <el-date-picker
	            :clearable="false"
	            v-model="pickDate"
	            type="daterange"
	            value-format="yyyy-MM-dd"
	            align="right"
	            unlink-panels
	            range-separator="至"
	            :picker-options="pickerBeginDateBefore"
	            start-placeholder="开始日期"
	            end-placeholder="结束日期"
	            @change='selectData'>
	    </el-date-picker>
	</div>
</template>

<script>
import dayjs from 'dayjs'; //一个时间插件
import format_date from "@/utils/date_format.js"; //格式化时间
export default {
    name: "ThreeClearHome",
    data: function() {
        return {
            pickDate: ['2023-08-01','2023-09-05'], //自定义时间默认值
            timeOptionRange: null,
            pickerBeginDateBefore: {
                "firstDayOfWeek": 1, //选择器时间从周一开始
                onPick: ({maxDate, minDate}) => {
                    if (minDate && !maxDate) {
                        this.timeOptionRange = minDate;
                    }
                    if (maxDate) {
                        this.timeOptionRange = null;
                    }
                },
                //限制只能选择当前时间前后六个月的时间
                disabledDate: (time) => {
                    // 设置六个月的时间戳
                    let secondNum = 6 * 30 * 24 * 60 * 60 * 1000;
                    // 获取选中时间
                    let timeOptionRange = this.timeOptionRange;
                    if (timeOptionRange) {
                        return time.getTime() > timeOptionRange.getTime() + secondNum || time.getTime() < timeOptionRange.getTime() - secondNum;
                    }
                }
            },

            dateValue: '', //周选择器的默认值
            weekStartDate: '', //起始日期
            weekEndDate: '', //截止日期
            onPicker: {
                "firstDayOfWeek": 1,
            },
            bill_date: {},

            monthValue: '', //月选择器的默认值

            startDate: '',
            endDate: '',
        };
    },
    props: {
    },
    computed: {
    },
    components: {
    },
    watch: {
    },
    methods: {
        /*按周切换*/
        showDate() {
            let vm = this;
            let startTime = dayjs(vm.dateValue).subtract(1, 'day').$d;
            let endTime = dayjs(startTime).add(6, 'day').$d;
            vm.weekStartDate = format_date("yyyy-MM-dd", new Date(startTime));
            vm.weekEndDate = format_date("yyyy-MM-dd", new Date(endTime));
            vm.bill_date = Object.assign({}, vm.bill_date, {'date': vm.weekStartDate + ' 至 ' + vm.weekEndDate});
        },
        // 获取当前日期的上一周
        getlastWeek() {
            let vm = this;
            const today = new Date(); //获取今天日期
            const d = today.getDay(); //计算今天是周几。如果是周天,d=0
            let w = 0;
            if (d === 0) {
                w = 7;
            } else {
                w = d;
            }
            const endTime = today.setDate(today.getDate() - w);
            const startTime = dayjs(endTime).subtract(6, 'day').$d;
            vm.weekEndDate = format_date("yyyy-MM-dd", new Date(endTime));
            vm.weekStartDate = format_date("yyyy-MM-dd", new Date(startTime));
            vm.dateValue = format_date("yyyy-MM-dd", new Date(startTime));
            vm.bill_date = Object.assign({}, vm.bill_date, {'date': vm.weekStartDate + ' 至 ' + vm.weekEndDate});
        },
        /*自定义切换*/
        selectData($event) {
            let vm = this;
            if ($event===null) {
                vm.timeOptionRange = null;
                vm.pickerBeginDateBefore={
                    disabledDate: (time) => {
                        // 设置六个月的时间戳
                        let secondNum = 6 * 30 * 24 * 60 * 60 * 1000;
                        // 获取选中时间
                        let timeOptionRange = vm.timeOptionRange;
                        if (timeOptionRange) {
                            return time.getTime() > timeOptionRange.getTime() + secondNum || time.getTime() < timeOptionRange.getTime() - secondNum;
                        }
                    }
                };
            } else {
                vm.customStartDate = $event[0];
                vm.customEndDate = $event[1];
            }
        },
        /*按月切换*/
        handleChangeMonth($event) {
            let vm = this;
            let date = new Date($event);
            let month = (date.getMonth() + 1).toString().padStart(2, '0');
            let year = date.getFullYear();
            let startTime = year + '-' + month + '-' + '01';
            let day = new Date(year, month, 0);
            let endTime = year + '-' + month + '-' + day.getDate();
            vm.monthStartDate = startTime;
            vm.monthEndDate = endTime;
        },
        // 获取当前日期的上一个月
        getlastMonth() {
            let now = new Date();
            // 当前月的日期
            let nowDate = now.getDate();
            let lastMonth = new Date(now.getTime());
            // 设置上一个月(这里不需要减1)
            lastMonth.setMonth(lastMonth.getMonth());
            // 设置为0,默认为当前月的最后一天
            lastMonth.setDate(0);
            // 上一个月的天数
            let daysOflastMonth = lastMonth.getDate();
            // 设置上一个月的日期,如果当前月的日期大于上个月的总天数,则为最后一天
            lastMonth.setDate(nowDate > daysOflastMonth ? daysOflastMonth : nowDate);
            return lastMonth;
        },
    },
    created() {
    },
    mounted: function() {
    	let vm = this;
        vm.monthValue = format_date("yyyy-MM", new Date(vm.getlastMonth()));
        vm.handleChangeMonth(vm.monthValue);
        vm.getlastWeek();
    }
};
</script>

elementUI时间选择器,elementui,前端,javascript

elementUI时间选择器,elementui,前端,javascript
elementUI时间选择器,elementui,前端,javascript文章来源地址https://www.toymoban.com/news/detail-704573.html

到了这里,关于elementUI时间选择器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elementUI时间选择器el-time-picker的坑

        这里有一个转换的坑需要注意 如果后端给的为默认为 Date 对象 值:\\\"2023-07-31T16:00:00.000Z\\\"或者是2023-07-31 16:00:00 这种格式拿到需要进行转换为你设定的HH:mm:ss格式,不然时间选择器会直接报错,无法识别时间类型 需要和后端协商好给什么类型格式 不然需要做一些列的时间转

    2024年02月13日
    浏览(38)
  • elementUI 时间段快捷选择及禁用(包含d2-crud-plus中使用)

    vue项目elementUI,需求为时间范围搜索,带快捷键并且只能选择今天之前,90天内的时间。搜索今天为实时数据,不能使用时间段,只能单独搜索。 ※注 需求是今天不可选,只有时间为空时才查询今天,所有下面代码中时间段快捷选择时,结束时间都是昨天。具体可根据自己需

    2024年01月25日
    浏览(38)
  • ElementUI日期选择器DatePicker限制所选时间范围(例如限制前后时长不超一个月)的实现

    未选择时间时,最初选择时间不能超过今天 选择初始时间后,第二个选择的时间前后不能超过初始时间的一个月。且此时下拉框变成禁用状态。 例如:点击7月15日后,在8月14日往后的日期全部禁止选中 7月15日前一个月的6月15日之前的日期也全部禁止选中 选好起始时间和结束

    2024年02月14日
    浏览(39)
  • ElementUI —— Cascader 级联选择器

    前言:         项目中使用Cascader级联选择器,通过递归处理后端接口返回的数据。    

    2024年02月13日
    浏览(43)
  • 实现ElementUI中两个Select选择联动效果

    先上图 通过赋值的方式实现 即子级下拉选项循环数组为空 将所需的值对空数组 重新赋值 代码如下 第一个循环数组为 procedureType 第二个是 causeGroup 暂且称之为父级与子级 须注意的是父级下拉绑定的change事件 要对子级作出滞空操作 也就是 清空子选项的值 不然会出现切换选

    2024年02月15日
    浏览(46)
  • ElementUI Form:Cascader 级联选择器

    ElementUI安装与使用指南 Cascader 级联选择器 点击下载learnelementuispringboot项目源码 效果图 el-cascader.vue(Cascader 级联选择器)页面效果图 项目里el-cascader.vue代码 Cascader Attributes Cascader Events Cascader Methods Cascader Slots CascaderPanel Attributes CascaderPanel Events CascaderPanel Methods CascaderPanel Slo

    2024年02月21日
    浏览(43)
  • elementUI moment 年月日转时间戳 时间限制

       

    2024年02月11日
    浏览(61)
  • elementui时间日期组件右边自定义图标

    改为 首先是将左边的清除图标关闭 然后是将右边的图标设置为display:none,设置宽度,左右内边距 最后是

    2024年02月08日
    浏览(51)
  • Vue+ElementUI实现选择指定行导出Excel

    这里记录一下,今天写项目时 的一个需求,就是通过复选框选中指定行然后导出表格中选中行的Excel表格 然后这里介绍一个工具箱(模板): vue-element-admin 将它拉取后,运行就可以看到如下界面: 这里面的很多功能都已经实现了,比如上图我标记的导出Excel、Zip、PDF等。。。

    2024年02月13日
    浏览(36)
  • elementUI --- el-select 下拉框 日历 级联选择

    element UI 组件库中的 select 选择器 中下拉列表的样式,在页面渲染的时候,总是渲染为仅次于body级别的div ,这样子覆盖样子会影响全局其他的select选择器下拉框样式,试图通过给el-select加父标签来覆盖,然而并没有卵用。 控制台看到的渲染结果: 解决方法: 通过 popper-cla

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包