el-date-picker 结合dayjs 快速实现周选择、月选择,并设置控件的显示格式

文章介绍了如何结合前端组件el-date-picker的type属性和时间库dayjs来实现用户可以选择一周或一个月的时间范围。通过dayjs的API获取当前周和月的起止日期,并在选择类型变化时动态更新查询条件。此外,还展示了如何配置el-date-picker以显示从星期一到星期日的周选择界面。
摘要由CSDN通过智能技术生成

情况需求

在传递查询条件时,要求时间参数需要为 一周一个月

思路:使用el-date-picker 配置type属性,结合dayjs

dayjs的安装以及常用api

此次代码中使用到了dayjs 获取当前周、当前月的方法。能够快速获取我们想要的数据!
dayjs(val).startOf('month').format('YYYY-MM-DD HH:mm:ss');
dayjs(val).endOf('month').format('YYYY-MM-DD HH:mm:ss');

dayjs(val).startOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss');
dayjs(val).endOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss');

dayjs的安装以及常用的处理方法可参阅之前写的一篇博客 ----《Day.js 安装使用,以及常用知识点记录》

实现效果图

提供选择器,可供选择为 按月选择按周选择
type=‘month’ / type=‘week’
按月选择

按周选择

实现代码

<el-select
  v-model="dateType"
  @change="dateTypeChange"
  style="width: 110px"
>
  <el-option label="按月选择" :value="0"></el-option>
  <el-option label="按周选择" :value="1"></el-option>
</el-select>
<el-date-picker
  style="width: 380px"
  :format="`  ${queryForm.startDate} 至 ${queryForm.endDate}`"
  v-if="dateType === 0"
  v-model="dateTime"
  type="month"
  @change="dateTimeChange"
  placeholder="选择月">
</el-date-picker>
<el-date-picker
  style="width: 380px"
  :picker-options="{ firstDayOfWeek: 1 }"
  :format="`  ${queryForm.startDate} 至 ${queryForm.endDate}`"
  v-if="dateType === 1"
  v-model="dateTime"
  type="week"
  @change="dateTimeChange"
  placeholder="选择周">
</el-date-picker>
// 时间选择类型切换
dateTypeChange() {
  this.dateTime = ' ';
},
// 时间选择改变
dateTimeChange(val) {
  if(val) {
    if(this.dateType === 0) {
      this.queryForm.startDate = dayjs(val).startOf('month').format('YYYY-MM-DD HH:mm:ss');
      this.queryForm.endDate = dayjs(val).endOf('month').format('YYYY-MM-DD HH:mm:ss');
    } else {
      this.queryForm.startDate = dayjs(val).startOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss');
      this.queryForm.endDate = dayjs(val).endOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss');
    }
  }
  console.log(this.queryForm.startDate, this.queryForm.endDate);
},

其他配置

设置周选择控件显示一行为星期一 至 星期日

因为按周选取是从 星期一 至 星期日
所以这里给el-date-picker 按周选择,配置了周起始日为星期一
:picker-options=“{ firstDayOfWeek: 1 }”
这样选择的时候,控件一行显示为 星期一 至 星期日,而不是 星期日 至 星期六
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值