微信小程序之自定義日歷組件
我們單位實(shí)行的大小周工作制,即大周休息2天,小周消息一天。因這點(diǎn)小特殊,總有同事常記錯(cuò)周六這天是否上班。也因這點(diǎn),在程序上需要特別體現(xiàn)出大小周的提示,于是需要設(shè)計(jì)一個(gè)日歷組件,并在日歷上標(biāo)注出排班名稱和大小周。最終實(shí)現(xiàn)圖如下:微信小程序demo提供了一個(gè)簡(jiǎn)單的日歷組件,vant也提供了一個(gè)日歷組件,在github上也有一些日歷組件,我試用了一番,都多少存在一些不符合之處。重點(diǎn)說(shuō)一下vant,它有幾個(gè)問(wèn)題:一是加載數(shù)據(jù)太大,一運(yùn)行就加載至少一年以上的數(shù)據(jù);二是樣式不好控制,大小相修改一下就會(huì)變形;三是在日期上下方加文字不方便。因?yàn)闆](méi)有找到太好的組件可以引用,就自己想設(shè)計(jì)一個(gè)能方便控制的,遂有下面的設(shè)計(jì),1、采用grid組件顯示日期,分三行,中間一行為日期具體天的數(shù)字,上面一行顯示大小周提示、下面一行顯示排班名稱2、采用scroll-view動(dòng)態(tài)包含grid數(shù)目3、一行顯示幾天,可以動(dòng)態(tài)設(shè)置3、日歷結(jié)構(gòu)體4、具體每個(gè)月的日歷算法獲取某個(gè)月的第一天和最后一天,再獲取每天的星期數(shù),循環(huán)放到grid結(jié)構(gòu)體中優(yōu)點(diǎn):一是加載數(shù)據(jù)量少,可控制;二是顯示內(nèi)容豐富,可以控制;三是也是顯示可以使用slot,更加豐富缺點(diǎn):一不是專業(yè)日歷組件,樣式簡(jiǎn)單了些;二是加載數(shù)據(jù)量有限,grid自身也是一個(gè)組件,加載多了額外的開(kāi)銷肯定大起來(lái)。
小程序手寫日歷
不需要調(diào)接口,想要渲染幾個(gè)月的數(shù)據(jù),手動(dòng)傳入即可根據(jù)思否 Peggy7這篇文章改了一下。{{canlendar_data[cur].year}}年{{canlendar_data[cur].month}}月{{item}}{{item.fullDate>=nowDate && item.fullDate<=maxDate &&!item.available?'滿':''}}{{checkDate===item.fullDate ? '已選' : ''}}{{item.day?item.day:''}}{{rule}}