fix(dma): defer leakage flow validation

This commit is contained in:
2026-07-17 11:45:58 +08:00
parent 202f18332f
commit 4adbcc1c4c
@@ -74,18 +74,31 @@ const AnalysisParameters: React.FC<Props> = ({
advancedOpen, advancedOpen,
} = parametersState; } = parametersState;
const [running, setRunning] = useState(false); const [running, setRunning] = useState(false);
const [qSumInput, setQSumInput] = useState(() => String(qSum));
React.useEffect(() => {
setQSumInput(String(qSum));
}, [qSum]);
const parsedQSum = Number(qSumInput);
const qSumIsValid =
qSumInput.trim() !== "" && Number.isFinite(parsedQSum) && parsedQSum >= 360;
const isValid = useMemo(() => { const isValid = useMemo(() => {
if (!schemeName.trim() || !startTime || !endTime) return false; if (!schemeName.trim() || !startTime || !endTime) return false;
return startTime.isBefore(endTime) && qSum >= 360; return startTime.isBefore(endTime) && qSumIsValid;
}, [schemeName, startTime, endTime, qSum]); }, [schemeName, startTime, endTime, qSumIsValid]);
const handleRun = async () => { const handleRun = async () => {
if (!isValid || !startTime || !endTime) { if (!isValid || !startTime || !endTime) {
open?.({ type: "error", message: "请完善参数并确认时间范围合法" }); open?.({
type: "error",
message: "请完善参数并确认时间范围合法",
description: !qSumIsValid ? `总漏损流量需不小于 360 ${FLOW_DISPLAY_UNIT}` : undefined,
});
return; return;
} }
setFormField("qSum", parsedQSum);
setRunning(true); setRunning(true);
open?.({ open?.({
key: "dma-leak-analysis-progress", key: "dma-leak-analysis-progress",
@@ -213,12 +226,22 @@ const AnalysisParameters: React.FC<Props> = ({
<TextField <TextField
type="number" type="number"
size="small" size="small"
value={qSum} value={qSumInput}
onChange={(e) => { onChange={(e) => {
const value = Number(e.target.value); const rawValue = e.target.value;
setFormField("qSum", Number.isNaN(value) ? 1440 : Math.max(360, value)); setQSumInput(rawValue);
const value = Number(rawValue);
if (rawValue.trim() !== "" && Number.isFinite(value)) {
setFormField("qSum", value);
}
}} }}
inputProps={{ min: 360, step: 10 }} inputProps={{ min: 360, step: 10 }}
error={qSumInput.trim() !== "" && !qSumIsValid}
helperText={
qSumInput.trim() !== "" && !qSumIsValid
? `需不小于 360 ${FLOW_DISPLAY_UNIT}`
: " "
}
/> />
<Box <Box
sx={{ sx={{