Browse Source

fix:增加电量低提示; 缩放重置;测量记录序号补0

master
guoapeng 2 months ago
parent
commit
9c38349cde
  1. 15
      src/components/CustomNavBar.tsx
  2. 5
      src/components/MeasurementItem.tsx
  3. 4
      src/components/konva/MeasurementCanvas.tsx
  4. 4
      src/pages/Measure.tsx
  5. 15
      src/pages/Setting.tsx
  6. 2
      src/store/features/contextSlice.ts

15
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 icon_arr_d from '../assets/icon_arr_down.svg';
import power_icon from '../assets/power.svg'; import power_icon from '../assets/power.svg';
import './CustomNavBar.scss'; import './CustomNavBar.scss';
import { useState } from 'react';
import {useEffect, useRef, useState} from 'react';
import { useAppSelector } from '../utils/hooks'; import { useAppSelector } from '../utils/hooks';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import {Dialog} from "antd-mobile";
export default function CustomNavBar({ title }: { title: string }) { export default function CustomNavBar({ title }: { title: string }) {
const navigate = useNavigate(); const navigate = useNavigate();
const device = useAppSelector((state) => state.context.device); const device = useAppSelector((state) => state.context.device);
const [showDetail, setShowDetail] = useState(false); 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 ( return (
<div className="relative bg-white h-[--navBarHeight] border-b border-[#D8D8D8]"> <div className="relative bg-white h-[--navBarHeight] border-b border-[#D8D8D8]">
{/** 温度,水平仪 */} {/** 温度,水平仪 */}

5
src/components/MeasurementItem.tsx

@ -16,6 +16,9 @@ export default function MeasurementItem({
onDetail?: () => void; onDetail?: () => void;
onSelected?: () => void; onSelected?: () => void;
}) { }) {
const padNumber = (num: string, length: number = 4): string => {
return num.toString().padStart(length, '0');
}
return ( return (
<div className="flex mx-2 gap-3" onClick={editMode ? onSelected : undefined}> <div className="flex mx-2 gap-3" onClick={editMode ? onSelected : undefined}>
{editMode && ( {editMode && (
@ -25,7 +28,7 @@ export default function MeasurementItem({
)} )}
<main className="flex-1"> <main className="flex-1">
<header className="flex items-center gap-2"> <header className="flex items-center gap-2">
<span className="text-sm text-[#606266]">{item.todayNumber}.</span>
<span className="text-sm text-[#606266]">{padNumber(item.todayNumber)}.</span>
<h1 className="text-[15px] font-medium ">{item.name}</h1> <h1 className="text-[15px] font-medium ">{item.name}</h1>
{item.syncStatus === 'finish' && <span className="text-[#04CA17] text-xs"></span>} {item.syncStatus === 'finish' && <span className="text-[#04CA17] text-xs"></span>}
</header> </header>

4
src/components/konva/MeasurementCanvas.tsx

@ -83,6 +83,7 @@ export interface MeasurementCanvasRef {
setMeasurementData: (data: Point[]) => void; setMeasurementData: (data: Point[]) => void;
setAnalysisData: (data: AnalysisData[]) => void; setAnalysisData: (data: AnalysisData[]) => void;
redraw: () => void; redraw: () => void;
setCustomScale: (data: number) => void;
} }
interface PinchData { interface PinchData {
@ -212,6 +213,9 @@ const MeasurementCanvas = forwardRef<MeasurementCanvasRef, MeasurementCanvasProp
origin origin
} }
}, },
setCustomScale: (newScale: number) => {
setScale(newScale);
},
})); }));
const stageRef = useRef<any>(null); const stageRef = useRef<any>(null);

4
src/pages/Measure.tsx

@ -135,7 +135,10 @@ export default function Measure() {
}; };
const [initStart, setInitStart] = useState(false); const [initStart, setInitStart] = useState(false);
const [measurementCanvasKey, setMeasurementCanvasKey] = useState(0);
const onStartClick = () => { const onStartClick = () => {
setMeasurementCanvasKey(measurementCanvasKey+1)
setshowCalibration(false); setshowCalibration(false);
dispatch(updateMeasureData([])); dispatch(updateMeasureData([]));
if (!contextState.device.connected) { if (!contextState.device.connected) {
@ -453,6 +456,7 @@ export default function Measure() {
showCoordinates={false} showCoordinates={false}
showCalibration={showCalibration || showMeasureFinish} showCalibration={showCalibration || showMeasureFinish}
ref={canvasRef} ref={canvasRef}
key={measurementCanvasKey}
/> />
{/**选择轨型区 */} {/**选择轨型区 */}

15
src/pages/Setting.tsx

@ -87,6 +87,21 @@ export default function Setting() {
</div> </div>
</section> </section>
)} )}
{!context.device.connected && (
<section>
<div className="h-[42px] px-5">
<h1 className="h-[42px] leading-[42px] text-base text-text font-medium"></h1>
</div>
<div className="bg-white px-5 text-sm text-text">
<div className="h-12 flex items-center" onClick={() => Toast.show('连接设备后可设置')}>
<span></span>
<span className="ml-auto mr-4">
--
</span>
</div>
</div>
</section>
)}
<div <div
className="btn-contained rounded-md h-12 mx-9 my-8 text-base font-medium" className="btn-contained rounded-md h-12 mx-9 my-8 text-base font-medium"

2
src/store/features/contextSlice.ts

@ -35,7 +35,7 @@ const initialState: ContextState = {
device: { device: {
flag: 0, flag: 0,
connected: true, //是否已连接蓝牙 connected: true, //是否已连接蓝牙
power: 0, //电量
power: 100, //电量
inclinatorX: 0.276, //x轴倾斜 inclinatorX: 0.276, //x轴倾斜
inclinatorY: 3.019, //y轴倾斜 inclinatorY: 3.019, //y轴倾斜
temperature: 32.026, //温度 temperature: 32.026, //温度

Loading…
Cancel
Save