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 +
+
+ ); +}