diff --git a/src/blazor/admin/BootstrapAdmin.Web/Components/TaskEditor.razor b/src/blazor/admin/BootstrapAdmin.Web/Components/TaskEditor.razor
new file mode 100644
index 00000000..3ff1a8b4
--- /dev/null
+++ b/src/blazor/admin/BootstrapAdmin.Web/Components/TaskEditor.razor
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/src/blazor/admin/BootstrapAdmin.Web/Components/TaskEditor.razor.cs b/src/blazor/admin/BootstrapAdmin.Web/Components/TaskEditor.razor.cs
new file mode 100644
index 00000000..828b8d80
--- /dev/null
+++ b/src/blazor/admin/BootstrapAdmin.Web/Components/TaskEditor.razor.cs
@@ -0,0 +1,35 @@
+using BootstrapAdmin.Web.Models;
+
+namespace BootstrapAdmin.Web.Components;
+
+public partial class TaskEditor
+{
+ [Parameter]
+ [NotNull]
+ public TasksModel? Value { get; set; }
+
+ [Parameter]
+ public EventCallback ValueChanged { get; set; }
+
+ private static string TaskName => "测试任务";
+
+ [NotNull]
+ private List? Items { get; set; }
+
+ protected override void OnInitialized()
+ {
+ base.OnInitialized();
+
+ Items = new List
+ {
+ new(Longbow.Tasks.Cron.Secondly(5), "每 5 秒钟执行一次"),
+ new(Longbow.Tasks.Cron.Minutely(1), "每 1 分钟钟执行一次"),
+ new(Longbow.Tasks.Cron.Minutely(5), "每 5 分钟执行一次"),
+ };
+
+ if (string.IsNullOrEmpty(Value.Trigger))
+ {
+ Value.Trigger = Items.First().Value;
+ }
+ }
+}