vie2项目el-date-picker如何实现只能选择包括当天在内的30天工作日,并且节假日和双休置灰不可选,30天不包括节假日和双休
1条回答 默认 最新
- Leodong. 2023-03-22 16:41关注
该回答引用GPTᴼᴾᴱᴺᴬᴵ,具体如下:
可以使用 el-date-picker 的 disabled-date 属性和 shortcuts 属性来实现只能选择包括当天在内的30天工作日,并且节假日和双休置灰不可选,30天不包括节假日和双休的效果。 首先,需要使用一个函数来检查日期是否是工作日。可以使用第三方库 moment.js 来判断日期是否为工作日。
具体代码如下:
import moment from 'moment'; function isWorkday(date) { const dayOfWeek = moment(date).day(); return dayOfWeek !== 0 && dayOfWeek !== 6; }
然后,在 el-date-picker 中设置 disabled-date 属性为一个函数,该函数用于判断日期是否可选。
<el-date-picker v-model="date" :disabled-date="disabledDate" :shortcuts="shortcuts" /> ... methods: { disabledDate(date) { // 当天之前的日期禁止选择 if (date < new Date()) { return true; } // 30天后的日期禁止选择 const maxDate = moment().add(30, 'days').toDate(); if (date > maxDate) { return true; } // 节假日和双休日禁止选择 if (!isWorkday(date)) { return true; } return false; }, ... }
然后,还可以设置 shortcuts 属性来添加一个快捷选项,用于选择包括当天在内的30天工作日。
shortcuts: [ { text: '30天工作日', onClick(picker) { const today = new Date(); let workdayCount = 0; let date = today; while (workdayCount < 30) { if (isWorkday(date)) { workdayCount++; } date = moment(date).add(1, 'days').toDate(); } const maxDate = moment(date).subtract(1, 'days').toDate(); picker.$emit('pick', [today, maxDate]); } } ]
这样,就可以实现只能选择包括当天在内的30天工作日,并且节假日和双休置灰不可选,30天不包括节假日和双休的效果。
如果以上回答对您有所帮助,望采纳~谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 宇视监控服务器无法登录
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)