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


    一、添加插件

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

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

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

    在这里插入图片描述

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

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

    "plugins": {
        "calendar": {
          "version": "1.3.3",
          "provider": "wx23a9cef3522e4f7c"
        }
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    {
      "usingComponents": {
        "calendar": "plugin://calendar/calendar"
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    四、wxml文件写入

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

    五、js文件定义方法

    
      /**
        * 点击的日期
        */
      selectDate: function (e) {
        console.log(e)
        let clickDay = e.detail.date
        wx.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 + '月'
        });
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

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

    插件api

    日历

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

    使用方法:

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

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

    "plugins": {
        "calendar": {
            "version": "1.3.3", (选取对应的版本号,建议使用最新版本)
            "provider": "wx23a9cef3522e4f7c"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    {
      "usingComponents": {
        "calendar": "plugin://calendar/calendar"
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    <calendar />
    
    • 1

    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}}' 
    />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    data: {
        curYear: new Date().getFullYear(), // 年份
        curMonth: new Date().getMonth() + 1,// 月份 1-12
        day: new Date().getDate(), // 日期 1-31 若日期超过该月天数,月份自动增加
        header_show: true, // 主标题是否显示
        prev: true, // 上一个月按钮是否显示
        next: true, // 下一个月按钮是否显示
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    count_txt_user说明(样式看下面样式说明):
    count_txt_user:[
        { 'count_txt': '字段1:', 'count_ber': '内容1' },
        { 'count_txt': '字段2:', 'count_ber': '内容2' },
        { 'count_txt': '字段3:', 'count_ber': '内容3' },
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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'  },
          ]
        })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    效果: ![在这里插入图片描述](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'/>
    
    • 1
    
      /**
        * 点击上个月
        */
      nextMonth: function (e) {
        console.log(e)
        const currentYear = e.detail.currentYear;
        const currentMonth = e.detail.currentMonth;
        wx.showModal({
          title: '当前日期',
          content: '当前年份:' + currentYear + '年\n当前月份:' + currentMonth + '月'
        });
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    事件都有一个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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    <calendar header-style='header-style' />
    
    • 1

    样式说明

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

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

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

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

    .active-coloro {
      color: #fff;
      background: #188be4;
    }
    
    • 1
    • 2
    • 3
    • 4
    选中样式样式二:

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

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

     .active-colort {
        color: #fff;
        background: #b8d5eb;
      }
    
    • 1
    • 2
    • 3
    • 4

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

    考勤下方小点的样式

    样式如下:

    链接

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

    /* 出勤  */
    .dotcolor-o{
        background-color: #188be4 !mportant;  
    }
    /* 未出勤  */
    .dotcolor-t{
        background-color: #FF7F50 !mportant;  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    考勤状态说明

    由于许多项目可能涉及到考勤情况,因此加入了考勤的状态信息(仅支持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]
      })
      
      • 1
      • 2
      • 3
      • 4
      • 1
      • 2
      • 3
      • 4
      • 5

    }

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

    • wxml中:

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

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

      1. wxss中定义:

        /* 出勤  */
        .dotcolor-o{
            background-color: #188be4 !mportant;  
        }
        /* 未出勤  */
        .dotcolor-t{
            background-color: #FF7F50 !mportant;  
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
      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
            });
        },
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23

      效果:

      ![在这里插入图片描述](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', '', '', '',] 
        })
        
        • 1
        • 2
        • 3
        • 4
        • 1
        • 2
        • 3
        • 4
        • 5

      }

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

    • wxml中:

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

      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
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
      1. wxml中:
      <calendar speciallist='{{speciallist}}' txt_style='{{txt_style}}' />
      
      • 1

      txt_style设置文字的大小颜色

      效果:

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

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

      1. 可以在selectDate点击事件中得到文字信息
  • 相关阅读:
    Maven系列第2篇:安装、配置、mvn运行过程详解
    Vue之组件传值 provide-inject 非响应式,组件传值 provide-inject 响应式,自定义事件,动态组件,缓存组件,异步组件
    从零开始写 Docker(十八)---容器网络实现(下):为容器插上”网线“
    【c语言】字符串函数的模拟实现(二)
    HOW - Lodash 使用指南和源码学习
    centos7 部署oracle完整教程(命令行)
    Redis-企业级解决方案
    详解Redis三大集群模式,轻松实现高可用!
    VUE(递归)语法没错,但报 ESLint: ‘formatToTree‘ is not defined.(no-undef)
    东软集团:看似低调,却有了19年的AI坚持
  • 原文地址:https://blog.csdn.net/weixin_42645716/article/details/125523907