diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs
new file mode 100644
index 0000000..f8d7973
--- /dev/null
+++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs
@@ -0,0 +1,46 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Vistar.Application.Entity;
+
+///
+/// 定时任务日志表
+///
+[SugarTable(null, "定时任务日志表")]
+[SysTable]
+[LogTable]
+public class ScheduledTaskLog
+{
+ public long Id { get; set; }
+
+ ///
+ /// 日志时间
+ ///
+ public DateTime LogDateTime { get; set; }
+
+ ///
+ /// 任务名称
+ ///
+ public string? TaskName { get; set; }
+
+ ///
+ /// 返回结果
+ ///
+ public string? ReturnResult { get; set; }
+
+ ///
+ /// 操作用时(毫秒)
+ ///
+ public long Elapsed { get; set; }
+}
diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs
new file mode 100644
index 0000000..1e10b6c
--- /dev/null
+++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs
@@ -0,0 +1,28 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+using Admin.NET.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Vistar.Application.Service.Log.Dto;
+public class PageTaskLogInput : BasePageInput
+{
+ ///
+ /// 开始时间
+ ///
+ public DateTime? StartTime { get; set; }
+
+ ///
+ /// 结束时间
+ ///
+ public DateTime? EndTime { get; set; }
+
+ public string TaskName { get; set; }
+}
diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs
new file mode 100644
index 0000000..f0af710
--- /dev/null
+++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs
@@ -0,0 +1,63 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+using Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Vistar.Application.Entity;
+using Vistar.Application.Service.Log.Dto;
+
+namespace Vistar.Application.Service.Log;
+
+///
+/// 定时任务日志服务 🧩
+///
+[ApiDescriptionSettings(Order = 360, Description = "定时任务日志服务")]
+public class ScheduledTaskLogService : IDynamicApiController, ITransient
+{
+ private readonly SqlSugarRepository _scheduledTaskLogRep;
+
+ public ScheduledTaskLogService(SqlSugarRepository scheduledTaskLogRep)
+ {
+ _scheduledTaskLogRep = scheduledTaskLogRep;
+ }
+
+ ///
+ /// 获取操作日志分页列表 🔖
+ ///
+ ///
+ [SuppressMonitor]
+ [DisplayName("获取操作日志分页列表")]
+ public async Task> Page(PageTaskLogInput input)
+ {
+ return await _scheduledTaskLogRep.AsQueryable()
+ .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.LogDateTime >= input.StartTime)
+ .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.LogDateTime <= input.EndTime)
+ .WhereIF(!string.IsNullOrWhiteSpace(input.TaskName), u => u.TaskName == input.TaskName)
+ .ToPagedListAsync(input.Page, input.PageSize);
+ }
+
+ ///
+ /// 获取日志详情 🔖
+ ///
+ ///
+ [SuppressMonitor]
+ [DisplayName("获取日志详情")]
+ public async Task GetDetail(long id)
+ {
+ var data= await _scheduledTaskLogRep.AsQueryable().Where(x => x.Id == id).FirstAsync();
+
+ return data.ReturnResult;
+ }
+
+}
diff --git a/admin.net.pro/Web/src/api/log/scheduledTaskLog.ts b/admin.net.pro/Web/src/api/log/scheduledTaskLog.ts
new file mode 100644
index 0000000..1b2ee11
--- /dev/null
+++ b/admin.net.pro/Web/src/api/log/scheduledTaskLog.ts
@@ -0,0 +1,18 @@
+import request from '/@/utils/request';
+enum Api {
+ PageScheduledTaskLog = '/api/scheduledTaskLog/page',
+ Detail = '/api/scheduledTaskLog/detail',
+}
+
+export const PageScheduledTaskLog = (params?: any) =>
+ request({
+ url: Api.PageScheduledTaskLog,
+ method: 'post',
+ data: params,
+ });
+ export const Detail = (id?: any) =>
+ request({
+ url: Api.Detail+"/"+id,
+ method: 'Get',
+ data: id,
+ });
diff --git a/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue b/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue
new file mode 100644
index 0000000..e1ba12a
--- /dev/null
+++ b/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+ 日志详情
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 日志详情
+
+
+
+
+
+
+
+
\ No newline at end of file