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天不包括节假日和双休的效果。
如果以上回答对您有所帮助,望采纳~谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效