更新记录
1.0.0(2025-12-07) 下载此版本
appx-calendar 是一款基于 uts 开发的多模式日历选择组件,支持单日期选择和日期范围选择,可自定义禁用日期、禁用周末、日期区间限制等功能,适配多端渲染,样式可通过自定义属性灵活调整。
平台兼容性
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
appx-calendar 日历组件帮助文档
一、组件介绍
appx-calendar 是一款基于 uts 开发的多模式日历选择组件,支持单日期选择和日期范围选择,可自定义禁用日期、禁用周末、日期区间限制等功能,适配多端渲染,样式可通过自定义属性灵活调整。
二、使用方式
1. 基础引入
<template>
<appx-calendar
mode="single"
:value="selectedDate"
@confirm="handleConfirm"
/>
</template>
<script lang="uts" setup>
import appxCalendar from '@/components/appx-calendar/appx-calendar.vue';
const selectedDate = ref('2025-12-07');
const handleConfirm = (value) => {
console.log('选中的日期:', value);
};
</script>
2. 范围选择示例
<appx-calendar
mode="range"
:value="['2025-12-01', '2025-12-10']"
:minDate="2025-12-01"
:maxDate="2025-12-31"
:disableWeekend="true"
@change="handleRangeChange"
/>
三、Props 配置项
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| mode | 'single' \| 'range' |
'single' |
选择模式:single(单日期)、range(日期范围) |
| value | string \| [string, string] |
'' |
绑定值:单模式为 YYYY-MM-DD 格式字符串,范围模式为 [开始日期, 结束日期] 数组 |
| minDate | string |
'' |
最小可选日期,格式 YYYY-MM-DD |
| maxDate | string |
'' |
最大可选日期,格式 YYYY-MM-DD |
| activeColor | string |
#3c9cff |
选中日期的高亮颜色(支持十六进制、rgb 等格式) |
| disableWeekend | boolean |
false |
是否禁用周六、周日 |
| disabledDates | string[] |
[] |
自定义禁用日期列表,元素为 YYYY-MM-DD 格式字符串 |
| showFooter | boolean |
true |
是否显示底部确认按钮栏 |
四、事件说明
| 事件名 | 触发时机 | 回调参数 | 说明 |
|---|---|---|---|
| change | 日期选中状态变化时 | string \| [string, string] |
单模式返回选中日期字符串,范围模式返回日期数组 |
| confirm | 点击底部“确认”按钮时 | string \| [string, string] |
返回最终选中的日期/日期范围 |
| cancel | 点击底部“取消”按钮时 | - | 取消选择,恢复初始选中状态 |
五、插槽说明
| 插槽名 | 作用域参数 | 说明 |
|---|---|---|
| date-format | year: number, month: number, day: number |
自定义日期显示格式,默认显示数字日期(如“7”),可通过插槽修改为自定义样式(如添加农历、标记等) |
插槽使用示例
<appx-calendar>
<template #date-format="{ year, month, day }">
<!-- 自定义显示:添加日期后缀 -->
<text>{{ day }}日</text>
</template>
</appx-calendar>
六、样式自定义
组件通过 CSS 变量 --active-color 控制选中态颜色,也可通过 scoped 样式穿透修改默认样式:
/* 修改日历容器边框 */
:deep(.appx-calendar-container) {
border: 1px solid #ddd;
border-radius: 8px;
}
/* 修改禁用日期颜色 */
:deep(.appx-calendar-disabled) {
color: #eee;
}
七、注意事项
- 日期格式必须为
YYYY-MM-DD,非法格式(如2025-13-01、2025-02-30)会被判定为禁用日期; - 范围选择时,若先选结束日期、后选开始日期,组件会自动交换顺序,保证开始日期 ≤ 结束日期;
- disabledDates 数组中的日期需严格匹配
YYYY-MM-DD格式,否则不会生效; - 切换年月时,组件会自动同步 picker 选择器的值,无需手动维护。
八、常见问题
Q1:选中日期后不触发 change 事件?
A1:单模式下点击日期会立即触发 change 事件;范围模式下需选完开始和结束日期后才触发,若仅选开始日期不会触发。
Q2:禁用周末不生效?
A2:检查 disableWeekend 是否设置为 true,同时确认日期未被 minDate/maxDate/disabledDates 额外限制。
Q3:范围选择的中间日期背景色不显示?
A3:需确保已选完整的开始和结束日期,且中间日期未被禁用,背景色由 --active-color 的透明色控制(默认 rgba(60, 156, 255, 0.1))。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 5
赞赏 0
下载 11846710
赞赏 1818
赞赏
京公网安备:11010802035340号