feat: 优化触发器配置体验
- 根据触发器类型动态展示对应配置区域,减少无关字段干扰。 - 将单次、每日、每周、每月和生效时间范围改为日期选择器与时分秒下拉选择,避免手动输入时间格式。 - 为单次执行增加延后执行快捷设置,支持常用快捷按钮和自定义分钟、小时、天后执行。 - 移除开机自启设置、注册表写入逻辑和相关配置字段,降低对用户系统的影响。 - 同步优化部分任务状态、触发摘要和设置界面文案。
This commit is contained in:
@@ -46,7 +46,6 @@ public sealed class AppSettings : NotifyObject
|
||||
private string _omniNotifyUrl = "http://127.0.0.1:19845/notify";
|
||||
private int _logRetentionDays = 30;
|
||||
private int _maxLogRecords = 10000;
|
||||
private bool _startWithWindows;
|
||||
|
||||
public string OmniNotifyUrl
|
||||
{
|
||||
@@ -66,11 +65,6 @@ public sealed class AppSettings : NotifyObject
|
||||
set => SetField(ref _maxLogRecords, Math.Max(100, value));
|
||||
}
|
||||
|
||||
public bool StartWithWindows
|
||||
{
|
||||
get => _startWithWindows;
|
||||
set => SetField(ref _startWithWindows, value);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ScheduledTask : NotifyObject
|
||||
@@ -83,7 +77,7 @@ public sealed class ScheduledTask : NotifyObject
|
||||
private string _body = "";
|
||||
private DateTime? _lastRunAt;
|
||||
private DateTime? _nextRunAt;
|
||||
private string _lastStatus = "Idle";
|
||||
private string _lastStatus = "待命";
|
||||
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
|
||||
@@ -200,8 +194,8 @@ public sealed class TaskTrigger : NotifyObject
|
||||
TriggerKind.OneTime => $"单次 {OneTimeAt:yyyy-MM-dd HH:mm:ss}",
|
||||
TriggerKind.Interval => $"每 {IntervalValue} {IntervalUnitText}",
|
||||
TriggerKind.Daily => $"每日 {TimeOfDay:hh\\:mm\\:ss}",
|
||||
TriggerKind.Weekly => $"每周 {WeekDays} {TimeOfDay:hh\\:mm\\:ss}",
|
||||
TriggerKind.Monthly => LastBusinessDay ? $"每月最后工作日 {TimeOfDay:hh\\:mm\\:ss}" : $"每月 {MonthDay} 日 {TimeOfDay:hh\\:mm\\:ss}",
|
||||
TriggerKind.Weekly => $"每周 {WeekDaysText} {TimeOfDay:hh\\:mm\\:ss}",
|
||||
TriggerKind.Monthly => LastBusinessDay ? $"每月最后一个工作日 {TimeOfDay:hh\\:mm\\:ss}" : $"每月 {MonthDay} 日 {TimeOfDay:hh\\:mm\\:ss}",
|
||||
TriggerKind.Cron => $"Cron {CronExpression}",
|
||||
_ => Kind.ToString()
|
||||
};
|
||||
@@ -216,6 +210,23 @@ public sealed class TaskTrigger : NotifyObject
|
||||
_ => IntervalUnit.ToString()
|
||||
};
|
||||
|
||||
[JsonIgnore]
|
||||
public string WeekDaysText
|
||||
{
|
||||
get
|
||||
{
|
||||
var days = new List<string>();
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Sunday)) days.Add("日");
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Monday)) days.Add("一");
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Tuesday)) days.Add("二");
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Wednesday)) days.Add("三");
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Thursday)) days.Add("四");
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Friday)) days.Add("五");
|
||||
if (WeekDays.HasFlag(DayOfWeekFlags.Saturday)) days.Add("六");
|
||||
return days.Count == 0 ? "未选择" : string.Join(",", days);
|
||||
}
|
||||
}
|
||||
|
||||
public TaskTrigger Clone() => new()
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
|
||||
Reference in New Issue
Block a user