更新记录

1.0.1(2025-07-02) 下载此版本

EmbedCalendar 日历组件

一个简单易用的 Vue.js 日历组件,支持月视图和周视图切换。


平台兼容性

uni-app(4.65)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.62)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

其他

多语言 暗黑模式 宽屏模式
×

EmbedCalendar 日历组件

一个简单易用的 Vue.js 日历组件,支持月视图和周视图切换。

🌟 主要功能

  • 月视图/周视图:可以看整月日历,也可以只看一周
  • 日期导航:点击箭头切换月份或周
  • 头像问候:显示头像和自定义问候语
  • 今日标记:今天的日期有特殊标识
  • 签到标记:已签到的日期显示绿色背景和红点
  • 响应式:适配手机和电脑屏幕

📱 界面说明

顶部区域

  • 左侧:头像 + 问候语对话框
  • 右侧:"今" 按钮,点击跳转到今天

日历区域

  • 标题:显示年月
  • 切换按钮:月/周 视图切换
  • 导航箭头:左右切换月份或周
  • 日期格子:显示具体日期

🎮 基本操作

1. 切换视图

  • 点击 "月" 按钮:看整个月的日历
  • 点击 "周" 按钮:只看一周的日历

2. 日期导航

  • 点击左箭头:查看上个月/上周
  • 点击右箭头:查看下个月/下周

3. 选择日期

  • 点击任意日期:选中该日期(变成紫色)
  • 点击灰色日期:自动跳转到那个月份

4. 快速跳转

  • 点击右上角 "今" 按钮:快速跳转到今天

5. 日期状态说明

  • 紫色 + 半月图标:今天
  • 紫色背景:选中的日期
  • 绿色 + 红点:已签到日期
  • 灰色:其他月份的日期

�📝 使用方法

基础用法

<template>
  <view>
    <EmbedCalendar
      @on-click="handleDateClick"
      @month-change="handleMonthChange"
      @today-plan-click="handleTodayPlanClick"
    />
  </view>
</template>

<script>
export default {
  methods: {
    // 日期点击事件
    handleDateClick(dateInfo) {
      console.log('选中日期:', dateInfo);
      // dateInfo 包含:date, year, month, day, isToday
    },

    // 月份变化事件
    handleMonthChange(monthInfo) {
      console.log('月份变化:', monthInfo);
      // monthInfo 包含:year, month
    },

    // 今日计划点击事件
    handleTodayPlanClick() {
      console.log('点击了今日计划');
    }
  }
}
</script>

高级配置

<template>
  <EmbedCalendar
    :show-top-section="true"
    :avatar-src="userAvatar"
    :greeting-text="customGreeting"
    :signed-dates="signedDates"
    :weekstart="1"
    :open="false"
    @on-click="handleDateClick"
    @month-change="handleMonthChange"
    @today-plan-click="handleTodayPlanClick"
  />
</template>

<script>
export default {
  data() {
    return {
      userAvatar: '/static/user-avatar.png',
      customGreeting: '早安,今天也要加油哦!',
      signedDates: ['2025-7-1', '2025-7-2', '2025-7-3'], // 已签到日期
    }
  }
}
</script>

🎛️ Props 属性

属性名 类型 默认值 说明
showTopSection Boolean true 是否显示顶部区域
avatarSrc String '' 头像图片路径
greetingText String '我闻着饼香来到到街中央' 问候语文本
signeddates Array [] 已签到日期数组,格式:['2025-7-1']
weekstart Number 7 一周开始的星期几(1-7)
open Boolean true 初始是否展开月视图

📡 Events 事件

on-click

用户点击日期时触发

// 回调参数
{
  date: "2025-7-2",      // 日期字符串
  year: 2025,            // 年份
  month: 7,              // 月份
  day: 2,                // 日期
  isToday: true          // 是否为今天
}

month-change

月份发生变化时触发(导航切换)

// 回调参数
{
  year: 2025,            // 年份
  month: 7               // 月份
}

today-plan-click

点击"今日计划"按钮时触发

// 无参数,可用于打开今日计划相关页面

💡 常见使用场景

1. 签到日历

data() {
  return {
    signedDates: ['2025-7-1', '2025-7-2'] // 已签到日期
  }
},
methods: {
  handleDateClick(dateInfo) {
    // 执行签到逻辑
    if (!this.signedDates.includes(dateInfo.date)) {
      this.signedDates.push(dateInfo.date);
      console.log('签到成功!');
    }
  }
}

2. 日程选择

methods: {
  handleDateClick(dateInfo) {
    // 跳转到日程页面
    this.$navigate('/schedule?date=' + dateInfo.date);
  }
}

3. 日期范围限制

methods: {
  handleDateClick(dateInfo) {
    const today = new Date();
    const selected = new Date(dateInfo.date);

    if (selected < today) {
      console.log('不能选择过去的日期');
      return;
    }

    // 处理有效日期
    this.processDate(dateInfo);
  }
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问