mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-02 16:16:39 +08:00
修复地图加载报错问题,优化一点布局
This commit is contained in:
parent
66c5852dbf
commit
847bf8928f
@ -1,13 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React, {
|
import React, { useEffect, useRef } from "react";
|
||||||
useEffect,
|
|
||||||
useState,
|
|
||||||
useCallback,
|
|
||||||
Dispatch,
|
|
||||||
SetStateAction,
|
|
||||||
useRef,
|
|
||||||
} from "react";
|
|
||||||
import Script from "next/script";
|
import Script from "next/script";
|
||||||
|
|
||||||
import * as echarts from "echarts";
|
import * as echarts from "echarts";
|
||||||
@ -20,7 +13,10 @@ interface DataItem {
|
|||||||
|
|
||||||
export default function UserByMap() {
|
export default function UserByMap() {
|
||||||
const userByMapChart = useRef(null);
|
const userByMapChart = useRef(null);
|
||||||
|
// const loadBaiduMap = useRef(<Script
|
||||||
|
// src="https://api.map.baidu.com/api?v=3.0&ak=19e9FKQC49u5uQe4CBqan9ER2mYhQ3ip&callback=initMap"
|
||||||
|
// strategy="beforeInteractive"
|
||||||
|
// />);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!userByMapChart.current) return;
|
if (!userByMapChart.current) return;
|
||||||
const data: DataItem[] = [
|
const data: DataItem[] = [
|
||||||
@ -619,6 +615,7 @@ export default function UserByMap() {
|
|||||||
useDirtyRect: false,
|
useDirtyRect: false,
|
||||||
});
|
});
|
||||||
option && myChart?.setOption(option);
|
option && myChart?.setOption(option);
|
||||||
|
setTimeout(() => myChart.resize(), 200);
|
||||||
};
|
};
|
||||||
try {
|
try {
|
||||||
loadEcharts();
|
loadEcharts();
|
||||||
@ -627,6 +624,17 @@ export default function UserByMap() {
|
|||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const initMap = () => {
|
||||||
|
if (window.BMap && userByMapChart.current) {
|
||||||
|
var map = new window.BMap.Map(userByMapChart.current); // 创建Map实例
|
||||||
|
// var point = new window.BMap.Point(116.404, 39.915); // 创建点坐标
|
||||||
|
// map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.initMap = initMap;
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
let chartDom = document.getElementById("userByMapChart");
|
let chartDom = document.getElementById("userByMapChart");
|
||||||
@ -668,6 +676,7 @@ export default function UserByMap() {
|
|||||||
<Script
|
<Script
|
||||||
src="https://api.map.baidu.com/api?v=3.0&ak=19e9FKQC49u5uQe4CBqan9ER2mYhQ3ip&callback=initMap"
|
src="https://api.map.baidu.com/api?v=3.0&ak=19e9FKQC49u5uQe4CBqan9ER2mYhQ3ip&callback=initMap"
|
||||||
strategy="beforeInteractive"
|
strategy="beforeInteractive"
|
||||||
|
onLoad={() => window.initMap()}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useSession } from "next-auth/react";
|
|
||||||
import { redirect } from "next/navigation";
|
|
||||||
import { ADMIN_LIST } from "@/lib/auth_list";
|
|
||||||
import React, { ReactNode, useEffect, useState } from "react";
|
import React, { ReactNode, useEffect, useState } from "react";
|
||||||
import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons";
|
import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons";
|
||||||
import { Layout, Menu, Button, theme, ConfigProvider, ThemeConfig } from "antd";
|
import { Layout, Menu, Button, theme, ConfigProvider, ThemeConfig } from "antd";
|
||||||
@ -11,24 +8,32 @@ import SideBar from "../components/sidebar";
|
|||||||
const { Header, Sider, Content } = Layout;
|
const { Header, Sider, Content } = Layout;
|
||||||
|
|
||||||
function MainLayout({ children }: { children: ReactNode }) {
|
function MainLayout({ children }: { children: ReactNode }) {
|
||||||
// const [theme, setTheme] = useState<ThemeConfig>('dark');
|
const [collapsed, setCollapsed] = useState(
|
||||||
const { data, status } = useSession();
|
typeof window !== "undefined" && window.innerWidth < 768,
|
||||||
const name = data?.user?.email || data?.user?.name;
|
);
|
||||||
// console.log('name', name, data, status)
|
|
||||||
const [collapsed, setCollapsed] = useState(false);
|
|
||||||
const {
|
const {
|
||||||
token: { colorBgContainer, borderRadiusLG, colorBgLayout },
|
token: { colorBgContainer, borderRadiusLG, colorBgLayout },
|
||||||
} = theme.useToken();
|
} = theme.useToken();
|
||||||
|
// 处理布局
|
||||||
// 客户端才执行
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 用户已登录,且没设置密码
|
const handleResize = () => {
|
||||||
// if (status === "loading") return;
|
// 更新折叠状态以匹配屏幕宽度
|
||||||
if (status === "authenticated" && !(name && ADMIN_LIST.includes(name))) {
|
setCollapsed(typeof window !== "undefined" && window.innerWidth < 768);
|
||||||
redirect("/");
|
};
|
||||||
}
|
// 监听窗口大小变化
|
||||||
// 状态变化时,重新判断
|
window.addEventListener("resize", handleResize);
|
||||||
}, [name, status]);
|
// 组件卸载时移除监听器
|
||||||
|
return () => window.removeEventListener("resize", handleResize);
|
||||||
|
}, []);
|
||||||
|
// 客户端才执行
|
||||||
|
// useEffect(() => {
|
||||||
|
// // 用户已登录,且没设置密码
|
||||||
|
// // if (status === "loading") return;
|
||||||
|
// if (status === "authenticated" && !(name && ADMIN_LIST.includes(name))) {
|
||||||
|
// redirect("/");
|
||||||
|
// }
|
||||||
|
// // 状态变化时,重新判断
|
||||||
|
// }, [name, status]);
|
||||||
return (
|
return (
|
||||||
<ConfigProvider
|
<ConfigProvider
|
||||||
theme={{
|
theme={{
|
||||||
@ -40,7 +45,12 @@ function MainLayout({ children }: { children: ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Layout style={{ height: "100%" }}>
|
<Layout style={{ height: "100%" }}>
|
||||||
<Sider>
|
<Sider
|
||||||
|
breakpoint={"md"}
|
||||||
|
collapsedWidth="0"
|
||||||
|
collapsed={collapsed}
|
||||||
|
trigger={null}
|
||||||
|
>
|
||||||
<div className="demo-logo-vertical" />*
|
<div className="demo-logo-vertical" />*
|
||||||
<SideBar />
|
<SideBar />
|
||||||
</Sider>
|
</Sider>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"private": false,
|
"private": false,
|
||||||
"license": "mit",
|
"license": "mit",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npx prisma generate && npx prisma db push && next dev",
|
"dev": "npx prisma generate && npx prisma db push && next dev --hostname 0.0.0.0",
|
||||||
"build": "npx next telemetry disable && npx prisma generate && cross-env BUILD_MODE=standalone next build",
|
"build": "npx next telemetry disable && npx prisma generate && cross-env BUILD_MODE=standalone next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
|
Loading…
Reference in New Issue
Block a user