diff --git a/src/blazor/admin/BootstrapAdmin.Web/BootstrapAdmin.Web.csproj b/src/blazor/admin/BootstrapAdmin.Web/BootstrapAdmin.Web.csproj
index cbb79777..95dedd37 100644
--- a/src/blazor/admin/BootstrapAdmin.Web/BootstrapAdmin.Web.csproj
+++ b/src/blazor/admin/BootstrapAdmin.Web/BootstrapAdmin.Web.csproj
@@ -3,6 +3,10 @@
true
+
+
+
+
diff --git a/src/blazor/admin/BootstrapAdmin.Web/Extensions/TasksExtensions.cs b/src/blazor/admin/BootstrapAdmin.Web/Extensions/TasksExtensions.cs
new file mode 100644
index 00000000..58cbbdc7
--- /dev/null
+++ b/src/blazor/admin/BootstrapAdmin.Web/Extensions/TasksExtensions.cs
@@ -0,0 +1,19 @@
+using BootstrapAdmin.Web.Models;
+using Longbow.Tasks;
+
+namespace BootstrapAdmin.Web.Extensions;
+
+public static class TasksExtensions
+{
+ public static List ToTasksModelList(this IEnumerable schedulers) => schedulers.Select(i => new TasksModel
+ {
+ Name = i.Name,
+ CreateTime = i.CreatedTime,
+ LastRuntime = i.LastRuntime,
+ NextRuntime = i.NextRuntime,
+ LastRunResult = i.LastRunResult,
+ Status = i.Status,
+ Trigger = i.Triggers.First().ToString()
+
+ }).ToList();
+}
diff --git a/src/blazor/admin/BootstrapAdmin.Web/Models/TasksModel.cs b/src/blazor/admin/BootstrapAdmin.Web/Models/TasksModel.cs
new file mode 100644
index 00000000..46491eaa
--- /dev/null
+++ b/src/blazor/admin/BootstrapAdmin.Web/Models/TasksModel.cs
@@ -0,0 +1,32 @@
+using Longbow.Tasks;
+using System.ComponentModel.DataAnnotations;
+
+namespace BootstrapAdmin.Web.Models;
+
+public class TasksModel
+{
+ [Display(Name = "任务名称")]
+ [NotNull]
+ public string? Name { get; set; }
+
+ [Display(Name = "创建时间")]
+ public DateTimeOffset CreateTime { get; set; }
+
+ [Display(Name = "上次运行时间")]
+ public DateTimeOffset? LastRuntime { get; set; }
+
+ [Display(Name = "下次运行时间")]
+ public DateTimeOffset? NextRuntime { get; set; }
+
+ [Display(Name = "触发条件")]
+ [NotNull]
+ public string? Trigger { get; set; }
+
+ [Display(Name = "执行结果")]
+ [NotNull]
+ public TriggerResult LastRunResult { get; set; }
+
+ [Display(Name = "任务状态")]
+ [NotNull]
+ public SchedulerStatus Status { get; set; }
+}
diff --git a/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor b/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor
index 1f73c78c..91555c0d 100644
--- a/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor
+++ b/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor
@@ -1,6 +1,6 @@
@page "/Admin/Tasks"
-
+
后台任务说明:
@@ -27,3 +27,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor.cs b/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor.cs
index f2819ac6..1927da88 100644
--- a/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor.cs
+++ b/src/blazor/admin/BootstrapAdmin.Web/Pages/Admin/Tasks.razor.cs
@@ -1,6 +1,33 @@
-namespace BootstrapAdmin.Web.Pages.Admin;
+using BootstrapAdmin.DataAccess.Models;
+using BootstrapAdmin.Web.Extensions;
+using BootstrapAdmin.Web.Models;
+using Longbow.Tasks;
+
+namespace BootstrapAdmin.Web.Pages.Admin;
public partial class Tasks
{
+ private Task> OnQueryAsync(QueryPageOptions options)
+ {
+ var tasks = TaskServicesManager.ToList().ToTasksModelList();
+ return Task.FromResult(new QueryData()
+ {
+ Items = tasks
+ });
+ }
+ private Task OnPause(TasksModel model)
+ {
+ return Task.CompletedTask;
+ }
+
+ private Task OnRun(TasksModel model)
+ {
+ return Task.CompletedTask;
+ }
+
+ private Task OnLog(TasksModel model)
+ {
+ return Task.CompletedTask;
+ }
}