From 9fc49a17a0e3f692e29990ff4aab755355291beb Mon Sep 17 00:00:00 2001 From: guoapeng Date: Fri, 20 Jun 2025 13:42:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 7 +++- src/index.css | 8 +++- src/pages/Measure.tsx | 81 ++++++++++++++++++++------------------ src/pages/Mine.tsx | 4 ++ src/pages/Mine2.tsx | 65 +++++++++++++++++++++++++++++- src/store/features/measureSlice.ts | 50 ++++++++++++++++++++++- src/utils/bridge.ts | 8 ++++ 7 files changed, 181 insertions(+), 42 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b16991f..358f885 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,7 +4,7 @@ import { Toast } from 'antd-mobile'; import Bridge, { bridgeOb, emitBridgeEvent } from './utils/bridge'; import { useAppDispatch, useAppSelector } from './utils/hooks'; -import { addNewPoint, updateTaskState, updateMeasureFinish } from './store/features/measureSlice'; +import { addNewPoint, updateTaskState, updateVersion, updateMeasureFinish } from './store/features/measureSlice'; import { refreshStationList, updateBleList, @@ -62,6 +62,11 @@ function App() { // 开启推送 useEffect(() => { + Bridge.getVersion().then((res) => { + if (res.success) { + dispatch(updateVersion(res.data)) + } + }); // if (appWebview) { // registerBridgeFunc(); // } else { diff --git a/src/index.css b/src/index.css index 1a0ccc7..a8b0b29 100644 --- a/src/index.css +++ b/src/index.css @@ -4,7 +4,7 @@ :root { --primaryColor: #3e63cb; - --tabBarHeight: 50px; + --tabBarHeight: 60px; --navBarHeight: 45px; } @@ -81,3 +81,9 @@ code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } +.adm-tab-bar { + height: var(--tabBarHeight); +} +.adm-tab-bar-wrap { + height: var(--tabBarHeight); +} diff --git a/src/pages/Measure.tsx b/src/pages/Measure.tsx index 1ccbf54..9488932 100644 --- a/src/pages/Measure.tsx +++ b/src/pages/Measure.tsx @@ -15,7 +15,8 @@ import { updateMeasureData, updateTaskState, updateMeasureStatus, - updateMeasureFinish + updateMeasureFinish, + updateShowCalibration } from '../store/features/measureSlice'; import Bridge from '../utils/bridge'; import { selectLabeledKtjOrgs, updateRailPoints } from '../store/features/baseData'; @@ -40,7 +41,7 @@ export default function Measure() { const [railId, setRailId] = useState<(number | string | null)[]>([]); const canvasRef = useRef(null); const [railSize, setRailSize] = useState(); - const iconWidth = 35; + const iconWidth = 40; const [showStandard, setShowStandard] = useState(false); // 默认选中第一个轨型 @@ -101,9 +102,6 @@ export default function Measure() { }, 100); canvasRef.current?.setMeasurementCalibrationData(measureState.measureFinishData); setShowMeasureFinish(true) - - - } }, [baseState.railTypes, measureState.measureFinishData, railId]); @@ -186,15 +184,16 @@ export default function Measure() { }; const [loading, setLoading] = useState(false); - const [showCalibration, setShowCalibration] = useState(false); const [showMeasureFinish, setShowMeasureFinish] = useState(false); const onCalibrationBtnClick = () => { setLoading(true); Bridge.alignPoints({ railSize: railSize || 'GX-60' }) .then((res) => { if (res.success) { - setShowCalibration(true); + // setShowCalibration(true); + dispatch(updateShowCalibration(true)) canvasRef.current?.setMeasurementCalibrationData(res.data); + dispatch(updateMeasureFinish(res.data)) } else { } setLoading(false); @@ -225,7 +224,8 @@ export default function Measure() { const onStartClick = () => { setMeasurementCanvasKey(measurementCanvasKey+1) - setShowCalibration(false); + // setShowCalibration(false); + dispatch(updateShowCalibration(false)) setShowMeasureFinish(false) dispatch(updateMeasureData([])); if (!contextState.device.connected) { @@ -410,19 +410,22 @@ export default function Measure() { } //上下移动 - const timerRef = useRef(null); + let timerRef = useRef(null); const handlePressStart = (type: string) => { + console.log('你进行了长按操作!'); + if (timerRef.current) { + return + } timerRef.current = setInterval(() => { - console.log('你进行了长按操作!'); + console.log('111!'); onHandleMove(type); }, 500); + console.log(timerRef.current) }; const handlePressEnd = () => { - if (timerRef.current) { clearInterval(timerRef.current); - timerRef.current = null; - } + timerRef.current = null; }; const onMoveLine = (type: string) => { @@ -432,27 +435,25 @@ export default function Measure() { const onHandleMove = (type: string) => { let list = canvasRef.current?.getMeasurementCalibrationData(); + console.log(list) if (list && list.length) { - list.forEach((item) => { + const updatedList = list.map((item) => { + const mutableItem = { ...item }; // 创建副本 if (type === 'up') { - //向上移动,原数据减y X轴不动 - item.y = item.y - distance / 1000; - } - if (type === 'down') { - //向上移动,原数据加y X轴不动 - item.y = item.y + distance / 1000; - } - if (type === 'left') { - //向左移动,原数据减x Y轴不动 - item.x = item.x - distance / 1000; - } - if (type === 'right') { - //向右移动,原数据加x Y轴不动 - item.x = item.x + distance / 1000; + mutableItem.y -= distance / 1000; + } else if (type === 'down') { + mutableItem.y += distance / 1000; + } else if (type === 'left') { + mutableItem.x -= distance / 1000; + } else if (type === 'right') { + mutableItem.x += distance / 1000; } + return mutableItem; }); - canvasRef.current?.setMeasurementCalibrationData(list); - setNewMeasureData(list); + + canvasRef.current?.setMeasurementCalibrationData(updatedList); + dispatch(updateMeasureFinish(list)); + setNewMeasureData(updatedList); } }; @@ -479,13 +480,17 @@ export default function Measure() { } let list = canvasRef.current?.getMeasurementCalibrationData(); if (list && list.length) { - list.forEach((item, index) => { - let cloneItem = rotatePoint(item, mrValue); - item.x = cloneItem.x; - item.y = cloneItem.y; + const updatedList = list.map((item) => { + const mutableItem = { ...item }; // 创建副本 + let cloneItem = rotatePoint(mutableItem, mrValue); + mutableItem.x = cloneItem.x; + mutableItem.y = cloneItem.y; + return mutableItem; }); - canvasRef.current?.setMeasurementCalibrationData(list); - setNewMeasureData(list); + + canvasRef.current?.setMeasurementCalibrationData(updatedList); + dispatch(updateMeasureFinish(list)); + setNewMeasureData(updatedList); } }; @@ -537,7 +542,7 @@ export default function Measure() { showScale={false} scaleInterval={1} showCoordinates={false} - showCalibration={showCalibration || showMeasureFinish} + showCalibration={measureState.showCalibration || showMeasureFinish} ref={canvasRef} key={measurementCanvasKey} /> @@ -562,7 +567,7 @@ export default function Measure() { 修改 {/**手动校准区 */} - {showCalibration && ( + {(measureState.showCalibration && measureState.measureFinishData.length>0) && (
([]); const [unuploadList, setUnuploadList] = useState([]); @@ -113,7 +115,9 @@ export default function Mine() { /> )} + + ); } diff --git a/src/pages/Mine2.tsx b/src/pages/Mine2.tsx index 2171c36..661ded1 100644 --- a/src/pages/Mine2.tsx +++ b/src/pages/Mine2.tsx @@ -1,15 +1,27 @@ -import {Dialog, List, NavBar, SpinLoading, Toast} from 'antd-mobile'; +import {Dialog, Grid, List, NavBar, SpinLoading, Toast} from 'antd-mobile'; import { UnorderedListOutline, SetOutline, UploadOutline, LoopOutline } from 'antd-mobile-icons'; import { useNavigate } from 'react-router-dom'; import { useAppDispatch, useAppSelector } from '../utils/hooks'; import { syncBaseData } from '../store/features/baseData'; +import {useEffect} from "react"; +import Bridge from "../utils/bridge"; +import {updateVersion} from "../store/features/measureSlice"; export default function Mine2() { + const measureState = useAppSelector((state) => state.measure); const navigate = useNavigate(); const dispatch = useAppDispatch(); const baseState = useAppSelector((state) => state.baseData); + useEffect(() => { + Bridge.getVersion().then((res) => { + if (res.success) { + dispatch(updateVersion(res.data)) + } + }); + }, [dispatch]); + const onSync = async () => { const result = await Dialog.confirm({ content: '是否确认同步', @@ -61,7 +73,58 @@ export default function Mine2() { +
+ {measureState.version.appVersion && ( + + + 软件版本: + + + {measureState.version.appVersion} + + + )} + {measureState.version.sn && ( + + + 设备SN码: + + + {measureState.version.sn} + + + )} + {measureState.version.hfwVersion && ( + + + 设备硬件版本: + + + {measureState.version.hfwVersion} + + + )} + {measureState.version.sfwVersion && ( + + + 设备软件版本: + + + {measureState.version.sfwVersion} + + + )} + +
+ ); } diff --git a/src/store/features/measureSlice.ts b/src/store/features/measureSlice.ts index 50e0191..657811c 100644 --- a/src/store/features/measureSlice.ts +++ b/src/store/features/measureSlice.ts @@ -9,6 +9,14 @@ export interface MeasureState { measureData:[], measureStatus: string, measureFinishData: [] + measurementCalibrationData:[] + showCalibration: boolean + version: { + appVersion?: string, + hfwVersion?: string + sfwVersion?: string + sn?: string + } } const initialState: MeasureState = { taskState: undefined, @@ -18,6 +26,15 @@ const initialState: MeasureState = { measureData: [], measureStatus: '', measureFinishData: [], + measurementCalibrationData:[], + showCalibration: false, + version: { + appVersion: '', + hfwVersion: '', + sfwVersion: '', + sn: '', + } + }; function isLeftFinished(state: MeasureState) { @@ -36,6 +53,7 @@ export const measureSlice = createSlice({ reducers: { clearData: (state) => { state.measureFinishData = []; + state.measurementCalibrationData = []; state.leftPoints = []; state.rightPoints = []; state.measureData = []; @@ -96,8 +114,38 @@ export const measureSlice = createSlice({ // } state.measureFinishData = payload }, + updateMeasurementCalibrationData: (state, { payload })=>{ + console.log('payload--', payload) + // if(payload.outline1 && payload.outline1.length){ + // state.rightPoints = payload.outline1 + // } + // if(payload.outline2 && payload.outline2.length){ + // state.leftPoints = payload.outline2 + // } + state.measurementCalibrationData = payload + }, + updateShowCalibration: (state, { payload })=>{ + console.log('payload--', payload) + // if(payload.outline1 && payload.outline1.length){ + // state.rightPoints = payload.outline1 + // } + // if(payload.outline2 && payload.outline2.length){ + // state.leftPoints = payload.outline2 + // } + state.showCalibration = payload + }, + updateVersion: (state, { payload })=>{ + console.log('payload--', payload) + // if(payload.outline1 && payload.outline1.length){ + // state.rightPoints = payload.outline1 + // } + // if(payload.outline2 && payload.outline2.length){ + // state.leftPoints = payload.outline2 + // } + state.version = payload + }, }, }); -export const { updateTaskState, addNewPoint, resetState, updateMeasureData,updateMeasureStatus, updateMeasureFinish, clearData } = measureSlice.actions; +export const { updateTaskState, addNewPoint, resetState, updateMeasureData,updateMeasureStatus,updateVersion, updateMeasureFinish,updateShowCalibration, updateMeasurementCalibrationData, clearData } = measureSlice.actions; export default measureSlice.reducer; diff --git a/src/utils/bridge.ts b/src/utils/bridge.ts index bf6dc63..4525d17 100644 --- a/src/utils/bridge.ts +++ b/src/utils/bridge.ts @@ -373,6 +373,14 @@ export default class Bridge { params: {}, }); } + + static getVersion() { + return httpRequest>({ + url: '/api/system/info', + method: 'POST', + params: {}, + }); + } static syncBaseData() { return httpRequest({ url: '/api/basic/ktj/update',