实现效果

想实现一个日历能正常筛选日期且能在日历看板上标注出给定的日期范围,如下图所示在这里插入图片描述

依附组件 a-calendar原本样式

在这里插入图片描述

实现主要思路

官网描述:
dateFullCellRender 作用域插槽,自定义渲染日期单元格,返回内容覆盖单元格
headerRender 自定义头部内容

实现主要过程

 <a-calendar
        @panelChange="onPanelChange"
        :value="value1"
        :fullscreen="false"
      >
        <template slot="headerRender">
          <div>
            <div class="calendar_select">
              <div class="calendar_s_select">
                //年、月筛选可通过a-select组件实现,想在改变年、月时改变日历,只需要改变a-calendar组件绑定的value即可
              </div>
            </div>
          </div>
        </template>
        //利用dateFullCellRender返回的date日期,能返回每个日期点,比较返回的日期点返回不同className,实现自定义样式
        <!--主要: 	作用域插槽,自定义渲染日期单元格,返回内容覆盖单元格 -->
        <template slot="dateFullCellRender" slot-scope="date">
          <div :class="['date_default', getDateCss(date)]">
            {{ date.date() }}
          </div>
        </template>
      </a-calendar>
//例如给定的数据如下,当yaxis数值大于0时才返回date_select,在css文件中定义date_selec样式即可
 getDateCss(val) {
      const _data = {
        xaxis: [
          "2024-03-24",
          "2024-03-22",
          "2024-03-20",
          "2024-03-15",
          "2024-03-10",
          "2024-01-21"
        ],
        yaxis: [0, 124, 69, 0, 103, 0]
      };
      let _className = "";
      _data.yaxis.forEach((e, i) => {
        if (e > 0 && _data.xaxis[i] == val.format("YYYY-MM-DD")) {
          _className = "date_select";
          return;
        }
      });
      return _className;
    }

最后

如果上述利用作用域插槽的方法 不能满足日常应用,也可进行基于ant-design-vue 组件手动开发日历项。
详情可见另一篇文章

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐