From 5b4fcaa446abd642f27308319970d2332fc6cc8a Mon Sep 17 00:00:00 2001 From: JIANG Date: Mon, 10 Nov 2025 09:49:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7openlayers=EF=BC=9B=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=AA=A8=E6=9E=B6=E5=9B=BE=EF=BC=8C=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E5=8D=B3=E6=97=B6=E8=A7=86=E8=A7=89=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 8 +- package.json | 2 +- .../(main)/burst-pipe-analysis/loading.tsx | 5 + src/app/(main)/layout.tsx | 7 +- .../monitoring-place-optimization/loading.tsx | 5 + .../loading.tsx | 5 + src/app/(main)/network-simulation/loading.tsx | 5 + .../(main)/scada-data-cleaning/loading.tsx | 5 + src/components/loading/MapSkeleton.tsx | 174 ++++++++++++++++++ 9 files changed, 209 insertions(+), 7 deletions(-) create mode 100644 src/app/(main)/burst-pipe-analysis/loading.tsx create mode 100644 src/app/(main)/monitoring-place-optimization/loading.tsx create mode 100644 src/app/(main)/network-partition-optimization/loading.tsx create mode 100644 src/app/(main)/network-simulation/loading.tsx create mode 100644 src/app/(main)/scada-data-cleaning/loading.tsx create mode 100644 src/components/loading/MapSkeleton.tsx diff --git a/package-lock.json b/package-lock.json index 88dac76..39d83b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "js-cookie": "^3.0.5", "next": "^15.2.4", "next-auth": "^4.24.5", - "ol": "^10.6.1", + "ol": "^10.7.0", "postcss": "^8.5.6", "react": "^19.1.0", "react-dom": "^19.1.0", @@ -15391,9 +15391,9 @@ } }, "node_modules/ol": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/ol/-/ol-10.6.1.tgz", - "integrity": "sha512-xp174YOwPeLj7c7/8TCIEHQ4d41tgTDDhdv6SqNdySsql5/MaFJEJkjlsYcvOPt7xA6vrum/QG4UdJ0iCGT1cg==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-10.7.0.tgz", + "integrity": "sha512-122U5gamPqNgLpLOkogFJhgpywvd/5en2kETIDW+Ubfi9lPnZ0G9HWRdG+CX0oP8od2d6u6ky3eewIYYlrVczw==", "license": "BSD-2-Clause", "dependencies": { "@types/rbush": "4.0.0", diff --git a/package.json b/package.json index 18bade5..e36f9e6 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "js-cookie": "^3.0.5", "next": "^15.2.4", "next-auth": "^4.24.5", - "ol": "^10.6.1", + "ol": "^10.7.0", "postcss": "^8.5.6", "react": "^19.1.0", "react-dom": "^19.1.0", diff --git a/src/app/(main)/burst-pipe-analysis/loading.tsx b/src/app/(main)/burst-pipe-analysis/loading.tsx new file mode 100644 index 0000000..2c57921 --- /dev/null +++ b/src/app/(main)/burst-pipe-analysis/loading.tsx @@ -0,0 +1,5 @@ +import { MapSkeleton } from "@components/loading/MapSkeleton"; + +export default function Loading() { + return ; +} diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 6a77b3f..0cf2e14 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -1,11 +1,12 @@ import type { Metadata } from "next"; import { cookies } from "next/headers"; -import React from "react"; +import React, { Suspense } from "react"; import { RefineContext } from "../_refine_context"; import authOptions from "@app/api/auth/[...nextauth]/options"; import { Header } from "@components/header"; import { Title } from "@components/title"; +import { MapSkeleton } from "@components/loading/MapSkeleton"; import { ThemedLayout } from "@refinedev/mui"; import { getServerSession } from "next-auth/next"; import { redirect } from "next/navigation"; @@ -43,7 +44,9 @@ export default async function MainLayout({ sx: { height: "100%" }, }} > - {children} + }> + {children} + ); diff --git a/src/app/(main)/monitoring-place-optimization/loading.tsx b/src/app/(main)/monitoring-place-optimization/loading.tsx new file mode 100644 index 0000000..2c57921 --- /dev/null +++ b/src/app/(main)/monitoring-place-optimization/loading.tsx @@ -0,0 +1,5 @@ +import { MapSkeleton } from "@components/loading/MapSkeleton"; + +export default function Loading() { + return ; +} diff --git a/src/app/(main)/network-partition-optimization/loading.tsx b/src/app/(main)/network-partition-optimization/loading.tsx new file mode 100644 index 0000000..2c57921 --- /dev/null +++ b/src/app/(main)/network-partition-optimization/loading.tsx @@ -0,0 +1,5 @@ +import { MapSkeleton } from "@components/loading/MapSkeleton"; + +export default function Loading() { + return ; +} diff --git a/src/app/(main)/network-simulation/loading.tsx b/src/app/(main)/network-simulation/loading.tsx new file mode 100644 index 0000000..2c57921 --- /dev/null +++ b/src/app/(main)/network-simulation/loading.tsx @@ -0,0 +1,5 @@ +import { MapSkeleton } from "@components/loading/MapSkeleton"; + +export default function Loading() { + return ; +} diff --git a/src/app/(main)/scada-data-cleaning/loading.tsx b/src/app/(main)/scada-data-cleaning/loading.tsx new file mode 100644 index 0000000..2c57921 --- /dev/null +++ b/src/app/(main)/scada-data-cleaning/loading.tsx @@ -0,0 +1,5 @@ +import { MapSkeleton } from "@components/loading/MapSkeleton"; + +export default function Loading() { + return ; +} diff --git a/src/components/loading/MapSkeleton.tsx b/src/components/loading/MapSkeleton.tsx new file mode 100644 index 0000000..6cb2bb8 --- /dev/null +++ b/src/components/loading/MapSkeleton.tsx @@ -0,0 +1,174 @@ +import { Box, Skeleton } from "@mui/material"; + +/** + * 地图页面骨架屏组件 + * 提供即时视觉反馈,模拟地图界面布局 + */ +export function MapSkeleton() { + return ( + + {/* 主地图区域骨架 */} + + + {/* 左侧工具栏骨架 */} + + {[1, 2, 3, 4, 5].map((i) => ( + + ))} + + + {/* 右侧控制面板骨架 */} + + + + + + + + + {/* 底部时间轴骨架 */} + + + + + {/* 缩放控制骨架 */} + + + + + + {/* 比例尺骨架 */} + + + + + ); +} + +/** + * 简化版骨架屏 - 用于非地图页面 + */ +export function SimpleSkeleton() { + return ( + + + + + + + + + + + ); +}