Skip to content

CronPicker 定时任务选择器

用于生成和编辑 cron 表达式的组件。

何时使用

当用户需要配置定时任务、计划任务或周期调度时使用。

基础用法

点击输入框弹出选择面板。支持预设快速配置,或切换「自定义」滚动选择数值。按住 Ctrl 点击可多选,自动生成逗号列表。输入框下方自动显示最近几次执行时间。

vue

<TCronPicker v-model="cron" />

三种方言

通过 format 属性选择 cron 方言:

方言字段说明
linux5 字段:分 时 日 月 周标准 Linux crontab(默认)
webman5/6 字段:[秒] 分 时 日 月 周Workerman/Webman 格式,秒为 * 时自动降级
quartz7 字段:秒 分 时 日 月 周 年Java Quartz 格式,支持 ? 互斥
vue

<TCronPicker format="webman" />

Quartz 模式

Java Quartz 格式,7 字段:秒 分 时 日 月 周 年。日和周互斥,系统自动接管 ? 设置。

vue

<TCronPicker format="quartz" />

操作符支持

每个字段均支持以下操作符,可从面板的滚动列表中直接点击选择:

操作符含义示例
*任意值* 每分钟
,列表1,3,5 每月 1/3/5 日(Ctrl+点击多选)
-范围9-17 9 点到 17 点
/步长*/5 每 5 分钟
?不指定(仅 Quartz)?

预设

预设Linux 表达式说明
每分钟* * * * *每分钟执行一次
每小时0 * * * *每小时整点执行
每天0 0 * * *每天午夜执行
每周0 0 * * 0每周日午夜执行
每月0 0 1 * *每月 1 日午夜执行
每年0 0 1 1 *每年 1 月 1 日午夜执行

下次执行时间

面板关闭后,输入框右侧的时钟图标鼠标移入即可预览未来 5 次执行时间。

vue

<TCronPicker />

国际化

通过 locale 属性自定义界面文案。所有字段均为可选,未提供的字段自动使用中文默认值。

完整可配置项参见 CronLocaleMessages 类型(可从 @gulcc/tabler-vue 导入):

vue

<TCronPicker
  format="quartz"
  :locale="{
    presetLabels: { everyMinute: 'Every Min', hourly: 'Hourly', daily: 'Daily', weekly: 'Weekly', monthly: 'Monthly', yearly: 'Yearly', custom: 'Custom' },
    fieldLabels: { second: 'Sec', minute: 'Min', hour: 'Hour', day: 'Day', month: 'Mon', week: 'Dow', year: 'Year' },
    confirm: 'OK',
    invalid: 'Invalid cron expression',
    nextRun: 'Next runs',
    everyPrefix: 'Every ',
    notSpecified: 'Not set (?)',
    multiSelectTitle: 'Multi-select',
    multiSelectHint: 'Hold Ctrl or Cmd to select multiple values',
    weekOptions: [
      { label: 'Every week', value: '*' },
      { label: 'Sun', value: '0' }, { label: 'Mon', value: '1' },
      { label: 'Tue', value: '2' }, { label: 'Wed', value: '3' },
      { label: 'Thu', value: '4' }, { label: 'Fri', value: '5' }, { label: 'Sat', value: '6' },
    ],
    weekOptionsQuartz: [
      { label: 'Every week', value: '*' }, { label: 'Not set (?)', value: '?' },
      { label: 'Sun', value: '1' }, { label: 'Mon', value: '2' },
      { label: 'Tue', value: '3' }, { label: 'Wed', value: '4' },
      { label: 'Thu', value: '5' }, { label: 'Fri', value: '6' }, { label: 'Sat', value: '7' },
    ],
    weekOptionsWebman: [
      { label: 'Every week', value: '*' },
      { label: 'Sun', value: '0' }, { label: 'Mon', value: '1' },
      { label: 'Tue', value: '2' }, { label: 'Wed', value: '3' },
      { label: 'Thu', value: '4' }, { label: 'Fri', value: '5' }, { label: 'Sat', value: '6' },
    ],
  }"
/>

直接输入

高级用户可直接在输入框中输入或粘贴 cron 表达式,失去焦点或按回车时自动校验并同步到面板。

API

TCronPicker 属性 (Props)

属性名说明类型默认值
model-valuecron 表达式(v-model)string'* * * * *'
format方言:linux / webman / quartzstring'linux'
disabled禁用booleanfalse
locale自定义界面文案Partial<CronLocaleMessages>{}

TCronPicker 事件 (Emits)

事件名说明回调参数
update:model-value表达式变化时触发(value: string) => void
change用户确认选择时触发(value: string) => void