微信小程序日历插件用法-举例为(爸妈搜日历)

article/2025/8/25 10:38:52

一、添加插件

在小程序管理后台添加插件。

小程序管理后台地址:https://mp.weixin.qq.com/

设置>第三方设置>插件管理

在这里插入图片描述

添加插件,可以直接搜索名称(爸妈搜日历)或者AppID(wx23a9cef3522e4f7c)

二、在小程序app.json文件中引入插件声明

"plugins": {"calendar": {"version": "1.3.3","provider": "wx23a9cef3522e4f7c"}},

三、在需要使用插件的小程序页面的JSON配置文件中,增加配置:

{"usingComponents": {"calendar": "plugin://calendar/calendar"}
}

四、wxml文件写入

<calendar bindselectDate='selectDate' bindnextMonth='nextMonth' bindprevMonth='prevMonth'/>

五、js文件定义方法

/*** 点击的日期*/selectDate: function (e) {console.log(e)let clickDay = e.detail.datewx.showModal({title: '当前日期',content: '当前日期:' + clickDay });},/*** 点击上个月*/prevMonth: function (e) {console.log(e)const currentYear = e.detail.currentYear;const currentMonth = e.detail.currentMonth;wx.showModal({title: '当前日期',content: '当前年份:' + currentYear + '年\n当前月份:' + currentMonth + '月'});},/*** 点击下个月*/nextMonth: function (e) {console.log(e)const currentYear = e.detail.currentYear;const currentMonth = e.detail.currentMonth;wx.showModal({title: '当前日期',content: '当前年份:' + currentYear + '年\n当前月份:' + currentMonth + '月'});},

说明:js不加,页面也可以呈现日历效果

插件api

日历

介绍:日历基本功能,自定义样式,考勤状态

使用方法:

1、 在微信小程序管理后台——设置——第三方服务,按 AppID(wx23a9cef3522e4f7c)搜索到该插件并申请授权(ps:一般不会出现拒绝的情况。如果申请被拒绝了,请重新申请,有时候管理员手抽点错了,请见谅)。

2、在要使用该插件的小程序 app.json 文件中引入插件声明。

"plugins": {"calendar": {"version": "1.3.3", (选取对应的版本号,建议使用最新版本)"provider": "wx23a9cef3522e4f7c"}
}

3、在需要使用到该插件的小程序页面的 JSON 配置文件中,做以下配置:

{"usingComponents": {"calendar": "plugin://calendar/calendar"}
}

4、在相应的 HTML 页面中添加以下语句即可完成插件的嵌入。

<calendar />

5、说明:默认的用法,将具备以下样式特点:

  1. 显示当前月份的日历;
  2. 显示日历标题、显示上下月按钮;
  3. 显示周标题,周标题默认为 cn 类型,即中文简写;
  4. 显示主标题 ,默认为cn-n类型
属性名类型默认值说明
curYearNumber当前年份年份
curMonthNumber当前月份月份 (1 - 12)
dayNumber当前日日期 (1-31 若日期超过该月天数,月份自动增加)
header_showBooleantrue主标题是否显示
nextBooleantrue是否显示下个月按钮
prevBooleantrue是否显示下个月按钮
remark_showBooleanfalse备注是否显示
remark_styleStringheadline备注类型
count_numNumber0备注类型为date 备注信息1
count_berNumber0备注类型为date 备注信息2
count_txtString此处为备注信息备注类型为headline 的备注信息
count_txt_userArray[] 属性有:count_txt和 count_ber备注类型为userdefined的备注信息(仅支持1.0.7版及以上)具体看下面说明
weekTitle_showBooleantrue周标题是否显示
week_typeStringcn周标题类型
active_typeStringcircle选中日期样式
circle_showBooleantrue日期下方的点是否显示(每过一天添加一个)
pitch_onStringcircle日期下方的点样式
allshowBooleanfalse日期下方的线是否全部显示(整个月的显示)(仅支持1.0.8版本及以上)
appearBooleanfalse样式线是否显示
mystatusArray[]想要的对应日期的状态 (仅支持1.0.4版及以上)
selectedDateString""一开始选中的日期、不传入默认为当天(仅支持1.0.7版及以上)
customBooleanfalse是否自定义上下月文字(仅支持1.0.7版及以上)
switchoverArray['上一月','下一月']自定义的上下月按钮文字 只有custom为true时有效(仅支持1.0.7版及以上)
isClickBooleanfalse是否带有主标题(年月份)点击选择日期事件(仅支持1.0.7版及以上)
txt_typeStringcn-n主标题类型(年月份)[en、full-en、cn、cn_n](仅支持1.0.7版及以上)
weekheightNumber120控制单元格高度 (仅支持1.0.8版本及以上)
txtlistArray[]自定义日期下方的文字 (仅支持1.0.8版本及以上)具体看下面文字设置说明 (1.2.0版本已废弃此属性,请使用speciallist属性)
coloredString#a1a1a1设置过去日期的字体颜色, closelaststyle为true才有效(仅支持1.1.1版本及以上)
closelaststyleBooleanfalse是否设置过去日期的字体样式(仅支持1.1.1版本及以上)
speciallistArray[]自定义日期下方的文字,或标注特殊日期的样式(仅支持1.2.0版本及以上) 具体请看下方说明
isTodaybtnBooleanfalse是否显示回到今天的按钮(仅支持1.2.0版本及以上)
todaybtn_txtString今天回到今天的按钮显示的文字信息(仅支持1.2.0版本及以上)
ifRecordClickedDateBooleanfalse是否记录点击日期 (开启多选模式)(仅支持1.3.0版本及以上)
clickedDateArray[]记录点击日期的数组 (仅支持1.3.0版本及以上)
<calendar 
cur-year="{{curYear}}"
cur-month="{{curMonth}}" 
day="{{day}}" 
header_show='{{header_show}}' 
prev='{{prev}}' 
next='{{next}}' 
/>
data: {curYear: new Date().getFullYear(), // 年份curMonth: new Date().getMonth() + 1,// 月份 1-12day: new Date().getDate(), // 日期 1-31 若日期超过该月天数,月份自动增加header_show: true, // 主标题是否显示prev: true, // 上一个月按钮是否显示next: true, // 下一个月按钮是否显示},
count_txt_user说明(样式看下面样式说明):
count_txt_user:[{ 'count_txt': '字段1:', 'count_ber': '内容1' },{ 'count_txt': '字段2:', 'count_ber': '内容2' },{ 'count_txt': '字段3:', 'count_ber': '内容3' },
]

remark_style 有效值

说明
headline普通备注
date出勤备注
userdefined自定义备注(多字段)此时需要传count_txt_user自己定义的信息,(仅支持1.0.7版及以上)

week_type 有效值

说明
cn显示为:日, 一, 二, 三, 四, 五, 六
en显示为:S, M, T, W, T, F, S
full-en显示为:Sun, Mon, Tue, Wed, Thu, Fri, Sat

active_type 有效值

说明
circle圆形背景
square方形背景

pitch_on 有效值

说明
circle圆形背景
square方形背景

txt_type 有效值(支持1.0.7版及以上)

说明
cn显示为:二零一八-七月
cn-n显示为:2018-07
cn-d显示为:2018年-07月(仅1.2.0版本及以上支持)
en显示为:2018-Jul
full-en显示为:2018-July

speciallist属性(支持1.2.0版及以上)

说明
date自定义的日期
background自定义的日期的背景样式
text自定义日期的自定义文字
color自定义日期的颜色
textBgcolor自定义文字的背景色
this.setData({speciallist: [{ date: '2019-09-02', background: 'yellow',text:'文字1',color:'', textBgcolor: '#e19' },{ date: '2019-09-05', background: 'red', text:'文字2'  },]})

效果: ![在这里插入图片描述](https://img-blog.csdnimg.cn/212d052b5497413c992a2a563433bf39.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2d4f4dd33b8947fdbb21a9860b72e092.png)

事件

注: 在js写方法 在html传入

事件方法说明
bindnextMonth点击下个月
bindprevMonth点击上个
bindselectDate点击日期
bindchooseDate点击主标题(年月)(支持1.0.7版及以上)
bindgotoday点击返回今天按钮 (支持1.2.0版及以上 )
bindrecordClickedDate当开启多选模式时,返回已选择的日期数组(支持1.3.0版以上)
<calendar bindselectDate='selectDate'  bindnextMonth='nextMonth' bindprevMonth='prevMonth' bindchooseDate='chooseDate'/>
/*** 点击上个月*/nextMonth: function (e) {console.log(e)const currentYear = e.detail.currentYear;const currentMonth = e.detail.currentMonth;wx.showModal({title: '当前日期',content: '当前年份:' + currentYear + '年\n当前月份:' + currentMonth + '月'});},

事件都有一个e ,可以获取一些返回的信息

样式

类名说明
calendar-style日历整体样式
header-style标题样式
weektitle-style周标题面板样式
datatitle-style日期面板样式
dotcolor-o对应日期的状态为1 日期下方的点颜色变化 目前模拟出勤情况 0:未出勤 1:正常出勤 2:事假 3:病假 9:休息null:暂无数据 即为出勤样式
dotcolor-t对应日期的状态为其他 日期下方的点颜色变化 目前模拟出勤情况 0:未出勤 1:正常出勤 2:事假 3:病假 9:休息null:暂无数据 即为缺勤样式
headline-style备注类型为headline的备注信息样式
datefont-style日期字体样式
restcolor-style单独设置周六日的样式 此时需考虑优先级!important(仅支持1.0.4版及以上)
active-coloro选中的样式 具体说明请看文档下方的说明(仅支持1.0.5版及以上)
active-colort当前日期的样式 具体说明请看文档下方的说明(仅支持1.0.5版及以上
userdefined_style备注样式为userdefined 有效,key:value的整体样式 (仅支持1.0.7版及以上
counttxt_style备注样式为userdefined 有效,key的样式(仅支持1.0.7版及以上)
countber_style备注样式为userdefined 有效,value的样式(仅支持1.0.7版及以上)
txt_style日期下方的文字的样式设置 (仅支持1.0.8版本及以上)
todaybtn-style返回今天的按钮的样式(仅支持1.2.0版本及以上)

注:

  1. 在wxss自定义写样式,在html传入;注意优先级!important。

例:

/* 主题面板样式  */
.header-style{background: #188be4 ;  color: #fff;
}
<calendar header-style='header-style' />

样式说明

选中样式
日历插件 有个选中样式(默认选中的是当天),如图:

选中的样式不是当天,如图:

![在这里插入图片描述](https://img-blog.csdnimg.cn/56852488ee614c938baf393dda01c40e.png)

点击选中其他日期时,样式会出现对应的日期上。

.active-coloro {color: #fff;background: #188be4;
}
选中样式样式二:

如果想要一下样式,及:点击其他日期时,显现当天的样式,如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/fad1aed6165e460f8edca2b2b663bedc.png)

此时在使用页面的wxss中写下已下代码:

 .active-colort {color: #fff;background: #b8d5eb;}

使用时考虑优先级,可自己改变想要的颜色

考勤下方小点的样式

样式如下:

链接

wxss中定义样式,然后再wxml中传入:

/* 出勤  */
.dotcolor-o{background-color: #188be4 !mportant;  
}
/* 未出勤  */
.dotcolor-t{background-color: #FF7F50 !mportant;  
}
  1. 分别由dotcolor-o(正常出勤)和dotcolor-t(病假、事假) 具体区分病假、事假可以在点击事件中获取e ,有相应的的数据。
  2. 如果为null(暂无数据)圆点不会显现,circle_showtrue 也无效。
  3. circle_showtrue 日期下方对应的小点才会显现 ,样式不会显现
  4. 小点只会显示到当前的日期。每过一天多一个
备注为userdefined 的样式

样式如下:

链接

在使用日历插件文件的wxss中:

/* 备注信息为headline样式  */
.headline-style{background: #ddcbf3 !important;display: flex;justify-content: space-around;
}
/*key的样式*/
.counttxt_style{color: #333;
}
/*vuale的样式*/
.countber_style{color: #f39eac;
}

考勤状态说明

由于许多项目可能涉及到考勤情况,因此加入了考勤的状态信息(仅支持1.0.4版以上)。目前考勤只支持传入数字:

0:未出勤 1:正常出勤 2:事假 3:病假 9:休息null:暂无数据;具体的对应需要前端页面做相应处理。

方法:

  1. js中定义对应的mystatus信息:

    例如:

     data: {mystatus: [],  // 状态  状态  0:未出勤 1:正常出勤 2:事假 3:病假 9:休息 },onLoad:function() {//发起状态请求,在请求成功后,定义mystatus
    
     // 例子就不写请求了,直接定义如下this.setData({mystatus: [1, 2, 1, 1, 3, 1, 1, 2, 9, 9, 1, null, 1, 2, 1, 9, 9, null, 0, 1, 0, 3, 9, 9, 1, 1, 0, 0, 1, 9]
    })
    

}

此时需要注意,如果当天无数据就为null

  • wxml中:

  • <calendar mystatus='{{mystatus}}' circle_show="{{true}}"/>
    

    circle_showtrue 日期下方对应的小点才会显现 ,同时需要注意日期所占的高度时候足够,可以通过weekheight进行设置,具体的样式说明请看上方的样式说明

    1. wxss中定义:

      /* 出勤  */
      .dotcolor-o{background-color: #188be4 !mportant;  
      }
      /* 未出勤  */
      .dotcolor-t{background-color: #FF7F50 !mportant;  
      }
      
    1. 可以在点击事件中查看考勤情况
    selectDate:function (e) {// console.log(e.detail.status)const date = e.detail.date;const week = e.detail.week;var statustext;if(e.detail.status == 1){statustext = "正常出勤"} else if(e.detail.status == 0) {statustext = "未出勤"} else if(e.detail.status == 2){statustext = "事假"} else if(e.detail.status == 3) {statustext = "病假"} else if(e.detail.status == 9) {statustext = "休息"} else{statustext = ""}wx.showModal({title: '信息',content: '当前时间:' + date + ' ' + week + ' ' + statustext});},
    

    效果:

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/952ce3422e504dd99b74f251b2e7f56e.png)

    文字设置说明

    方法1:(1.2.0版以废弃此方法,可以使用speciallist属性)

    1. js中定义对应的txtlist信息:

      例如:

       data: {txtlist: [], },onLoad:function() {//发起状态请求,在请求成功后,定义txtlist
      
       // 例子就不写请求了,直接定义如下this.setData({txtlist: ['', '', '', '文字1', '', '', '文字2', '', '', '',] 
      })
      

    }

    此时需要注意,如果当天无数据就为' ' (空字符串)

  • wxml中:

  • <calendar txtlist='{{txtlist}}' txt_style='{{txt_style}}' />
    

    txt_style设置文字的大小颜色

    效果:

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/14ca3a17a95d455aa2b767381ef569d6.png)

    方法2:(1.2.0及以上版本支持 )

    1. js中定义对应的speciallist信息:

      例如:

       data: {speciallist: [], },onLoad:function() {this.setData({speciallist: [{ date: '2018-11-02', background: 'yellow', text:'文字1',color:'' },{ date: '2018-11-05', background: 'red', text: '文字2'  },{ date: '2018-11-11', background: 'bule', text: '文字' },{ date: '2018-11-12', background: 'orange', text: '文字' },{ date: '2018-11-06', background: 'white', text: '文字' },],})}
      
    1. wxml中:
    <calendar speciallist='{{speciallist}}' txt_style='{{txt_style}}' />
    

    txt_style设置文字的大小颜色

    效果:

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/505bd261e3d9441daead4cf333045c98.png)

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/447f77efd2414864888fc9654c5c5ffa.png)

    1. 可以在selectDate点击事件中得到文字信息

http://chatgpt.dhexx.cn/article/tXvWwuFh.shtml

相关文章

前端ui组件(1):日程排班—11个优秀JavaScript 日历插件

日历是我们生活中重要的一部分。在当今世界,人们大多使用网络或移动日历。它们随处可见,包括在各种软件中:预订应用、旅行软件、项目管理、管理面板等。 出于多种原因,用户可能需要在网站上使用日历。用户需要容果从日历中选择日期来填写表格,或者在填写某些信息时提供日…

好用的日历插件(三款常用的日历插件)

1、laydate https://www.layui.com/laydate/ 全面重写的 layDate 包含了大量的更新&#xff0c;其中主要以&#xff1a;年选择器、年月选择器、日期选择器、时间选择器、日期时间选择器 五种类型的选择方式为基本核心&#xff0c;并且均支持范围选择&#xff08;即双控件&…

【典例】链表经典题目合集

目录导航 1. 删除链表中给定值为val的所有节点2. 反转一个单链表3. 返回链表中间节点&返回链表倒数第k个节点4. 链表的回文结构5. 合并两个有序链表6. 输入两个链表&#xff0c;找出它们第一个公共节点7. 分割链表8. 判断链表是否带环&找环的入口点9. 复制复杂链表10. …

链表知识点总结

目录 一、基本概念&#xff1a; 1.定义&#xff1a; 2.性质&#xff1a; 3.链表的分类&#xff1a; 单链表&#xff1a; 双向链表 单链表和双向链表的区别&#xff1a; 双向链表的作用&#xff1a; 循环链表 二、链表的主要操作&#xff1a; 1.插入操作&#xff1a; a.重…

二级指针实现单链表的插入、删除及 linux内核源码双向链表之奇技

二级指针实现单链表的插入、删除 今天看了coolshell上关于二级指针删除单链表节点的文章。 文章中Linus 举例&#xff1a; 例如&#xff0c;我见过很多人在删除一个单项链表的时候&#xff0c;维护了一个”prev”表项指针&#xff0c;然后删除当前表项&#xff0c;就像这样…

C++实现链表

C实现链表 众所周知&#xff0c;C/C语言实现的链表是由一个一个的结点构成&#xff0c;每个结点分为数据域和指针域&#xff0c;指针域中存储了其后继结点的地址&#xff0c;通过地址来访问下一个结点。 链表是一系列节点串联形成的数据结构&#xff0c;链表存储有序的元素集合…

2130. 链表最大孪生和

地址&#xff1a; 力扣https://leetcode-cn.com/problems/maximum-twin-sum-of-a-linked-list/ 题目&#xff1a; 在一个大小为 n 且 n 为 偶数 的链表中&#xff0c;对于 0 < i < (n / 2) - 1 的 i &#xff0c;第 i 个节点&#xff08;下标从 0 开始&#xff09;的孪…

链表基础【C++实现】

平台&#xff1a;Visual Studio 2022 编程工具&#xff1a;C 目录&#xff1a; 1、链表的结构体实现 2、链表的声明、开辟空间 3、链表的初始化 4、链表的连接 5、链表输出 6、完整代码实例 1、链表的结构体实现 链表由一系列结点&#xff08;链表中每一个元素称为结点&#…

体能修复6-编程-剑指offer-JZ22 链表中倒数最后k个结点

描述 输入一个长度为的链表&#xff0c;设链表中的元素的值为&#xff0c;返回该链表中倒数第个节点。 如果该链表长度小于&#xff0c;请返回一个长度为的链表。 数据范围:&#xff0c;&#xff0c; 要求&#xff1a;空间复杂度&#xff0c;时间复杂度 进阶&#xff1a;空…

Niuke:JZ36.二叉树与双向链表

文章目录 &#xff2e;iuke:JZ36.二叉树与双向链表题目描述示例思路分析代码实现 &#xff2e;iuke:JZ36.二叉树与双向链表 题目描述 描述 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。如下图所示 注意: 1.要求不能创建任何新的结点&#xff0c;…

【C/C++ 数据结构】-链表(OJ题)(4)

文章目录 题一&#xff1a;反转链表法1&#xff1a;指针反向法2&#xff1a;指针翻转法3&#xff1a;头插法 题二&#xff1a;链表的中间节点法1&#xff1a;统计节点减半法法2&#xff1a;快慢指针法 题三&#xff1a;合并两个有序链表法1&#xff1a;tail拼接法法2&#xff1…

链表面试常见考题(C++实现)

链表面试常见考题&#xff08;C实现&#xff09; 常用方法&#xff1a;画图法 常用技巧&#xff1a;用于遍历搜索的游标 ListNode* cur; 用于返回值的哑节点 ListNode* dumny new ,, 单链表更新先去考虑他的next指向问题。链表元素或者边界问题可以用前继节点pre、后继节点…

剑指offer(C++)-JZ22:链表中倒数最后k个结点(数据结构-链表)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为 ai &#xff0c;返回该链表中倒数第k个节点。…

单链表(带头结点)的存储结构与基本操作(c语言)------亲测可用

编程语言&#xff1a;c语言 编译环境&#xff1a;Dev-c 实现功能&#xff1a;实现功能&#xff1a;单链表&#xff08;带头结点&#xff09;结点结构体的定义&#xff0c;单链表&#xff08;带头结点&#xff09;初始化、求元素个数、插入元素、删除元素、取元素、打印所有元素…

链表OJ归纳总结 ------- C语言

一、移除链表元素 OJ链接https://leetcode.cn/problems/remove-linked-list-elements/submissions/ 1.1. | 解题思路 | 创建一个新的哨兵头节点 guard&#xff0c;创建尾节点 tail&#xff0c;创建 cur 用于遍历原链表数据。 对原链表进行遍历&#xff0c;若 cur->val ! v…

【链表复习】C++ 链表复习及题目解析 (2)

目录 牛客 CM11 链表分割 牛客 OR36 之链表的回文结构 Leetcode 160. 相交链表 LeetCode 141. 环形链表 LeetCode 138. 复制带随机指针的链表 本文继续延续前文&#xff0c;为大家带来几道经典的链表中等难度的题目。 牛客 CM11 链表分割 现有一链表的头指针 ListNode* p…

【链表OJ题(三)】链表中倒数第k个结点

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 链表OJ题(三)1. 链表…

【20230205】链表小结

链表&#xff08;list&#xff09; 链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff0c;链表的入口节点称…

【链表复习】C++ 链表复习及题目解析 (3)

目录 剑指offer 中的链表题目 JZ6 从尾到头打印链表 JZ18 删除链表的结点 JZ24 反转链表 JZ25 合并两个排序的链表 JZ52 两个链表的第一个公共结点 JZ23 链表中环的入口结点 JZ22 链表中倒数第k 个结点 JZ35 复杂链表的复制 JZ76 删除链表中重复的结点 本次给大家带来…

【023】C/C++数据结构之链表及其实战应用

C 链表及其实战应用 引言一、链表的概述二、利用链表设计一个学生管理系统2.1、设计主函数main()2.2、实现插入节点2.3、实现链表的遍历2.4、实现链表的查找2.5、实现删除某个节点2.6、实现释放链表2.7、完整代码 总结 引言 &#x1f4a1; 作者简介&#xff1a;专注于C/C高性能…