uniapp : 仿钉钉考勤统计页面的日历组件,通过日历展示每日考勤打卡情况,支持在日历上打两种不同类型的点,大致适配各种分辨率
效果图
-
不带月份变化事件
-
带月份变化事件
介绍
-
本文使用的组件在上面的组件基础上做了一些个性化适配,增加了如下内容:
- 系统当前日期样式由[白底蓝字]调整为[淡蓝色圆形背景白字]
- 选中日期样式由[蓝色矩形背景白字]调整为[蓝色圆形背景白字]
- 在日期上打点的样式由[日期右上角]调整为[日期底部正中间]
- 提供两种不同的打点样式
- 增加月份变化事件的外部调用接口
- 怎么添加多种不同的打点样式
- 去掉了[今日]快捷按钮
-
本文中的组件样式能适配不同的分辨率,但打点样式可能在细微之处有所不同(不是那么居中)
4.重点:适配ipad大屏请进行如下配置!!!适配ipad大屏请进行如下配置!!!适配ipad大屏请进行如下配置!!!
在pages.json 的 globalStyle 中添加如下三行配置内容:
"globalStyle": {
"rpxCalcMaxDeviceWidth": 1024,
"rpxCalcBaseDeviceWidth": 375,
"rpxCalcIncludeWidth": 750
}
使用方法(一):不带月份选择
-
在项目中新建pages的同级目录components,将uni-calendar文件放在里面
3.在main.js中添加如下代码引入组件
import myCalender from "./components/uni-calendar/components/uni-calendar/uni-calendar.vue";
Vue.component('my-calender',myCalender);
- 在页面中加载组件
<template>
<view>
<my-calender :clearDate="true" :showMonth="false" :insert="true" :selected="selected" :lunar="false"
:start-date="'1990-01-01'" :end-date="'2099-01-01'" @change="dateChange">
</my-calender>
</view>
</template>
<script>
export default {
data() {
return {
selected: [{
date: '2022-03-18', // date为所需要打点的日期
type: "abnormal" // abnormal显示为橙色点
}, {
date: '2022-03-19',
type: "normal" // normal显示为蓝色点
}],
}
},
methods: {
/**
* 选中日期的触发事件
*/
dateChange: function(e) {
console.log(e);
},
},
}
</script>
- 需要打点,请配置selected参数
- 需要显示农历,请配置lunar参数为true
- 需要月份水印,请配置showMonth参数为true
- 这里的月份是写死的,固定为:系统当前日期的月份
效果图:
使用方法(二):带月份选择
-
打开uni-calendar.vue
-
修改代码:
-
在引用组件的页面添加monthSwitch事件
<view>
<my-calender :clearDate="true" :showMonth="false" :insert="true" :selected="selected" :lunar="false"
:start-date="'1990-01-01'" :end-date="'2099-01-01'" @monthSwitch="monthSwitch" @change="dateChange">
</my-calender>
</view>
methods: {
/**
* 选中日期的触发事件
*/
dateChange: function(e) {
console.log(e);
},
/**
* 选中月份的触发事件
*/
monthSwitch:function(e){
console.log(e);
}
},
效果图:
使用方法(三):如何自定义样式的数量和类型
-
打开uni-calendar-item.vue
-
看到这个地方:
一些小小的缺憾
- 打点的位置,在某些分辨率上,并没有特别居中
- 圆形背景,在某些分辨率上,并没有特别圆,可能有个平头
posted on 2022-03-17 16:10 northwest 阅读(6390) 评论(0) 编辑 收藏 举报