diff --git a/web/src/app/admin/scheduled-tasks/page.tsx b/web/src/app/admin/scheduled-tasks/page.tsx index 05d6816..b79b667 100644 --- a/web/src/app/admin/scheduled-tasks/page.tsx +++ b/web/src/app/admin/scheduled-tasks/page.tsx @@ -41,15 +41,6 @@ type FormState = { enabled: boolean; }; -const EMPTY_FORM: FormState = { - task_key: "", - name: "", - description: "", - cron_expression: "0 3 * * *", - timezone: "Asia/Shanghai", - retain_days: 30, - enabled: true, -}; const STATUS_FILTER_OPTIONS = [ { label: "全部", value: "all" }, @@ -167,7 +158,15 @@ export default function AdminScheduledTasksPage() { const resetForm = useCallback(() => { setEditingId(null); - formApi.setFieldsValue(EMPTY_FORM); + formApi.setFieldsValue({ + task_key: "", + name: "", + description: "", + cron_expression: "0 3 * * *", + timezone: "Asia/Shanghai", + retain_days: 30, + enabled: true, + }); }, [formApi]); const closeEditor = useCallback(() => { @@ -175,13 +174,6 @@ export default function AdminScheduledTasksPage() { resetForm(); }, [resetForm]); - const startCreate = useCallback(() => { - setError(""); - setSuccess(""); - resetForm(); - setEditorOpen(true); - }, [resetForm]); - const startEdit = useCallback((item: ScheduledTaskSummary) => { setError(""); setSuccess(""); @@ -205,40 +197,13 @@ export default function AdminScheduledTasksPage() { } const values = await formApi.validateFields(); - if (!values.name.trim() || !values.task_key.trim()) { - throw new Error("任务键和任务名称不能为空"); - } - - if (editingId === null) { - const response = await fetchWithAuth("/api/v1/admin/scheduled-tasks", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - task_key: values.task_key.trim(), - name: values.name.trim(), - task_type: "syslog_cleanup", - description: values.description, - cron_expression: values.cron_expression.trim(), - timezone: values.timezone, - retain_days: values.retain_days, - enabled: values.enabled, - }), - }); - if (!response.ok) { - throw new Error(await readApiError(response)); - } - return "created" as const; - } + // 只允许更新 cron_expression 和 enabled 字段 const response = await fetchWithAuth(`/api/v1/admin/scheduled-tasks/${editingId}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - name: values.name.trim(), - description: values.description, cron_expression: values.cron_expression.trim(), - timezone: values.timezone, - retain_days: values.retain_days, enabled: values.enabled, }), }); @@ -247,9 +212,9 @@ export default function AdminScheduledTasksPage() { } return "updated" as const; }, - onSuccess: async (mode) => { + onSuccess: async () => { setError(""); - setSuccess(mode === "created" ? "定时任务已创建" : "定时任务已更新"); + setSuccess("定时任务已更新"); closeEditor(); await refreshList(); }, @@ -511,11 +476,6 @@ export default function AdminScheduledTasksPage() { extra={( {listQuery.isFetching && } - {canManage ? ( - - ) : null} )} > @@ -577,7 +537,7 @@ export default function AdminScheduledTasksPage() { {canManage ? ( - )} > - form={formApi} layout="vertical" initialValues={EMPTY_FORM}> + form={formApi} layout="vertical">
- + - - + +
@@ -616,7 +574,7 @@ export default function AdminScheduledTasksPage() { - @@ -626,7 +584,7 @@ export default function AdminScheduledTasksPage() { label="日志保留天数" rules={[{ required: true, message: "请输入日志保留天数" }]} > - + @@ -634,7 +592,7 @@ export default function AdminScheduledTasksPage() { - +