From 051f0d37985481e9c77ee044e13c81c435ee6ece Mon Sep 17 00:00:00 2001 From: zhangjiming Date: Wed, 12 Mar 2025 14:58:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=A8=E5=9E=8B=E5=92=8C?= =?UTF-8?q?=E6=A0=B8=E6=A0=A1=E9=80=89=E6=8B=A9=E9=9D=99=E6=80=81=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/icon_arr_down_s.svg | 1 + src/assets/icon_dest.svg | 1 + src/assets/icon_selected.svg | 1 + src/assets/icon_track.svg | 1 + src/assets/icon_unselect.svg | 1 + src/pages/measure/components/MeasureAction.tsx | 65 +++++++++++++++++++++++++- src/pages/measure/components/RadioItem.tsx | 13 ++++++ src/pages/measure/components/SelectorBtn.tsx | 17 +++++++ 8 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 src/assets/icon_arr_down_s.svg create mode 100644 src/assets/icon_dest.svg create mode 100644 src/assets/icon_selected.svg create mode 100644 src/assets/icon_track.svg create mode 100644 src/assets/icon_unselect.svg create mode 100644 src/pages/measure/components/RadioItem.tsx create mode 100644 src/pages/measure/components/SelectorBtn.tsx diff --git a/src/assets/icon_arr_down_s.svg b/src/assets/icon_arr_down_s.svg new file mode 100644 index 0000000..f5a33fd --- /dev/null +++ b/src/assets/icon_arr_down_s.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon_dest.svg b/src/assets/icon_dest.svg new file mode 100644 index 0000000..1f427e9 --- /dev/null +++ b/src/assets/icon_dest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon_selected.svg b/src/assets/icon_selected.svg new file mode 100644 index 0000000..e787549 --- /dev/null +++ b/src/assets/icon_selected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon_track.svg b/src/assets/icon_track.svg new file mode 100644 index 0000000..b843811 --- /dev/null +++ b/src/assets/icon_track.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon_unselect.svg b/src/assets/icon_unselect.svg new file mode 100644 index 0000000..35f14d5 --- /dev/null +++ b/src/assets/icon_unselect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/pages/measure/components/MeasureAction.tsx b/src/pages/measure/components/MeasureAction.tsx index 4bbf6b1..70bb6e8 100644 --- a/src/pages/measure/components/MeasureAction.tsx +++ b/src/pages/measure/components/MeasureAction.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useRef, useCallback, useMemo } from "react"; -import { Button, Checkbox, CheckboxProps, Drawer, message, Switch } from "antd"; +import { Button, Checkbox, CheckboxProps, Drawer, message, Modal, Switch } from "antd"; import { useNavigate } from "react-router"; import { fetchAnalysisReport, @@ -14,8 +14,12 @@ import { MeasureState, TaskState, TrackRecordSig } from "../../../services/wsTyp import { useAppDispatch, useAppSelector } from "../../../utils/hooks"; import Gr_round from "../../../assets/green_round.svg"; import Bl_round from "../../../assets/blue_round.svg"; +import icon_track from "../../../assets/icon_track.svg"; +import icon_dest from "../../../assets/icon_dest.svg"; import MeasurementCanvas, { AnalysisData, BenchmarkShape, MeasurementCanvasRef } from "./konva/MeasurementCanvas"; import "./MeasureAction.scss"; +import SelectorBtn from "./SelectorBtn"; +import RadioItem from "./RadioItem"; // 创建 websocket 客户端 const wsClient = createWebSocket(sharedWsUrl); @@ -62,6 +66,10 @@ export default function MeasureAction() { const [statusList, setStatusList] = useState(initialStatusList); // 打开抽屉(显示分析结果) const [openDrawer, setOpenDrawer] = useState(false); + // 显示钢轨轨型弹框 + const [showRailTypeModel, setShowRailTypeModel] = useState(false); + // 显示核校方式弹框 + const [showCalibrationModel, setShowCalibrationModel] = useState(false); /** ----------------------- 事件处理函数 ----------------------- */ // 切换保存后自动开始新测量 @@ -364,7 +372,24 @@ export default function MeasureAction() { showCoordinates={showGrid} ref={canvasRef} /> - + {analysisReport && ( +
+ } + text={"60轨"} + onClick={() => { + setShowRailTypeModel(true); + }} + /> + } + text={"尖轨核校"} + onClick={() => { + setShowCalibrationModel(true); + }} + /> +
+ )} {/* 右侧区域:根据 showAnalysisTable 状态显示测量步骤或分析表格 */} @@ -451,6 +476,42 @@ export default function MeasureAction() { )} + + 请选择钢轨轨型} + closable={false} + open={showRailTypeModel} + width={360} + footer={ +
+ + +
+ }> + + + +
+ 请选择核校方式} + closable={false} + open={showCalibrationModel} + width={360} + footer={ +
+ + +
+ } + > + + + +
); } diff --git a/src/pages/measure/components/RadioItem.tsx b/src/pages/measure/components/RadioItem.tsx new file mode 100644 index 0000000..8156172 --- /dev/null +++ b/src/pages/measure/components/RadioItem.tsx @@ -0,0 +1,13 @@ +import icon_select from "../../../assets/icon_selected.svg"; +import icon_unselect from "../../../assets/icon_unselect.svg"; + +export default function RadioItem(props: { label: string; value?: string; selected: boolean; onSelect?: (val: string) => void }) { + return ( +
props.onSelect && props.onSelect(props.value || "")}> +

{props.label}

+ icon +
+ ); +} diff --git a/src/pages/measure/components/SelectorBtn.tsx b/src/pages/measure/components/SelectorBtn.tsx new file mode 100644 index 0000000..0d33d2b --- /dev/null +++ b/src/pages/measure/components/SelectorBtn.tsx @@ -0,0 +1,17 @@ +import { ReactNode } from "react"; +import icon_arr from "../../../assets/icon_arr_down_s.svg"; + +export default function SelectorBtn({ imgNode, text, onClick }: { imgNode: () => ReactNode; text: string; onClick: () => void }) { + return ( +
+
+ {imgNode()} +
+ +
+ {text} + arr +
+
+ ); +}