From 4b88b287ea41c75be6a253412a050f64fbbb1579 Mon Sep 17 00:00:00 2001 From: zhangjiming Date: Mon, 10 Mar 2025 22:07:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=A5=E6=A0=BC=E7=B1=BB=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E7=B2=BE=E7=AE=80=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/measure/components/MeasureAction.tsx | 60 +++++++++----------------- src/services/wsTypes.ts | 9 ++-- 2 files changed, 25 insertions(+), 44 deletions(-) diff --git a/src/pages/measure/components/MeasureAction.tsx b/src/pages/measure/components/MeasureAction.tsx index 24f6a31..b5b36bb 100644 --- a/src/pages/measure/components/MeasureAction.tsx +++ b/src/pages/measure/components/MeasureAction.tsx @@ -10,7 +10,7 @@ import { import { createWebSocket, sharedWsUrl } from "../../../services/socket"; import { switchMeasureAfterSave } from "../../../store/features/contextSlice"; import { AnalysisReport, AnalyzeAngle } from "../../../services/measure/type"; -import { MeasureState, taskStatusDescMap } from "../../../services/wsTypes"; +import { MeasureState, TaskState, taskStatusDescMap, TrackRecordSig } from "../../../services/wsTypes"; import { useAppDispatch, useAppSelector } from "../../../utils/hooks"; import Gr_round from "../../../assets/green_round.svg"; import Bl_round from "../../../assets/blue_round.svg"; @@ -36,15 +36,15 @@ export default function MeasureAction() { const [showMark, setShowMark] = useState(true); const [angleMarkBackup, setAngleMarkBackup] = useState(true); const afterSave = useAppSelector(store => store.context.newMeasureAfterSave); - const [angles, setAngles] = useState([]); - const [taskStatus, setTaskStatus] = useState("IDLE"); + // const [angles, setAngles] = useState([]); + // const [taskStatus, setTaskStatus] = useState("IDLE"); const [startBtnText, setStartBtnText] = useState("开始测量"); const [measurementFinished, setMeasurementFinished] = useState(false); const [analysisClicked, setAnalysisClicked] = useState(false); const [saveClicked, setSaveClicked] = useState(false); const [analysisReport, setAnalysisReport] = useState(null); const [showAnalysisTable, setShowAnalysisTable] = useState(false); - const [taskStatusName, setTaskStatusName] = useState(""); + // const [taskStatusName, setTaskStatusName] = useState(""); // 初始状态列表 const initialStatusList = [ @@ -57,7 +57,7 @@ export default function MeasureAction() { ]; const [statusList, setStatusList] = useState(initialStatusList); - /** ----------------------- 事件处理函数 ----------------------- **/ + /** ----------------------- 事件处理函数 ----------------------- */ // 切换保存后自动开始新测量 const onAfterSaveChange: CheckboxProps["onChange"] = e => { dispatch(switchMeasureAfterSave(e.target.checked)); @@ -115,13 +115,13 @@ export default function MeasureAction() { startMeasurement().then(res => { if (res.status !== 0) { message.error(res.data.info); - setTaskStatusName(taskStatusDescMap["IDLE"]); + // setTaskStatusName(taskStatusDescMap["IDLE"]); } else { const newStatusList = [...initialStatusList]; newStatusList[0].color = "b"; setStatusList(newStatusList); message.success("已通知设备开始测量"); - setTaskStatusName(taskStatusDescMap["IDLE"]); + // setTaskStatusName(taskStatusDescMap["IDLE"]); setStartBtnText("重新测量"); } }); @@ -144,10 +144,6 @@ export default function MeasureAction() { }); }; - // 辅助函数:渲染状态项的背景颜色 - const renderStatusBackground = (item: (typeof initialStatusList)[0]) => - item.statusCode === "START_RECORD_LEFT" ? item.background : ""; - // 辅助函数:渲染状态项的图标 const renderStatusIcon = (item: (typeof initialStatusList)[0]) => { if (item.color === "g") { @@ -172,30 +168,15 @@ export default function MeasureAction() { /** ----------------------- WebSocket 消息处理 ----------------------- **/ useEffect(() => { // 处理任务状态消息 - const handleStateMessage = (data: any) => { - if (!data.data) return; - if (data.data.taskStatus === "IDLE") { - setTaskStatusName("空闲"); - } else if (!data.data.isMeasuringLeftEnd) { - setTaskStatusName("左侧正在测量"); - setStatusList(prev => { - const updated = [...prev]; - updated[0].isReady = true; - return updated; - }); - } else if (data.data.isMeasuringLeftEnd && !data.data.isMeasuringRightEnd) { - setTaskStatusName("右侧正在测量"); - } else { - setTaskStatusName(taskStatusDescMap[data.data.taskStatus as keyof typeof taskStatusDescMap]); - } - setTaskStatus(data.data.taskStatus); + const handleStateMessage = (state: MeasureState["data"]) => { + }; // 处理事件消息 - const handleEventMessage = (data: any) => { + const handleEventMessage = (type: TaskState["data"]) => { setStatusList(prev => { const updated = [...prev]; - switch (data.data) { + switch (type) { case "START_RECORD_LEFT": updated[0].color = "g"; updated[1].color = "b"; @@ -263,8 +244,7 @@ export default function MeasureAction() { }; // 处理点数据消息 - const handlePointReport = (data: any) => { - const pointData = data.data as { x: number; y: number }; + const handlePointReport = (pointData: TrackRecordSig["data"]) => { console.log(`pointData === ${pointData.x},${pointData.y}`); if (!isLeftFinished.current) { leftPoints.current.push(pointData); @@ -275,13 +255,13 @@ export default function MeasureAction() { } }; - const subscription = wsClient.dataOb.subscribe((data: any) => { - if (data.messageType === "STATE" && data.path === "/measurement-task/get-task-state") { - handleStateMessage(data); - } else if (data.messageType === "EVENT" && data.path === "/measurement-task/event") { - handleEventMessage(data); - } else if (data.messageType === "STATE" && data.path === "/measurement-task/point-report") { - handlePointReport(data); + const subscription = wsClient.dataOb.subscribe((data) => { + if ( data.path === "/measurement-task/get-task-state") { + handleStateMessage(data.data); + } else if (data.path === "/measurement-task/event") { + handleEventMessage(data.data); + } else if (data.path === "/measurement-task/point-report") { + handlePointReport(data.data); } }); wsClient.connect(); @@ -413,7 +393,7 @@ export default function MeasureAction() { {statusList.map((item, index) => (
{renderStatusIcon(item)} diff --git a/src/services/wsTypes.ts b/src/services/wsTypes.ts index eef6b98..f702bc3 100644 --- a/src/services/wsTypes.ts +++ b/src/services/wsTypes.ts @@ -15,17 +15,17 @@ export type TaskState = { // data: { // event: "START_RECORD_SIG" | "END_RECORD_SIG" | "FINISHED" | "START_RECORD_LEFT" | "FINISH_RECORD_RIGHT" | "FINISH_RECORD" | "FINISH_RECORD_LEFT" | "END_RECORD_SIG" | "END_RECORD" | "START_RECORD_RIGHT"; // }; - path: "/measurement-task/get-task-state" | "/measurement-task/point-report" | "/measurement-task/event"; + path: "/measurement-task/event"; }; // 连续上报坐标点 export type TrackRecordSig = { - messageType: "EVENT"; + messageType: "STATE"; data: { x: number; y: number; }; - path: "/measurement-task/profile-record-ctrl-sig"; + path: "/measurement-task/point-report"; }; export const defaultContext: ContextMessage["data"] = { @@ -98,9 +98,10 @@ export type MeasureState = { isMeasuringRightEnd: boolean; //测量右侧完成 motionlessSigFlag: boolean; //滑轮质心是否静止 inStartMeasuringPos: boolean; //是否在允许开始测量的位置 + isWrongSide: boolean; //测量方向是错误的 // profileRecordDescription: null; //用户填写的新测量信息 }; - path: "/measurement-task/get-task-state" | "/measurement-task/event" | "/measurement-task/measurement-task"; + path: "/measurement-task/get-task-state"; }; export const defaultMeasureState = {