refactor(frontend): align TJWater Next integrations

This commit is contained in:
2026-08-26 12:26:29 +08:00
parent 6623f4f7fb
commit fee4fc6ce1
51 changed files with 3074 additions and 22280 deletions
@@ -202,7 +202,7 @@ const AnalysisParameters: React.FC<AnalysisParametersProps> = ({
return;
}
if (highlightFeature) return;
queryFeaturesByIds([sourceNode], "geo_junctions_mat").then((features) => {
queryFeaturesByIds([sourceNode], "junctions").then((features) => {
setHighlightFeature(features[0] ?? null);
});
}, [highlightFeature, sourceNode]);
@@ -25,10 +25,10 @@ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
import "dayjs/locale/zh-cn";
import dayjs, { Dayjs } from "dayjs";
import { api } from "@/lib/api";
import { listAnalysisSchemes } from "@/lib/analysisRuns";
import moment from "moment";
import { useNotification } from "@refinedev/core";
import { config, NETWORK_NAME } from "@config/config";
import { NETWORK_NAME } from "@config/config";
import { queryFeaturesByIds } from "@/utils/mapQueryService";
import { useControllableObjectState } from "@components/olmap/core/useControllableState";
import { useData, useMap } from "@components/olmap/core/MapComponent";
@@ -39,7 +39,7 @@ import { Style, Icon, Circle, Fill, Stroke } from "ol/style";
import Feature from "ol/Feature";
import { bbox, featureCollection } from "@turf/turf";
import Timeline from "@components/olmap/core/Controls/Timeline";
import { ContaminantSchemaItem, ContaminantSchemeRecord } from "./types";
import { ContaminantSchemeRecord } from "./types";
import { useSchemeCreatorName } from "@components/olmap/core/useSchemeCreatorName";
import { SchemeQueryEmptyState } from "@components/olmap/common/PanelEmptyState";
@@ -60,7 +60,7 @@ export interface ContaminantSchemeQueryState {
showTimeline: boolean;
selectedDate: Date | undefined;
timeRange: { start: Date; end: Date } | undefined;
expandedId: number | null;
expandedId: string | null;
hasQueried: boolean;
}
@@ -111,7 +111,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
const { open } = useNotification();
const map = useMap();
const data = useData();
const { schemeName, setSchemeName } = data || {};
const { schemeName, setSchemeName, schemeRunId, setSchemeRunId } = data || {};
const schemes =
externalSchemes !== undefined ? externalSchemes : internalSchemes;
@@ -222,40 +222,16 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
if (!queryAll && !queryDate) return;
setLoading(true);
try {
const params: Record<string, string> = {
scheme_type: SCHEME_TYPE,
};
if (!queryAll && queryDate) {
params.query_date = queryDate.startOf("day").toISOString();
}
const response = await api.get(`${config.BACKEND_URL}/api/v1/schemes`, {
params,
});
let filteredResults = response.data;
if (!queryAll) {
const formattedDate = queryDate!.format("YYYY-MM-DD");
filteredResults = response.data.filter(
(item: ContaminantSchemaItem) => {
const itemDate = moment(item.create_time).format("YYYY-MM-DD");
return itemDate === formattedDate;
},
);
}
const nextSchemes = filteredResults.map((item: ContaminantSchemaItem) => ({
id: item.scheme_id,
schemeName: item.scheme_name,
type: item.scheme_type,
username: item.username,
create_time: item.create_time,
startTime: item.scheme_start_time,
schemeDetail: item.scheme_detail,
}));
const nextSchemes = (await listAnalysisSchemes({
runType: SCHEME_TYPE,
queryDate: !queryAll && queryDate
? queryDate.format("YYYY-MM-DD")
: undefined,
})) as unknown as ContaminantSchemeRecord[];
setSchemes(nextSchemes);
setQueryField("hasQueried", true);
if (filteredResults.length === 0) {
if (nextSchemes.length === 0) {
open?.({
type: "success",
message: "查询结果",
@@ -267,7 +243,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
open?.({
type: "success",
message: "查询成功",
description: `共找到 ${filteredResults.length} 条方案记录`,
description: `共找到 ${nextSchemes.length} 条方案记录`,
});
}
} catch (error) {
@@ -284,7 +260,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
const handleLocateSource = (sourceIds: string[]) => {
if (sourceIds.length > 0) {
queryFeaturesByIds(sourceIds, "geo_junctions_mat").then((features) => {
queryFeaturesByIds(sourceIds, "junctions").then((features) => {
if (features.length > 0) {
// 设置高亮要素
setHighlightFeatures(features);
@@ -307,7 +283,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
}
};
const handleViewDetails = (id: number) => {
const handleViewDetails = (id: string) => {
const scheme = filteredSchemes.find((s) => s.id === id);
if (!scheme) return;
@@ -328,6 +304,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
}));
}
setSchemeName?.(scheme.schemeName);
setSchemeRunId?.(scheme.id);
if (scheme.schemeDetail?.source) {
handleLocateSource([scheme.schemeDetail.source]);
}
@@ -343,6 +320,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
timeRange={timeRange}
disableDateSelection={!!timeRange}
schemeName={schemeName}
schemeRunId={schemeRunId}
schemeType={SCHEME_TYPE}
/>,
mapContainer,
@@ -6,7 +6,7 @@ export interface ContaminantSchemeDetail {
}
export interface ContaminantSchemeRecord {
id: number;
id: string;
schemeName: string;
type: string;
username: string;
@@ -14,13 +14,3 @@ export interface ContaminantSchemeRecord {
startTime: string;
schemeDetail?: ContaminantSchemeDetail;
}
export interface ContaminantSchemaItem {
scheme_id: number;
scheme_name: string;
scheme_type: string;
username: string;
create_time: string;
scheme_start_time: string;
scheme_detail?: ContaminantSchemeDetail;
}