• element日历插件获取显示的第一天和最后一天


    和重置日期内容显示

    需求是要传入当前显示的第一天和最后一天来获取范围,再判断某个日期是否有内容标记

    已知星期排版是固定的,第一天是星期天,最后一天是星期六。通过当月1号和最后一天再往前推算需要展示上个月几天,和下个月几天。

    1. // 获取日历显示时间范围
    2. const getRange = (date) => {
    3. // 日历第一天
    4. let firstDay = '';
    5. // 日历最后一天
    6. let lastDay = '';
    7. // 今天
    8. const today = date ? date : new Date()
    9. // 上月
    10. const m = today.getMonth()
    11. // 本月
    12. const cm = m + 1
    13. // 下月
    14. const lm = m + 2 > 12 ? 1 : m + 2
    15. // 要显示的本月
    16. const currentMonth = cm < 10 ? '0' + cm : cm
    17. // 要显示的本本年
    18. const currentYear = today.getFullYear()
    19. // 要显示的上个月的年份,m = 0 则当前1月,上月则是去年12月
    20. const prevYear = m == 0 ? currentYear - 1 : currentYear
    21. const prevMonth = m == 0 ? 12 : m < 10 ? '0' + m : m
    22. // 上个月天数
    23. const pmd = new Date(prevYear, m, 0).getDate()
    24. // 下个月的年份,当前12月,则需要加一年
    25. const lastYear = cm + 1 > 12 ? currentYear + 1 : currentYear
    26. const lastMonth = lm < 10 ? '0' + lm : lm
    27. // 1号是周几
    28. const firstWeek = new Date(today.setDate(1)).getDay()
    29. // 如果是周日,则不需要显示上个月
    30. if (firstWeek == 0) {
    31. firstDay = `${currentYear}-${currentMonth}-01`
    32. }
    33. // 其他周几,对应用上个月的天数往前推算
    34. else {
    35. firstDay = `${prevYear}-${prevMonth}-${pmd - (firstWeek - 1)}`
    36. }
    37. // 这个月天数
    38. const currentMonthDate = new Date(currentYear, cm, 0).getDate()
    39. // 最后一天是周几
    40. const lastWeek = new Date(today.setDate(currentMonthDate)).getDay()
    41. // 周六显示当月最后一天
    42. if (lastWeek == 6) {
    43. lastDay = `${currentYear}-${currentMonth}-${currentMonthDate}`
    44. }
    45. // 其他周几,对应往后推算
    46. else {
    47. const day = ['06', '05', '04', '03', '02', '01']
    48. lastDay = `${lastYear}-${lastMonth}-${day[lastWeek]}`
    49. }
    50. console.log('第一天', firstDay)
    51. console.log('最后一天', lastDay)
    52. }

    这个日历插件右上角的按钮上个月下个月事件,切换后默认是那月1号,传入这个时间就可以重新获得切换后的月份的时间范围,用v-model绑定切换后的数据

    1. "calendar">
    2. <template #date-cell="{ data }">
    3. <el-popover v-if="list[data.day]" placement="top-start" :width="200" trigger="hover" :content="list[data.day].workCalendar.content">
    4. <template #reference>
    5. <div class="date-cont" @click="handleOpen(data), list[data.day]">
    6. {{ data.day.split('-')[2] }}
    7. <el-icon>
    8. <Star />
    9. el-icon>
    10. div>
    11. template>
    12. el-popover>
    13. <p v-else class="date-cont" @click="handleOpen(data)">
    14. {{ data.day.split('-')[2] }}
    15. p>
    16. template>

    watch监听变动来做事件

    1. // 获取当前点击上下月按钮后的变化
    2. watch(calendar, (n, o) => {
    3. if (n.getFullYear() !== o.getFullYear() || n.getMonth() !== o.getMonth()) {
    4. getRange(n)
    5. }
    6. });

  • 相关阅读:
    Visual Studio部署C++环境下OpenCV库
    【微信小程序】使用npm包
    ElementPlus-日期选择器实现周选择
    浅析Betaflight中的OSD叠加程序【MAX7456&AT7456】
    虚拟机的 Ubuntu 没有 /dev/fb0 的解决办法
    2022年11月13日 开学第十周树状数组
    Windows 下安装和配置 Redis (详细图文)
    如何把loss的tensor换成标量
    一名GISer的本科生涯--写于2018年
    【Webpack】webpack的基础使用详细总结 上(建议收藏)
  • 原文地址:https://blog.csdn.net/aerbaba/article/details/133160037