fix(analysis): preserve tab panel state

This commit is contained in:
2026-07-09 13:59:01 +08:00
parent 701c5a949d
commit 694f7629ee
24 changed files with 1119 additions and 281 deletions
@@ -17,8 +17,14 @@ import {
Analytics as AnalyticsIcon,
Search as SearchIcon,
} from "@mui/icons-material";
import OptimizationParameters from "./OptimizationParameters";
import SchemeQuery from "./SchemeQuery";
import OptimizationParameters, {
createOptimizationParametersState,
type OptimizationParametersState,
} from "./OptimizationParameters";
import SchemeQuery, {
createMonitoringSchemeQueryState,
type MonitoringSchemeQueryState,
} from "./SchemeQuery";
interface SchemeRecord {
id: number;
@@ -63,6 +69,11 @@ const MonitoringPlaceOptimizationPanel: React.FC<
// 持久化方案查询结果
const [schemes, setSchemes] = useState<SchemeRecord[]>([]);
const [optimizationState, setOptimizationState] =
useState<OptimizationParametersState>(createOptimizationParametersState);
const [queryState, setQueryState] = useState<MonitoringSchemeQueryState>(
createMonitoringSchemeQueryState,
);
// 使用受控或非受控状态
const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;
@@ -192,13 +203,18 @@ const MonitoringPlaceOptimizationPanel: React.FC<
{/* Tab 内容 */}
<TabPanel value={currentTab} index={0}>
<OptimizationParameters />
<OptimizationParameters
state={optimizationState}
onStateChange={setOptimizationState}
/>
</TabPanel>
<TabPanel value={currentTab} index={1}>
<SchemeQuery
schemes={schemes}
onSchemesChange={setSchemes}
state={queryState}
onStateChange={setQueryState}
onLocate={(id) => {
console.log("定位方案:", id);
// TODO: 在地图上定位