fix(analysis): 统一方案名与接口错误提示
Generic Container CI/CD / test-build-publish (push) Successful in 1m2s
Frontend CI/CD v2 / build-test-publish-and-deploy (push) Successful in 1m2s

This commit is contained in:
2026-08-17 18:54:29 +08:00
parent 9e79d52dc8
commit 45def5bba3
12 changed files with 720 additions and 55 deletions
@@ -30,6 +30,14 @@ import {
} from "@/utils/mapQueryService";
import { useControllableObjectState } from "@components/olmap/core/useControllableState";
import { useSessionRecoveryDraft } from "@/lib/sessionRecoveryDraft";
import { getApiErrorMessage } from "@/lib/apiError";
import {
createSchemeName,
isSchemeNameValid,
normalizeSchemeName,
SCHEME_NAME_MAX_LENGTH,
SCHEME_NAME_PREFIXES,
} from "@utils/schemeName";
export interface ContaminantAnalysisParametersState {
schemeName: string;
@@ -42,7 +50,7 @@ export interface ContaminantAnalysisParametersState {
export const createContaminantAnalysisParametersState =
(): ContaminantAnalysisParametersState => ({
schemeName: "WQ_" + new Date().getTime(),
schemeName: createSchemeName(SCHEME_NAME_PREFIXES.contaminantAnalysis),
startTime: dayjs(new Date()),
sourceNode: "",
concentration: 100,
@@ -98,7 +106,7 @@ const AnalysisParameters: React.FC<AnalysisParametersProps> = ({
Boolean(sourceNode) &&
concentration > 0 &&
duration > 0 &&
schemeName.trim() !== ""
isSchemeNameValid(schemeName)
);
}, [network, startTime, sourceNode, concentration, duration, schemeName]);
@@ -240,7 +248,7 @@ const AnalysisParameters: React.FC<AnalysisParametersProps> = ({
concentration,
duration,
pattern: pattern || undefined,
scheme_name: schemeName,
scheme_name: normalizeSchemeName(schemeName),
};
await api.post(`${config.BACKEND_URL}/api/v1/contaminant-simulations`, undefined, {
@@ -259,8 +267,7 @@ const AnalysisParameters: React.FC<AnalysisParametersProps> = ({
key: "contaminant-analysis",
type: "error",
message: "提交分析失败",
description:
error instanceof Error ? error.message : "请检查网络连接或稍后重试",
description: getApiErrorMessage(error, "污染物模拟请求失败"),
});
} finally {
setSubmitting(false);
@@ -391,6 +398,13 @@ const AnalysisParameters: React.FC<AnalysisParametersProps> = ({
value={schemeName}
onChange={(e) => setFormField("schemeName", e.target.value)}
placeholder="输入方案名称"
error={schemeName.trim().length > SCHEME_NAME_MAX_LENGTH}
helperText={
schemeName.trim().length > SCHEME_NAME_MAX_LENGTH
? `方案名称不能超过 ${SCHEME_NAME_MAX_LENGTH} 个字符`
: undefined
}
inputProps={{ maxLength: SCHEME_NAME_MAX_LENGTH }}
/>
</Box>