From 9c38349cde00efa54c34b824a2b02b322c79b094 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Sun, 8 Jun 2025 20:41:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E7=94=B5=E9=87=8F?= =?UTF-8?q?=E4=BD=8E=E6=8F=90=E7=A4=BA;=20=E7=BC=A9=E6=94=BE=E9=87=8D?= =?UTF-8?q?=E7=BD=AE;=E6=B5=8B=E9=87=8F=E8=AE=B0=E5=BD=95=E5=BA=8F?= =?UTF-8?q?=E5=8F=B7=E8=A1=A50?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CustomNavBar.tsx | 15 ++++++++++++++- src/components/MeasurementItem.tsx | 5 ++++- src/components/konva/MeasurementCanvas.tsx | 4 ++++ src/pages/Measure.tsx | 4 ++++ src/pages/Setting.tsx | 15 +++++++++++++++ src/store/features/contextSlice.ts | 2 +- 6 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/components/CustomNavBar.tsx b/src/components/CustomNavBar.tsx index 9d74cb0..da25498 100644 --- a/src/components/CustomNavBar.tsx +++ b/src/components/CustomNavBar.tsx @@ -2,15 +2,28 @@ import icon_bluetooth from '../assets/icon_bluetooth.svg'; import icon_arr_d from '../assets/icon_arr_down.svg'; import power_icon from '../assets/power.svg'; import './CustomNavBar.scss'; -import { useState } from 'react'; +import {useEffect, useRef, useState} from 'react'; import { useAppSelector } from '../utils/hooks'; import { useNavigate } from 'react-router-dom'; +import {Dialog} from "antd-mobile"; export default function CustomNavBar({ title }: { title: string }) { const navigate = useNavigate(); const device = useAppSelector((state) => state.context.device); const [showDetail, setShowDetail] = useState(false); + const hasWarned = useRef(false); + useEffect(() => { + if (device.connected && device.power< 20 && !hasWarned.current) { + Dialog.alert({ + content: '设备电量过低,请及时充电', + onConfirm: () => { + }, + }).then(r => {}); + hasWarned.current = true; // 标记已弹窗 + } + }, [device]); + return (
{/** 温度,水平仪 */} diff --git a/src/components/MeasurementItem.tsx b/src/components/MeasurementItem.tsx index 7c0e1b0..ac0e660 100644 --- a/src/components/MeasurementItem.tsx +++ b/src/components/MeasurementItem.tsx @@ -16,6 +16,9 @@ export default function MeasurementItem({ onDetail?: () => void; onSelected?: () => void; }) { + const padNumber = (num: string, length: number = 4): string => { + return num.toString().padStart(length, '0'); + } return (
{editMode && ( @@ -25,7 +28,7 @@ export default function MeasurementItem({ )}
- {item.todayNumber}. + {padNumber(item.todayNumber)}.

{item.name}

{item.syncStatus === 'finish' && 已上传}
diff --git a/src/components/konva/MeasurementCanvas.tsx b/src/components/konva/MeasurementCanvas.tsx index dca6baf..6b3b643 100644 --- a/src/components/konva/MeasurementCanvas.tsx +++ b/src/components/konva/MeasurementCanvas.tsx @@ -83,6 +83,7 @@ export interface MeasurementCanvasRef { setMeasurementData: (data: Point[]) => void; setAnalysisData: (data: AnalysisData[]) => void; redraw: () => void; + setCustomScale: (data: number) => void; } interface PinchData { @@ -212,6 +213,9 @@ const MeasurementCanvas = forwardRef { + setScale(newScale); + }, })); const stageRef = useRef(null); diff --git a/src/pages/Measure.tsx b/src/pages/Measure.tsx index 5cb4c21..c1a5807 100644 --- a/src/pages/Measure.tsx +++ b/src/pages/Measure.tsx @@ -135,7 +135,10 @@ export default function Measure() { }; const [initStart, setInitStart] = useState(false); + + const [measurementCanvasKey, setMeasurementCanvasKey] = useState(0); const onStartClick = () => { + setMeasurementCanvasKey(measurementCanvasKey+1) setshowCalibration(false); dispatch(updateMeasureData([])); if (!contextState.device.connected) { @@ -453,6 +456,7 @@ export default function Measure() { showCoordinates={false} showCalibration={showCalibration || showMeasureFinish} ref={canvasRef} + key={measurementCanvasKey} /> {/**选择轨型区 */} diff --git a/src/pages/Setting.tsx b/src/pages/Setting.tsx index ab547dd..dbfa397 100644 --- a/src/pages/Setting.tsx +++ b/src/pages/Setting.tsx @@ -87,6 +87,21 @@ export default function Setting() {
)} + {!context.device.connected && ( +
+
+

设备设置

+
+
+
Toast.show('连接设备后可设置')}> + 自动待机 + + --分钟 + +
+
+
+ )}
Date: Sun, 8 Jun 2025 20:47:47 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=E8=93=9D=E7=89=99=E6=96=AD=E5=BC=80?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=E9=87=8D=E7=BD=AE=E6=89=80=E6=9C=89=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Measure.tsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/pages/Measure.tsx b/src/pages/Measure.tsx index c1a5807..290aa64 100644 --- a/src/pages/Measure.tsx +++ b/src/pages/Measure.tsx @@ -31,6 +31,7 @@ export default function Measure() { const measureState = useAppSelector((state) => state.measure); const contextState = useAppSelector((state) => state.context); const baseState = useAppSelector((state) => state.baseData); + const device = useAppSelector((state) => state.context.device); const [railPickerVisible, setRailPickerVisible] = useState(false); const [railId, setRailId] = useState<(number | string | null)[]>([]); const canvasRef = useRef(null); @@ -54,6 +55,8 @@ export default function Measure() { } } + + // 检查轨型有没有坐标,如果有,绘制轨型基准线,如果没,拉取再绘制其线 useEffect(() => { if (railId.length > 0) { @@ -137,6 +140,20 @@ export default function Measure() { const [initStart, setInitStart] = useState(false); const [measurementCanvasKey, setMeasurementCanvasKey] = useState(0); + + useEffect(() => { + if (!device.connected) { + setState({ + left_ready: 'none', + right_ready: 'none', + left_begin: 'none', + right_begin: 'none', + left_end: 'none', + right_end: 'none', + }) + setMeasurementCanvasKey(measurementCanvasKey + 1) + } + }, [device, measurementCanvasKey]); const onStartClick = () => { setMeasurementCanvasKey(measurementCanvasKey+1) setshowCalibration(false); From f4441ed2f1e9d3de50e33aff74dafa688f7aa303 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Sun, 8 Jun 2025 20:55:44 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=E8=93=9D=E7=89=99=E6=96=AD=E5=BC=80?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=E4=B8=8D=E9=87=8D=E7=BD=AE=E6=89=80=E6=9C=89?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Measure.tsx | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/pages/Measure.tsx b/src/pages/Measure.tsx index 290aa64..ae9523f 100644 --- a/src/pages/Measure.tsx +++ b/src/pages/Measure.tsx @@ -141,19 +141,17 @@ export default function Measure() { const [measurementCanvasKey, setMeasurementCanvasKey] = useState(0); - useEffect(() => { - if (!device.connected) { - setState({ - left_ready: 'none', - right_ready: 'none', - left_begin: 'none', - right_begin: 'none', - left_end: 'none', - right_end: 'none', - }) - setMeasurementCanvasKey(measurementCanvasKey + 1) - } - }, [device, measurementCanvasKey]); + + const [state, setState] = useState({ + left_ready: 'none', + right_ready: 'none', + left_begin: 'none', + right_begin: 'none', + left_end: 'none', + right_end: 'none', + }); + + const onStartClick = () => { setMeasurementCanvasKey(measurementCanvasKey+1) setshowCalibration(false); @@ -220,14 +218,6 @@ export default function Measure() { } }; - const [state, setState] = useState({ - left_ready: 'none', - right_ready: 'none', - left_begin: 'none', - right_begin: 'none', - left_end: 'none', - right_end: 'none', - }); const [status, setStatus] = useState(0) useEffect(() => { console.log(measureState.taskState)