更新记录

1.0.0(2026-05-13) 下载此版本

  • 初始发布
  • 支持 daily / monthly / once 三种调度模式
  • 时分选择使用浮动滚轮卡片(picker-view)
  • daily 模式支持周几多选,至少保留一天
  • 支持 v-model 双向绑定与编辑回填
  • 新增 icon-class prop,支持自定义图标
  • 支持通过 provide/inject 向父级注册关闭函数

平台兼容性

uni-app(4.08)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟

uni-app x(4.42)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

CronTimePicker 定时任务时间选择器

支持每天 / 每月 / 单次三种模式的时间选择组件,自动输出标准 Cron 表达式或日期时间字符串,适用于定时任务、自动化提醒等配置场景。

功能特性

  • 三种调度模式:每天(指定时间 + 周几多选)、每月(指定日期 + 时间)、单次(指定完整日期时间)
  • 时分选择使用浮动滚轮卡片,点击时间按钮弹出,点击外部自动关闭
  • 每天模式支持周几多选,至少保留一天
  • 支持 v-model 双向绑定,值变化时自动 emit
  • 支持编辑回填(传入已有 cron 值自动还原界面状态)
  • 支持自定义图标 class(兼容各类 iconfont)
  • 支持父级注入关闭函数,实现点击页面空白处关闭浮层

依赖

  • uni-datetime-picker(DCloud 官方组件,monthly / once 模式需要)

    在 HBuilderX 中通过「插件市场」安装 uni-datetime-picker,或在项目根目录执行:

    # 通过 uni_modules 安装
    # HBuilderX → 工具 → 插件市场 → 搜索 uni-datetime-picker → 安装到项目

安装

在 HBuilderX 插件市场找到本插件,点击「导入插件」,选择目标项目即可。

安装后组件通过 easycom 自动注册,无需手动 import。

基础用法

<template>
  <cron-time-picker v-model="cronValue" mode="daily" />
  <text>当前值:{{ cronValue }}</text>
</template>

<script setup>
import { ref } from 'vue';
const cronValue = ref('');
</script>

三种模式示例

<template>
  <!-- 每天模式:输出 "分 时 * * 周几,周几" -->
  <cron-time-picker v-model="daily" mode="daily" />

  <!-- 每月模式:输出 "分 时 日 * *" -->
  <cron-time-picker v-model="monthly" mode="monthly" />

  <!-- 单次模式:输出 "YYYY-MM-DD HH:mm:00" -->
  <cron-time-picker v-model="once" mode="once" />
</template>

<script setup>
import { ref } from 'vue';
const daily   = ref('');
const monthly = ref('');
const once    = ref('');
</script>

编辑回填

直接给 v-model 传入已有值,组件会自动解析并还原界面状态:

<!-- 每天模式回填:周一三五 09:30 -->
<cron-time-picker v-model="cronValue" mode="daily" />

<script setup>
import { ref } from 'vue';
// 组件挂载后自动解析,显示 09:30,周一三五选中
const cronValue = ref('30 9 * * 1,3,5');
</script>

monthly 模式回填时,cron 第3字段只有「日」,需要配合 initial-date 提供年月信息:

<cron-time-picker
  v-model="cronValue"
  mode="monthly"
  initial-date="2026-05-01"
/>

自定义图标

默认显示 字符作为图标。如果项目中有 iconfont,可通过 icon-class 传入类名:

<cron-time-picker v-model="cronValue" mode="daily" icon-class="iconfont icon-clock" />

父级关闭集成(可选)

点击页面空白处关闭时间滚轮浮层,需要在父组件中配合 provide 使用:

<template>
  <!-- 点击页面任意空白处关闭浮层 -->
  <view @tap="closeAllPickers">
    <cron-time-picker v-model="cronValue" mode="daily" />
  </view>
</template>

<script setup>
import { ref, provide } from 'vue';

const cronValue = ref('');

// 存储子组件注册的关闭函数
let _closeFn = null;

provide('registerCloseTimePicker', (fn) => {
  _closeFn = fn;
});

const closeAllPickers = () => {
  _closeFn?.();
};
</script>

Props

属性 类型 默认值 说明
model-value String '' 绑定值(v-model),cron 表达式或日期时间字符串
mode String 'daily' 模式:daily(每天)/ monthly(每月)/ once(单次)
initial-date String '' 编辑回填参考日期(YYYY-MM-DD),monthly 模式下用于还原完整日期
icon-class String '' 时间按钮图标的 class,不传则显示默认 ⏱ 字符

Events

事件名 参数类型 说明
update:modelValue String 用户操作后触发,返回最新的 cron 字符串

输出格式说明

模式 输出格式 示例
daily 分 时 * * 周几[,周几...] 30 9 * * 1,3,5
monthly 分 时 日 * * 0 8 15 * *
once YYYY-MM-DD HH:mm:00 2026-05-20 09:30:00

daily 模式中周几使用数字:0 = 周日,1 = 周一,…,6 = 周六(标准 cron 规范)。

平台兼容性

Vue3 App-Vue H5 微信小程序 其他小程序
待测试

nvue 不支持 picker-view,暂不兼容。

Changelog

1.0.0

  • 初始发布
  • 支持 daily / monthly / once 三种模式
  • 支持 v-model 双向绑定与编辑回填
  • 支持父级注入关闭函数

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。