头顶假发的小女孩 2023-03-22 16:32 采纳率: 20%
浏览 49
已结题

vue2 项目el-date-picker如何实现只能选择包括当天在内的30天工作日

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天不包括节假日和双休的效果。


    如果以上回答对您有所帮助,望采纳~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 修改了问题 3月23日
  • 修改了问题 3月23日
  • 展开全部

悬赏问题

  • ¥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之后自动重连失效