From 46bfde448d8fa4e56ac0d926765b4e207f8aa168 Mon Sep 17 00:00:00 2001 From: LiLongLong <13717757313@163.com> Date: Wed, 5 Mar 2025 20:56:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=B5=8B=E9=87=8F=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 +- package.json | 1 + src/App.tsx | 11 +++- src/components/SideMenu.tsx | 20 +++---- src/index.tsx | 6 +- src/pages/debug/index.tsx | 3 - src/pages/measure/components/MeasureAction.tsx | 36 ++++++++++-- src/pages/measure/components/MeasureDetail.tsx | 79 ++++++++++++++++++++------ src/services/measure/analysis.ts | 16 ++++++ src/services/measure/type.ts | 10 ++++ 10 files changed, 141 insertions(+), 43 deletions(-) delete mode 100644 src/pages/debug/index.tsx create mode 100644 src/services/measure/analysis.ts create mode 100644 src/services/measure/type.ts diff --git a/.env b/.env index 371506d..23a129f 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -REACT_APP_WS_URL=localhost:8080/ws +REACT_APP_WS_URL=192.168.1.201/ws diff --git a/package.json b/package.json index 6b66f04..8c3432a 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "outline", "version": "0.1.0", "private": true, + "proxy":"http://localhost:3001", "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", diff --git a/src/App.tsx b/src/App.tsx index a256a72..7a8e4ff 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,10 +6,17 @@ import { Layout } from "antd"; import { default as AppHeader } from "./components/Header"; import { default as AppFooter } from "./components/Footer"; import SideMenu from "./components/SideMenu"; - +import { createWebSocket, sharedWsUrl } from "./services/socket"; const { Header, Footer, Sider, Content } = Layout; function App() { + console.log('app-------init--------') + //连接websocket + const wsClient = createWebSocket(sharedWsUrl); + wsClient.dataOb.subscribe(data => { + console.log('data---', data) + }) + const headerStyle: React.CSSProperties = { height: 64, padding: 0, @@ -23,6 +30,8 @@ function App() { const layoutStyle = { overflow: "hidden", }; + + return (
diff --git a/src/components/SideMenu.tsx b/src/components/SideMenu.tsx index 31d7a0d..1c74dcd 100644 --- a/src/components/SideMenu.tsx +++ b/src/components/SideMenu.tsx @@ -2,36 +2,35 @@ import type { MenuProps } from "antd"; import { Menu } from "antd"; import icon_logo from "../assets/icon_logo.svg"; import icon_measure from "../assets/menu/icon_measure.svg"; - +import { useNavigate, useLocation } from 'react-router-dom'; import "./SideMenu.scss"; type MenuItem = Required["items"][number]; const items: MenuItem[] = [ { - key: "sub1", + key: "measure", label: "测量", icon: , children: [ { - key: "g1", + key: "/measure/config", label: "新测量", }, { - key: "g2", + key: "/measure/detail", label: "测量记录", - }, - { - key: "g3", - label: "调试", - }, + } ], }, ]; export default function SideMenu() { + const navigate = useNavigate(); + const location = useLocation(); const onClick: MenuProps["onClick"] = e => { - console.log("click ", e); + console.log("click menu----", e); + navigate(e.key) }; return (
@@ -42,6 +41,7 @@ export default function SideMenu() { style={{ width: "100%", backgroundColor: "transparent", color: "#fff" }} defaultSelectedKeys={["1"]} defaultOpenKeys={["sub1"]} + selectedKeys={[location.pathname]} mode="inline" items={items} /> diff --git a/src/index.tsx b/src/index.tsx index 1d9b21b..6f781af 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -7,7 +7,6 @@ import Measure from "./pages/measure/Measure"; import MeasureConfig from "./pages/measure/components/MeasureConfig"; import MeasureDetail from "./pages/measure/components/MeasureDetail"; import MeasureAction from "./pages/measure/components/MeasureAction"; -import Debug from "./pages/debug/index" import App from "./App"; import reportWebVitals from "./reportWebVitals"; @@ -36,10 +35,6 @@ const router = createBrowserRouter([ path: "action", element: , }, - { - path: "debug", - element: , - }, ], }, ], @@ -48,6 +43,7 @@ const router = createBrowserRouter([ path: "/login", element: , }, + ]); const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); diff --git a/src/pages/debug/index.tsx b/src/pages/debug/index.tsx deleted file mode 100644 index d4c8a9b..0000000 --- a/src/pages/debug/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function Debug() { - return
12
-} \ No newline at end of file diff --git a/src/pages/measure/components/MeasureAction.tsx b/src/pages/measure/components/MeasureAction.tsx index 750ad2b..614568b 100644 --- a/src/pages/measure/components/MeasureAction.tsx +++ b/src/pages/measure/components/MeasureAction.tsx @@ -1,7 +1,9 @@ -import { Button, Checkbox, CheckboxProps, Radio, RadioChangeEvent } from "antd"; -import { useState } from "react"; +import { Button, Checkbox, CheckboxProps, Radio, RadioChangeEvent, message } from "antd"; +import { useState, useEffect } from "react"; import { useNavigate } from "react-router"; import SectionalView from "./SectionalView"; +import { startMeasurement } from "../../../services/measure/analysis" +import { createWebSocket, sharedWsUrl } from "../../../services/socket"; export default function MeasureAction() { const navigate = useNavigate(); @@ -14,8 +16,29 @@ export default function MeasureAction() { console.log(`checked = ${e.target.checked}`); }; const onAnalysisBtnClick = () => { - navigate("../detail"); + + // navigate("../detail"); }; + + useEffect(()=>{ + connectWebpacket() + },[]) + + const connectWebpacket = ()=>{ + //连接websocket + const wsClient = createWebSocket(sharedWsUrl); + let subscription = wsClient.dataOb.subscribe(data => { + console.log('data--wsClient-显示上报的数据') + }); + wsClient.connect(); + } + + const onStart = () => { + startMeasurement().then(res=>{ + console.log('startMeasurement===', res) + message.success('已通知设备开始测量') + }) + } return (
@@ -24,15 +47,16 @@ export default function MeasureAction() {

测量步骤

- 正在测量的状态
+ {/* - + const columns: TableColumnsType = [ + { + title: '测量名称', + dataIndex: 'name', + }, + { + title: '创建者', + dataIndex: 'operatorName', + }, + { + title: '时间', + dataIndex: 'createTime', + }, + ]; - + const [tableData, setTableData] = useState([]) + const getDetailDataList = () => { + getDetailList().then(res => { + setTableData(res.data.list) + }) + } + + const [selectionType, setSelectionType] = useState<'checkbox'>('checkbox'); + const onDel = () => { + console.log('selectedRows====', selectRows) + message.error('正在做') + } + + return ( +
+
+ +
+
+ + rowSelection={{ type: selectionType, ...rowSelection }} + columns={columns} + dataSource={tableData.map(item => ({ ...item, key: item.name }))} + /> +
); } diff --git a/src/services/measure/analysis.ts b/src/services/measure/analysis.ts new file mode 100644 index 0000000..6d25885 --- /dev/null +++ b/src/services/measure/analysis.ts @@ -0,0 +1,16 @@ +import httpRequest, { type BaseResponse } from "../httpRequest"; +import type { DetailTable } from "../../services/measure/type"; +export function startMeasurement() { + return httpRequest({ + url: "/measurement-task/start-measurement", + method: "POST", + }); +} + + +export function getDetailList() { + return httpRequest>({ + url: "/measurement-task/cache-measurement", + method: "POST", + }); +} \ No newline at end of file diff --git a/src/services/measure/type.ts b/src/services/measure/type.ts new file mode 100644 index 0000000..e847046 --- /dev/null +++ b/src/services/measure/type.ts @@ -0,0 +1,10 @@ +export type measurementItem = { + +} + +export type DetailTable = { + id:number; + operatorName:string; + name: string; + createTime: string; +} \ No newline at end of file