vue + element 日期范围选择器( 日期不可选范围)切换日期格式

这篇博客介绍了如何在Vue项目中结合Element UI实现日期范围选择,并且能够限制不可选日期范围,同时支持月份范围切换和日期格式的定制。内容包括设置日期显示格式、定义开始和结束时间,以及监听单选框变化来动态调整时间值。

在业务中使用日期选择时,通常会遇到要限制日期范围的情况,这里不止需要日期范围还需要月份范围切换选择,我也是通过在网上寻找适合我项目的代码综合起来实现下面的结果:

 下面我们来实现结果中的代码

<el-form-item label="报表日期维度:" style="margin-right: 15%;">
          <el-radio-group v-model="radioTreaty" @change="changeHandler">
            <el-radio label="1">月度</el-radio>
            <el-radio label="2">日度</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item v-show="radioTreaty == '1'" label="下单时间:">
          <el-date-picker
            v-model="monthrange"
            type="monthrange"
            range-separator="至"
            start-placeholder="开始月份"
            end-placeholder="结束月份"
            :picker-options="monOptions"
          ></el-date-picker>
        </el-form-item>
        <el-form-item v-show="radioTreaty == '2'" label="下单时间:">
          <el-date-picker
            v-model="daterange"
            type="daterange"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            :picker-options="pickerOptions"
          ></el-date-picker>
        </el-form-item>

 下面的DF 是我设置的日期显示格式 "YYYY-MM-DD",from是我设置的开始时间,to是结束时间

data() {
    return {
      radioTreaty: "1",
      pickerOptions: {
// 设置的时间范围是30天,只能选择30天之内的数据
        disabledDate(time) {
          return (
            time.getTime() > Date.now() ||
            time.getTime() < Date.now() - 30 * 24 * 60 * 60 * 1000
          );
        },
      },
// 设置每年的开始到现在的月份
      monOptions: {
        disabledDate(date) {
          return (
            date.getTime() > Date.now() ||
            date.getTime() < new Date(new Date().getFullYear(), 0)
          );
        },
      },
      listLoading: false,
    };
  },
// 这里是接收页面时间选择和时间回显
  computed: {
    daterange: {
      get() {
        const { from, to } = this.filter;
        return [from, to];
      },
      set(val) {
        this.filter.from = moment(val[0]).format(DF);
        this.filter.to = moment(val[1]).format(DF);
      },
    },
    monthrange: {
      get() {
        const { from, to } = this.filter;
        return [from, to];
      },
      set(val) {
        this.filter.from = moment(val[0]).format(DF);
        this.filter.to = moment(val[1]).format(DF);
      },
    },
  },

下面是监听单选框选中变化,根据选择的不同,设置不同的时间值

methods: {
    changeHandler(value) {
      if (value === "2") {
        this.filter.from = moment().subtract(29, "days").format(DF);
        this.filter.to = moment().format(DF);
      } else {
        this.filter.from = moment(new Date(new Date().getFullYear(), 0)).format(DF);
        this.filter.to = moment().format(DF);
      }
    },
  },

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值