这是一个基于 Vue 3 和 Element Plus 的高级 Cron 表达式生成与解析组件。它提供了一个直观的用户界面,帮助用户轻松创建复杂的 Cron 调度规则,同时也支持解析已有的 Cron 表达式并回显到 UI 界面上。
- 多种调度类型:支持"周期性"、"一次性"和"自定义"三种模式。
- 丰富的配置选项:
- 简单重复:按分钟、小时、天、周进行重复执行。
- 周期性执行:可精确到按天或按周,并指定特定月份。
- 一次性执行:选择一个精确的未来时间点执行。
- 自定义:直接输入或使用预置模板。
- 双向数据绑定:通过
v-model:scheduleConfig与父组件通信,数据流清晰。 - 智能回显:能解析传入的配置对象,自动更新 UI 至对应状态。
- Vue 3
- Element Plus
-
引入组件: 在您的父组件中,引入
CronGenerator.vue。<script setup> import { ref } from 'vue'; import CronGenerator from './components/CronGenerator.vue'; const scheduleConfig = ref({ scheduleType: 'periodic', cron: '0 0 * * * ?' }); </script>
-
在模板中使用: 使用
v-model:schedule-config将组件与您的数据进行绑定。<template> <cron-generator v-model:schedule-config="scheduleConfig" /> </template>
组件通过 v-model:scheduleConfig 与父组件进行数据交互。这个 scheduleConfig 是一个对象,其结构如下:
{
scheduleType: String, // 调度类型
cron: String // Cron 表达式
}-
scheduleType(必填): 用于告知组件当前应该展示哪种调度界面。'periodic': 周期性'onetime': 一次性'custom': 自定义
-
cron(必填): 标准的 Cron 表达式字符串。
要实现 Cron 表达式的回显功能,您只需要向组件传递一个符合上述结构的 scheduleConfig 对象即可。组件内部会监听这个对象的变化,并自动完成 UI 的更新。
父组件数据:
const scheduleConfig = ref({
scheduleType: 'periodic',
cron: '0 15 10 ? 6 1,2' // 每月6月的周一和周二,上午10点15分执行
});组件会自动切换到"周期性" -> "周期性执行",并填充好对应的"执行日"、"执行月"和"执行时间"。
父组件数据:
const scheduleConfig = ref({
scheduleType: 'onetime',
cron: '0 30 8 1 1 ? 2025' // 2025年1月1日,早上8点30分执行
});组件会自动切换到"一次性"模式,并填充好日期时间选择器。
父组件数据:
const scheduleConfig = ref({
scheduleType: 'custom',
cron: '0 0 12 LW * ?' // 每月最后一个工作日中午12点执行
});组件会自动切换到"自定义"模式,并在输入框中填入该表达式。
当用户在组件 UI 上进行操作时,组件会实时地通过 update:scheduleConfig 事件向父组件同步最新的配置对象。返回的数据结构与传入的参数结构完全一致。您可以监听这个数据变化,并将其提交到后端或用于其他业务逻辑。