You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.9 KiB

5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
  1. import React, { useEffect } from "react";
  2. import "./App.scss";
  3. import { Outlet, useNavigate } from "react-router";
  4. import { Layout } from "antd";
  5. import { default as AppHeader } from "./components/Header";
  6. import { default as AppFooter } from "./components/Footer";
  7. import SideMenu from "./components/SideMenu";
  8. import { createWebSocket, sharedWsUrl } from "./services/socket";
  9. import { useAppDispatch } from "./utils/hooks";
  10. import { updateDeviceState } from "./store/device/deviceState";
  11. const { Header, Footer, Sider, Content } = Layout;
  12. function App() {
  13. const dispatch = useAppDispatch();
  14. const navigate = useNavigate();
  15. useEffect(() => {
  16. //连接websocket
  17. const wsClient = createWebSocket(sharedWsUrl);
  18. const subscription = wsClient.dataOb.subscribe(data => {
  19. if (data.messageType === "DeviceContext") {
  20. // if (data.data.loginFlag) {
  21. // dispatch(updateUser(data.data));
  22. // navigate("/measure/config");
  23. // } else {
  24. // navigate("/login");
  25. // }
  26. } else if (data.messageType === "STATE") {
  27. dispatch(updateDeviceState(data.data));
  28. }
  29. });
  30. wsClient.connect();
  31. return () => subscription.unsubscribe();
  32. });
  33. useEffect(() => {
  34. if (localStorage.getItem("user")) {
  35. navigate("/measure/config", { replace: true });
  36. } else {
  37. navigate("/login");
  38. }
  39. }, [navigate]);
  40. const headerStyle: React.CSSProperties = {
  41. height: 64,
  42. padding: 0,
  43. };
  44. const footerStyle: React.CSSProperties = {
  45. height: 64,
  46. padding: 0,
  47. };
  48. const layoutStyle = {
  49. overflow: "hidden",
  50. };
  51. return (
  52. <div className="">
  53. <Layout style={layoutStyle}>
  54. <Sider width="200px">
  55. <SideMenu />
  56. </Sider>
  57. <Layout>
  58. <Header style={headerStyle}>
  59. <AppHeader />
  60. </Header>
  61. <Content>
  62. <Outlet />
  63. </Content>
  64. <Footer style={footerStyle}>
  65. <AppFooter />
  66. </Footer>
  67. </Layout>
  68. </Layout>
  69. </div>
  70. );
  71. }
  72. export default App;