elementPlus之日历扩展功能

news2025/3/13 6:53:57

在这里做个记录,感觉用得还挺多的
功能有如下:

  • 切换月份按钮对应日历视图和中间日期都要变
  • 选择日期日历视图要变
  • 点击日历视图中的不属于当前选中月份的日期即可触发日历视图变化以及中间日期也要变

在这里插入图片描述
代码如下:

<template>
  <div class="calendar-test">
      <div class="calendar-test-content">
        <el-calendar
          ref="calendar"
          :model-value="selectedDate"
          @update:model-value="handleDateChange"
        >
          <template #header="{ date }">
            <div class="header-operate" style="width: 100%">

              <div class="calendar-title">
                <div class="calendar-buttom" @click="onArrowEvent('prev-month')">
                  <el-icon><ArrowLeft /></el-icon>
                </div>
                <div class="date-text">
                  <el-date-picker
                    v-model="calendarParam.selectedMonth"
                    type="month"
                    :placeholder="calendarParam.selectedMonth"
                    popper-class="month-picker"
                    format="YYYY-MM"
                    value-format="YYYY-MM"
                    :clearable="false"
                    @change="handleMonthChange"
                  />
                </div>
                <div class="calendar-buttom" @click="onArrowEvent('next-month')">
                  <el-icon><ArrowRight /></el-icon>
                </div>
              </div>
            </div>
          </template>
          <template #date-cell="{ data }">
            <div class="date-cell" style="height: 100%">
              <div class="day">{{ data.day.split("-").slice(2)[0] }}</div>
              <div class="day-content">
                <span class="day-title">这是内容</span>
              </div>
            </div>
          </template>
        </el-calendar>
      </div>
    </div>
</template>
<script setup>
import { reactive, ref, watch, onMounted, nextTick } from "vue";
import { useRouter, useRoute } from "vue-router";
import dayjs from "dayjs";
import { ArrowLeft,ArrowRight} from "@element-plus/icons-vue";

const router = useRouter();
const route = useRoute();

// 获取日历数据的查询参数
const calendarParam = reactive({
  selectedMonth: ref(dayjs().format("YYYY-MM")), // 设置默认值为当前月份
});

const calendarData = ref([]);
const getCalendarData = async () => {
  const result = await xxxxxrequest({ ...calendarParam });
  if (result.code == 200) {
    calendarData.value = result.data;
  }
};


const calendar = ref(null);
const selectedDate = ref(new Date()); // 初始日期

// 处理日期选择变化
const handleMonthChange = (val) => {
  if (!calendar.value) return;
  getCalendarData();
  // 更新日历视图
  selectedDate.value = new Date(val); // 根据选择的月份更新日历视图
};
// 处理点击选中日历中日期变化
const handleDateChange = (date) => {
  selectedDate.value = date;
  // 更新 calendarParam.selectedMonth为选中日期所在月份
  calendarParam.selectedMonth= dayjs(date).format("YYYY-MM");
  getCalendarData();
};
// 处理箭头点击事件
const onArrowEvent = (val) => {
  if (!calendar.value) return;
  const currentDate = dayjs(calendarParam.selectedMonth);
  // 根据点击的箭头更新月份
  let newDate;
  if (val === "prev-month") {
    newDate = currentDate.subtract(1, "month");
  } else {
    newDate = currentDate.add(1, "month");
  }

  // 更新 calendarParam.selectedMonth
  calendarParam.selectedMonth= newDate.format("YYYY-MM");
  // 更新日历视图
  calendar.value.selectDate(val);
  // 直接设置日历的日期
  calendar.value.date = newDate.toDate();
  // getCalendarData()
};

onMounted(() => {});
</script>
<style lang="scss" scoped>
.calendar-test {
  :deep(.el-calendar-table) {
    border-spacing: 10px;
    border-collapse: separate;
  }
  :deep(.el-calendar-table th) {
    padding: 0;
    height: 31px;
    background: #eef8ff;
    border-radius: 6px;
  }
  :deep(.el-calendar-table td) {
    border: 1px solid #d9eaf7;
    border-radius: 6px;
    // padding: 10px;
    transition: background-color 0.2s ease;
  }
  :deep(.el-calendar-day:hover) {
    background: none;
  }

  :deep(.current:hover) {
    background: #eef8ff;
    cursor: pointer;
  }
  :deep(.el-calendar-table td.is-selected) {
    border: 1px solid #0080ff;
  }
  :deep(.current .day) {
    color: #666;
  }
  :deep(.current .day-title) {
    color: rgba(90, 91, 97, 0.8);
  }
  :deep(.current .day-num) {
    color: var(--el-color-primary);
  }
}

.calendar-test {
    padding-top: 40px;
    padding-bottom: 60px;
    background-color: #f4f6f9;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    .calendar-test-content {
      width: 1200px;
    }
    .header-operate {
      display: flex;
      justify-content: space-between;
      align-items: center;
      .calendar-title {
        display: flex;
        align-items: center;
        justify-content: space-between;
      }
      .calendar-buttom {
        background-color: #0251d9;
        border-radius: 4px 4px 4px 4px;
        color: #fff;
        width: 30px;
        height: 30px;
        display: flex;
        justify-content: center;
        align-items: center;
        cursor: pointer;
      }
    }
    .date-cell {
      display: flex;
      flex-direction: column;
      justify-content: space-around;
      .day {
        font-size: 18px;
        font-weight: bold;
      }
      .day-content {
        display: flex;
        justify-content: space-between;
        align-items: center;
        .day-title {
          font-size: 12px;
        }
        .day-num {
          font-size: 24px;
          font-weight: bold;
        }
      }
    }
  }
.date-text {
  margin: 0 12px;

  :deep(.el-input) {
    .el-input__wrapper {
      box-shadow: none !important;
      padding: 0;
      background: none;
    }

    .el-input__inner {
      color: #030411;
      font-size: 18px;
      font-weight: 700;
      text-align: center;
    }

    // 隐藏日历图标
    .el-input__suffix,
    .el-input__prefix {
      display: none;
    }
  }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2314150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# NX二次开发:获取模型中所有表达式并且更新某个表达式的值

大家好&#xff0c;今天要讲的是关于NX中表达式的相关UFUN函数。 UF_MODL_ask_exps_of_part (view source) tag_tpart_tagInputTag of the part to be queriedint *number_of_expsOutputNumber of expressions returnedtag_t * *expsOutput to UF_*free*All the expressions i…

Ollama本地部署deepseek-r1蒸馏版

Docker安装Ollama 拉取镜像 docker pull ollama/ollama​ 启动-使用GPU docker run -d --gpusall -p 11434:11434 --name ollama ollama/ollamadocker run : Docker 的核心命令&#xff0c;用于创建并启动一个新的容器。 -d : 后台模式&#xff08;detached mode&#xff09…

计算机毕业设计:基于web的乡村旅游系统

基于web的乡村旅游系统mysql数据库创建语句基于web的乡村旅游系统oracle数据库创建语句基于web的乡村旅游系统sqlserver数据库创建语句基于web的乡村旅游系统springspringMVChibernate框架对象(javaBean,pojo)设计基于web的乡村旅游系统springspringMVCmybatis框架对象(javaBea…

c#面试题整理9

1.遍历xml文档 2.解释一下这段 String s new String("xyz"); 这段在C#平台中&#xff0c;编译失败 3.说明一下抽象类 抽象类可以有构造函数 抽象类不能是静态和密封的类&#xff0c;密封的类表示无法继承&#xff0c;抽象类本身就不可实例化&#xff0c;加不好…

【具身相关】legged_gym, isaacgym、rsl_rl关系梳理

【legged_gym】legged_gym, isaacgym代码逻辑梳理 总体关系IsaacGymlegged_gymrsl_rl三者的关系 legged_gym代码库介绍环境模块env 总体关系 IsaacGym Isaac Gym 是 NVIDIA 开发的一个高性能物理仿真平台&#xff0c;专门用于强化学习和机器人控制任务。它基于 NVIDIA 的 Phy…

侯捷C++课程学习笔记:构造函数那些事儿(四)

C 构造函数全面解析 上图节选自爱吃喵的鲤鱼 一、构造函数基础特性 1. 核心功能定位 ​对象初始化中枢&#xff1a;负责在对象创建时完成成员变量的初始化工作​生命周期唯一性&#xff1a;每个对象在其生命周期内仅被调用一次&#xff0c;类似出生证明的签发过程 2. 基础语…

微信小程序审核失败,你的小程序涉及提供播放、观看等服务,请补充选择:文娱-其他视频类目 解决

之前审核的都没有什么问题&#xff0c;结果这次就不给过还提示我们这个。 我们的视频是操作演示的视频。仅用于介绍使用。 是否接受修改指引&#xff0c;勾选我不理解以上内容 再勾选 下面不理解内容异项 申诉理由 视频播放和观看只限于当前用户自己使用&#xff0c;而视…

蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码

文章目录 1.题目解析1.1 分而治之&#xff0c;藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言&#xff1a;STM32G431RBT6实现嵌入式组第七届题目解析源码&…

苹果iOS 18.4将强制升级HomeKit架构,旧版设备或无法使用

在科技飞速发展的当下,智能家居领域也在不断革新。而苹果公司作为科技行业的巨头,其每一次动作都备受关注。近日,有消息称苹果计划在iOS 18.4版本中停止对旧版HomeKit架构的支持,这一举措意味着用户将被迫升级,也可能对众多使用Apple Home应用的智能家居设备用户产生深远影…

在MATLAB中实现PID控制仿真

在MATLAB中实现PID控制仿真可以通过代码编程或Simulink图形化建模两种方式完成。以下是两种方法的详细操作步骤和示例&#xff1a; 方法1&#xff1a;使用MATLAB脚本编程&#xff08;基于控制系统工具箱&#xff09; 步骤1&#xff1a;定义被控对象的数学模型 假设被控对象是…

Python核心模块的高级用法及Linux系统常用命令

一、Python相关 1、正则表达式 &#xff08;1&#xff09;正则表达式基础 ①含义&#xff1a;记录文本规则的代码。 ②注意&#xff1a;需要导入re模块 ③特点&#xff1a; 语法比较复杂&#xff0c;可读性较差。通用性很强&#xff0c;适用于多种编程语言 ④步骤&#…

Spring 框架学习

技术体系结构 总体技术体系 单一架构 一个项目&#xff0c;一个工程&#xff0c;导出为一个 war 包&#xff0c;在一个 Tomcat 上运行&#xff0c;也叫 all in one。 单一架构&#xff0c;项目主要应用技术框架为&#xff1a;Spring、SpringMVC 、Mybatis。 分布式架构 一个…

ubuntu22.04 关于挂在设备为nfts文件格式无法创建软连接的问题

最近遇到情况&#xff0c;解压工程报错&#xff0c;无法创建软连接 但是盘内还有130G空间&#xff0c;明显不是空间问题&#xff0c;查找之后发现是移动硬盘的文件格式是NTFS&#xff0c;在ubuntu上不好兼容&#xff0c;于是报错。 开贴记录解决方案。 1.确定文件格式 使用命…

pydub AudioSegment入门(基于Pyhton3)

目录 简介核心功能安装与依赖基本用法加载音频文件导出音频文件音频基础操作 简介 pydub 是一个简单易用的 Python 音频处理库&#xff0c;专注于提供高层次的音频操作接口&#xff0c;而 AudioSegment 是它的核心类&#xff0c;用于表示音频片段&#xff08;如 MP3、WAV、OGG…

LLM预训练过程-简明版本

文章总结自视频&#xff1a;【1080P】安德烈卡帕西&#xff1a;深入探索像ChatGPT这样的大语言模型&#xff5c;Andrej Karpathy_哔哩哔哩_bilibili 1. 准备训练集 详细的数据集准备方法可参考视频&#xff0c;或者huggingFace ​ 2. 分词&#xff08;Tokenizer&#xff09; …

mingw32编译ffmpeg

ffmpeg https://gitee.com/mirrors/ffmpeg.git 使用msys2的mingw32 pacman -S mingw-w64-x86_64-toolchain compile ./confiure --enable-static --disable-shared --enable-gpl --target-oswin32 mingw32-make -j4 提示编译错误&#xff0c;msys2里面的路径是/d/tools/msys2…

MAVEN解决版本依赖冲突

文章目录 一、依赖冲突概念1、什么是依赖冲突2、依赖冲突的原因3、如何解决依赖冲突 二、查看依赖冲突-maven-helper1、安装2、helper使用1、conflicts的阅读顺序&#xff08;从下向上看&#xff09;2、dependencies as List的阅读顺序&#xff08;从下向上看&#xff09;3、de…

Linux Bash 单命令行解释 | 文件操作 / 字符串操作 / 重定向

注&#xff1a;本文为 “Linux Bash” 相关文章合辑。 中文引文&#xff0c;未整理。 英文引文&#xff0c;机翻未校。 第一部分&#xff1a;文件操作 1. 清空文件&#xff08;清除文件大小为 0&#xff09; $ > file这行命令使用输出重定向操作符 >。输出重定向造成文…

在终端中用code命令打开vscode并加载当前目录了

注册code命令 启动 VSCode 编辑器,按 shift command p输入 shell command&#xff0c;选择 Install ‘code’ command in PATH 选项&#xff0c; 安装code 命令 此操作会把 code 命令添加到系统的环境变量里。 打开 iTerm2 终端 在 iTerm2 中&#xff0c;cd 代码库根目录, …

ESMFold对决AlphaFold:蛋白质-肽相互作用预测的新进展

今天向大家介绍的这篇文章题目为&#xff1a;“Protein−Peptide Docking with ESMFold Language Model”&#xff0c;近期发表在JCTC上。 本文主要研究 ESMFold 语言模型在蛋白质-肽对接中的应用。通过探索多种对接策略&#xff0c;评估其在预测蛋白质-肽相互作用方面的性能&a…