From 881d5edcef19ed992351baf3643d62e04a79ca42 Mon Sep 17 00:00:00 2001 From: cles <208023732@qq.com> Date: Fri, 5 Sep 2025 10:03:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E9=80=BB=E8=BE=91=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?IP=E5=9C=B0=E5=9D=80=E6=A0=BC=E5=BC=8F=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=92=8C=E8=AE=BE=E5=A4=87=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - .../MeasurementPointSetting.jsx | 58 +++++++++++++------ .../components/SiderHeader/SiderHeader.jsx | 40 +++++++++---- 3 files changed, 70 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 10166ef..61da68a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ > 基于 Electron + React + Vite 开发的传感器监测应用程序 -![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg) ![Version](https://img.shields.io/badge/version-1.0.0-green.svg) diff --git a/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx b/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx index 3d9600d..9a76014 100644 --- a/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx +++ b/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx @@ -10,7 +10,7 @@ import { } from '@ant-design/icons' import useRectangleStore from '../../stores/rectangleStore' import useDeviceStore from '../../stores/deviceStore' -import { useState } from 'react' +import { useState, useMemo } from 'react' import { IPC_EVENT } from '../../common/ipcEvents' function MeasurementPointSetting() { @@ -25,10 +25,29 @@ function MeasurementPointSetting() { const [formData, setFormData] = useState({ location: 1, // 测点位置 description: '', // 测点描述 - coefficient: 0, // 计算系数 baseTarget: 'n' // 基准标靶 }) + // 系数计算相关状态 + const [lensDistance, setLensDistance] = useState(50) // 镜头焦距 + const [measureDistance, setMeasureDistance] = useState(10) // 测点距离 + + // 计算系数函数 + const calculateCoefficient = (measureDist, lensDist) => { + if (!lensDist || lensDist <= 0) return 0 + return Number(((measureDist / lensDist) * 2.24).toFixed(6)) + } + + // 处理镜头焦距变化 + const handleLensDistanceChange = (value) => { + setLensDistance(value) + } + + // 处理测点距离变化 + const handleMeasureDistanceChange = (value) => { + setMeasureDistance(value) + } + // 测点列表状态 const [sensorList, setSensorList] = useState([]) @@ -39,6 +58,11 @@ function MeasurementPointSetting() { const [loadingSensors, setLoadingSensors] = useState(false) const [settingSensors, setSettingSensors] = useState(false) + // 使用useMemo计算系数,当镜头焦距或测点距离变化时自动重新计算 + const calculatedCoefficient = useMemo(() => { + return calculateCoefficient(measureDistance, lensDistance) + }, [measureDistance, lensDistance]) + // 根据选中的传感器更新矩形数据 const updateRectangleFromSensor = (sensorKey) => { if (!sensorKey) { @@ -110,7 +134,7 @@ function MeasurementPointSetting() { children: [ { key: `${newSensorKey}-1`, name: '测点位置', value: formData.location }, { key: `${newSensorKey}-2`, name: '测点描述', value: formData.description }, - { key: `${newSensorKey}-3`, name: '计算系数', value: formData.coefficient }, + { key: `${newSensorKey}-3`, name: '计算系数', value: calculatedCoefficient }, { key: `${newSensorKey}-4`, name: '基准标靶', @@ -132,7 +156,6 @@ function MeasurementPointSetting() { setFormData((prev) => ({ location: prev.location + 1, // 自动递增位置 description: '', - coefficient: 0, baseTarget: 'n' })) } @@ -416,10 +439,10 @@ function MeasurementPointSetting() { 计算系数: handleFormChange('coefficient', value)} - precision={4} - style={{ flex: 1 }} + value={calculatedCoefficient} + readOnly + precision={6} + style={{ flex: 1, backgroundColor: '#f5f5f5' }} /> @@ -486,15 +509,15 @@ function MeasurementPointSetting() { 镜头焦距: - { + setSelectedDevice(value) + }} + onSelect={(value) => { + setSelectedDevice(value) + }} style={{ minWidth: 120, flex: 1 }} - notFoundContent={searching ? : '无设备'} disabled={searching || uiDisabled} + allowClear + filterOption={(inputValue, option) => + option?.value?.toLowerCase().indexOf(inputValue.toLowerCase()) !== -1 + } /> + - 设备端口: + 设备端口: +