From bbc62226c028f2c886daa9c7343b2d06e1f86335 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期四, 26 二月 2026 14:36:37 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/page/guarantee/CronField.jsx | 77 ++++++++++++++++++--------------------
1 files changed, 36 insertions(+), 41 deletions(-)
diff --git a/zy-acs-flow/src/page/guarantee/CronField.jsx b/zy-acs-flow/src/page/guarantee/CronField.jsx
index 2ef55d3..8140921 100644
--- a/zy-acs-flow/src/page/guarantee/CronField.jsx
+++ b/zy-acs-flow/src/page/guarantee/CronField.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useMemo, useState } from 'react';
+import React, { useMemo } from 'react';
import { useInput, useTranslate } from 'react-admin';
import {
Box,
@@ -33,73 +33,68 @@
? { source, ...rest }
: { source, defaultValue: DEFAULT_CRON_EXPRESSION, ...rest };
const { field } = useInput(inputConfig);
- const [state, setState] = useState(() =>
- parseCronExpression(field.value || DEFAULT_CRON_EXPRESSION)
- );
- const [ready, setReady] = useState(!waitForValue);
const hasFieldValue = typeof field.value === 'string' && field.value.length > 0;
-
- useEffect(() => {
+ const parsedState = useMemo(() => {
if (!hasFieldValue) {
- if (!waitForValue) {
- setReady(true);
- }
- return;
+ return waitForValue ? null : parseCronExpression(DEFAULT_CRON_EXPRESSION);
}
- const parsed = parseCronExpression(field.value);
- setState(parsed);
- setReady(true);
- }, [hasFieldValue, field.value, waitForValue]);
+ return parseCronExpression(field.value);
+ }, [field.value, hasFieldValue, waitForValue]);
- useEffect(() => {
- if (!state) {
- return;
- }
- const cron = buildCronExpression(state);
- if (cron !== field.value) {
- field.onChange(cron);
- }
- }, [state, field]);
+ const state = parsedState || DEFAULT_SCHEDULE_STATE;
+
+ const handleUpdate = (nextState) => {
+ const cron = buildCronExpression(nextState);
+ field.onChange(cron);
+ };
const handleModeChange = (event) => {
const mode = event.target.value;
- setState((prev) => ({
- ...prev,
+ handleUpdate({
+ ...state,
mode,
- weekDays: mode === SCHEDULE_MODES.WEEKLY ? prev.weekDays || DEFAULT_SCHEDULE_STATE.weekDays : prev.weekDays,
- monthDays: mode === SCHEDULE_MODES.MONTHLY ? prev.monthDays || DEFAULT_SCHEDULE_STATE.monthDays : prev.monthDays,
- }));
+ weekDays:
+ mode === SCHEDULE_MODES.WEEKLY
+ ? state.weekDays || DEFAULT_SCHEDULE_STATE.weekDays
+ : state.weekDays,
+ monthDays:
+ mode === SCHEDULE_MODES.MONTHLY
+ ? state.monthDays || DEFAULT_SCHEDULE_STATE.monthDays
+ : state.monthDays,
+ });
};
const handleTimeChange = (event) => {
- const newTime = event.target.value;
- setState((prev) => ({ ...prev, time: newTime }));
+ handleUpdate({
+ ...state,
+ time: event.target.value,
+ });
};
const handleWeekDaysChange = (_, newDays) => {
if (!newDays.length) {
return;
}
- setState((prev) => ({ ...prev, weekDays: newDays }));
+ handleUpdate({
+ ...state,
+ weekDays: newDays,
+ });
};
const handleMonthDaysChange = (_, newDays) => {
- if (!newDays.length) {
- newDays = DEFAULT_SCHEDULE_STATE.monthDays;
- }
- setState((prev) => ({ ...prev, monthDays: newDays }));
+ handleUpdate({
+ ...state,
+ monthDays: (newDays.length ? newDays : DEFAULT_SCHEDULE_STATE.monthDays),
+ });
};
- const cronExpression = useMemo(
- () => (state ? buildCronExpression(state) : DEFAULT_CRON_EXPRESSION),
- [state]
- );
+ const cronExpression = useMemo(() => buildCronExpression(state), [state]);
const description = useMemo(
() => describeCronExpression(cronExpression, translate),
[cronExpression, translate]
);
- if (!ready || !state) {
+ if (waitForValue && !hasFieldValue) {
return <Skeleton variant="rectangular" height={180} sx={{ borderRadius: 1 }} />;
}
--
Gitblit v1.9.1