Files
TJWaterFrontend_Refine/src/components/olmap/BurstLocation/burstLocationError.ts
T

51 lines
1.5 KiB
TypeScript

export interface BurstLocationErrorNotice {
message: string;
description: string;
}
const DATA_GAP_PATTERN =
/^(爆管压力数据|正常压力数据|爆管流量数据|正常流量数据) 在时间窗内无有效模拟数据: (.+)$/;
const extractErrorDetail = (error: unknown): string => {
const candidate = error as {
message?: string;
response?: { data?: { detail?: unknown } };
};
const detail = candidate?.response?.data?.detail;
if (typeof detail === "string" && detail.trim()) {
return detail.trim();
}
if (typeof candidate?.message === "string" && candidate.message.trim()) {
return candidate.message.trim();
}
return "请求失败";
};
export const getBurstLocationErrorNotice = (
error: unknown,
): BurstLocationErrorNotice => {
const detail = extractErrorDetail(error);
const match = detail.match(DATA_GAP_PATTERN);
if (!match) {
return {
message: "提交分析失败",
description: detail,
};
}
const [, dataLabel, missingIds] = match;
if (dataLabel.startsWith("正常")) {
return {
message: "缺少正常模拟基线",
description: `所选方案时间窗内没有可用的实时模拟${dataLabel},缺失点位:${missingIds}。请选择已有正常基线覆盖的方案或时间窗,系统不会自动补数据。`,
};
}
return {
message: "所选方案数据不完整",
description: `所选方案时间窗内没有可用的${dataLabel},缺失点位:${missingIds}。请选择数据完整的模拟方案。`,
};
};