开发者社区> 问答> 正文

宜搭如何设置部分字段只在每周最后一个工作日显示

宜搭的普通表单中如何设置可以实现部分字段只有在每周五(如果周六也上班的话,那周五也不显示),也就是连续工作日的最后一天提交的时候才显示,其他日期提交时候不显示这部分字段。

展开
收起
游客7ht34jzgyqs7s 2024-07-14 21:50:40 103 0
来自:钉钉宜搭
1 条回答
写回答
取消 提交回答
  • 若问题得到了解决,辛苦点下采纳回答哦~

    您好,实现组件仅在每周最后一个工作日显示,需要借助JavaScript判断实现。
    1.要在JavaScript中判断某一天是否为每周的最后一个工作日,不仅需要检查这一天是不是周五,而且还要考虑特殊情况比如假期或者其他法定工作日。下面的函数可以用来判断一个日期是否为正常周中的最后一个工作日(通常是周五),但不包括特殊情况的逻辑:

    function isLastWorkdayOfWeek(date) {
      // 获取一周中的第几天,0(周日)到6(周六)
      const dayOfWeek = date.getDay();
    
      // 如果当天是周五,则正常情况下是每周的最后一个工作日
      return dayOfWeek === 5;
    }
    

    如果要处理特殊情况,例如如果法定工作日包括周六,那么周五将不再是最后一个工作日。这种情况下,你可能需要一个假期或特殊工作日的列表,来帮助你做判断。如果假定只有周六可能作为工作日

    function isLastWorkdayOfWeek(date, saturdayIsWorkday = false) {
      const dayOfWeek = date.getDay();
      // 如果周六是工作日,那么周五就不是最后一个工作日
      if (saturdayIsWorkday) {
        return dayOfWeek === 6; // 周六
      } else {
        return dayOfWeek === 5; // 周五
      }
    }
    
    // 使用例子
    const someDate = new Date(2023, 3, 14); // 2023年4月14日
    console.log(isLastWorkdayOfWeek(someDate)); // 对于通常的周五返回 true
    console.log(isLastWorkdayOfWeek(someDate, true)); // 如果周六是工作日,对于周五返回 false
    

    如果假期或特定工作日变化较大,可能需要更复杂的逻辑来处理。这时,你可能需要一个外部假期API或者维护一个假期数据库来帮助确定某个日期是否是工作日。对于那些带有不规则工作日的场景,可以这样处理:

    function isLastWorkdayOfWeek(date, holidays, workdays) {
      const dayOfWeek = date.getDay();
      const dateFormat = date.toISOString().split('T')[0]; // 格式化日期为 YYYY-MM-DD
    
      // 检查今天是否在假期列表中
      if (holidays.includes(dateFormat)) {
        return false;
      }
    
      // 检查今天是否在特殊工作日列表中
      if (workdays.includes(dateFormat)) {
        return dayOfWeek === 5; // 特殊工作日周五为最后一个工作日
      }
    
      // 常规情况
      return dayOfWeek === 5;
    }
    
    // 使用例子
    const someDate = new Date(2023, 3, 14); // 2023年4月14日
    const holidays = ['2023-04-15', '2023-04-16']; // 假定的假期列表
    const workdays = ['2023-04-08']; // 特殊的工作日列表
    console.log(isLastWorkdayOfWeek(someDate, holidays, workdays));
    

    这里的holidays是假期列表,而workdays是额外的工作日列表。这种方式需要定期更新假期和工作日列表,来保证准确性。如需涉及不同国家或地区的工作日判断,最好利用专门的库或服务,如date-fns、moment.js等,这些库经常可以帮助处理这类问题,有些也提供了假日插件。

    最后根据函数返回的true和flase用 setBehavior方法动态设置组件隐藏或显示即可

    2024-07-17 10:16:23
    赞同 5 展开评论 打赏
问答分类:
问答地址:
相关产品:
来源圈子
更多
收录在圈子:
+ 订阅
「宜搭」是云钉原生低代码平台(钉钉 PaaS - aPaaS),让企业应用搭建更简单! 帮助中小企业降本提效,加强组织的数字化自主权; 帮助大型企业释放个体创新力,助力组织创新涌现。
相关文档: 宜搭
问答排行榜
最热
最新

相关电子书

更多
宜搭 - 企业智能化应用搭建平台 立即下载
《云市场-宜搭解决方案》 立即下载
《宜搭开发手册》 立即下载