diff --git a/src/index.tsx b/src/index.tsx index 9555bce..e4f7aa7 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -70,13 +70,13 @@ const router = createBrowserRouter([ const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); root.render( - // + - + - // + ); console.log(process.env.REACT_APP_WS_URL); diff --git a/src/pages/measure/components/MeasureAction.tsx b/src/pages/measure/components/MeasureAction.tsx index 70bb6e8..2df1b19 100644 --- a/src/pages/measure/components/MeasureAction.tsx +++ b/src/pages/measure/components/MeasureAction.tsx @@ -8,7 +8,7 @@ import { startMeasurement, } from "../../../services/measure/analysis"; import { createWebSocket, sharedWsUrl } from "../../../services/socket"; -import { switchMeasureAfterSave } from "../../../store/features/contextSlice"; +import { switchMeasureAfterSave, updateCalibrationTypeId, updateRailTypeId } from "../../../store/features/contextSlice"; import { AnalysisReport } from "../../../services/measure/type"; import { MeasureState, TaskState, TrackRecordSig } from "../../../services/wsTypes"; import { useAppDispatch, useAppSelector } from "../../../utils/hooks"; @@ -20,6 +20,7 @@ import MeasurementCanvas, { AnalysisData, BenchmarkShape, MeasurementCanvasRef } import "./MeasureAction.scss"; import SelectorBtn from "./SelectorBtn"; import RadioItem from "./RadioItem"; +import { fetchCalibrationTypes, fetchRailTypes } from "../../../store/features/baseDataSlice"; // 创建 websocket 客户端 const wsClient = createWebSocket(sharedWsUrl); @@ -28,6 +29,9 @@ export default function MeasureAction() { const dispatch = useAppDispatch(); const navigate = useNavigate(); + const baseData = useAppSelector(store => store.baseData); + const context = useAppSelector(store => store.context); + /** ----------------------- 引用 ----------------------- **/ const canvasRef = useRef(null); const leftPoints = useRef<{ x: number; y: number }[]>([]); @@ -68,8 +72,10 @@ export default function MeasureAction() { const [openDrawer, setOpenDrawer] = useState(false); // 显示钢轨轨型弹框 const [showRailTypeModel, setShowRailTypeModel] = useState(false); + const [selectedRailType, setSelectedRailType] = useState(1); // 显示核校方式弹框 const [showCalibrationModel, setShowCalibrationModel] = useState(false); + const [selectCalibrationType, setSelectCalibrationType] = useState(1); /** ----------------------- 事件处理函数 ----------------------- */ // 切换保存后自动开始新测量 @@ -173,6 +179,13 @@ export default function MeasureAction() { } }; + useEffect(() => { + if (baseData.railTypes.length === 0) { + dispatch(fetchRailTypes()); + dispatch(fetchCalibrationTypes()); + } + }, [baseData.railTypes.length, dispatch]); + /** ----------------------- WebSocket 消息处理 ----------------------- **/ useEffect(() => { // 处理任务状态消息 @@ -304,6 +317,20 @@ export default function MeasureAction() { }, []); const onExport = () => {}; + + const currentRailType = () => baseData.railTypes.find(t => t.id === context.currRailTypeId); + const currentCalibrationType = () => baseData.calibrationTypes.find(t => t.id === context.currCalibrationTypeId); + + const onConfirmRailType = () => { + setShowRailTypeModel(false); + dispatch(updateRailTypeId(selectedRailType)); + // TODO 重新分析 + }; + const onConfirmCalibrationType = () => { + setShowCalibrationModel(false); + dispatch(updateCalibrationTypeId(selectCalibrationType)); + // TODO 重新分析 + }; /** ----------------------- 渲染 ----------------------- **/ return ( <> @@ -376,15 +403,17 @@ export default function MeasureAction() {
} - text={"60轨"} + text={currentRailType()?.name || "--"} onClick={() => { + setSelectedRailType(context.currRailTypeId); setShowRailTypeModel(true); }} /> } - text={"尖轨核校"} + text={currentCalibrationType()?.name || "--"} onClick={() => { + setSelectCalibrationType(context.currCalibrationTypeId); setShowCalibrationModel(true); }} /> @@ -484,15 +513,25 @@ export default function MeasureAction() { width={360} footer={
- - +
}> - - - + {baseData.railTypes.map(t => ( + setSelectedRailType(t.id)} + /> + ))} 请选择核校方式} @@ -501,16 +540,25 @@ export default function MeasureAction() { width={360} footer={
- - +
- } - > - - - + }> + {baseData.calibrationTypes.map(t => ( + setSelectCalibrationType(t.id)} + /> + ))}
); diff --git a/src/pages/measure/components/MeasureConfig.tsx b/src/pages/measure/components/MeasureConfig.tsx index 85a28f0..59eed0b 100644 --- a/src/pages/measure/components/MeasureConfig.tsx +++ b/src/pages/measure/components/MeasureConfig.tsx @@ -1,19 +1,24 @@ import { Button, Form, Input, message, Select } from "antd"; -import { useEffect, useState } from "react"; +import { useEffect } from "react"; import { useNavigate } from "react-router"; import { createMeasure } from "../../../services/measure/analysis"; -import { useAppSelector } from "../../../utils/hooks"; +import { useAppDispatch, useAppSelector } from "../../../utils/hooks"; +import { fetchCalibrationTypes, fetchRailTypes } from "../../../store/features/baseDataSlice"; +import { updateCalibrationTypeId, updateRailTypeId } from "../../../store/features/contextSlice"; export default function MeasureConfig() { + const dispatch = useAppDispatch(); const navigate = useNavigate(); const [messageApi, contextHolder] = message.useMessage(); - const context = useAppSelector(store => store.context); + // const context = useAppSelector(store => store.context); const deviceState = useAppSelector(store => store.deviceState); + const baseData = useAppSelector(store => store.baseData); + const onFinish = (values: any) => { console.log("Received values of form: ", values); //判断是否连接了设备 - if(!deviceState.isConnect){ + if (!deviceState.isConnect) { // message.error('设备尚未连接或连接失败,请重新连接') // return; } @@ -22,29 +27,43 @@ export default function MeasureConfig() { name: values["measureName"], lineName: values["lineName"], location: values["position"], - direction: values["direction"] + direction: values["direction"], }).then(res => { if (res.status !== 0) { messageApi.error(res.data.info); } else { - + dispatch(updateRailTypeId(values["railType"])) + dispatch(updateCalibrationTypeId(values["calibrationType"])) navigate("../action"); } }); }; - let user = localStorage.getItem('user') || '' - let userInfo = user && JSON.parse(user) || {}; - let [nickName, setNickName] = useState() - if(context.user.loginUser && context.user.loginUser.nickname){ - // setNickName(context.user.loginUser.nickname) - } + + useEffect(() => { + if (baseData.railTypes.length === 0) { + dispatch(fetchRailTypes()); + dispatch(fetchCalibrationTypes()); + } + }, [baseData.railTypes.length, dispatch]); + const [form] = Form.useForm(); + useEffect(() => { - form.setFieldsValue({ + const user = localStorage.getItem("user") || ""; + const userInfo = (user && JSON.parse(user)) || {}; + const fieldValue: Record = { username: userInfo.nickname || "", - direction: "左" - }); - }, [userInfo.nickname, form]); + direction: "左", + } + if (baseData.railTypes.length > 0) { + fieldValue.railType = baseData.railTypes[0].id + } + if (baseData.calibrationTypes.length > 0) { + fieldValue.calibrationType = baseData.calibrationTypes[0].id + } + form.setFieldsValue(fieldValue); + }, [baseData.calibrationTypes, baseData.railTypes, form]); + return ( <> {contextHolder} @@ -60,47 +79,45 @@ export default function MeasureConfig() { onFinish={onFinish} // onFinishFailed={onFinishFailed} autoComplete="off"> - - + - {/* - - */} - {/* - - */} - + + + + + + + - + - + {/* */}