diff --git a/frontend/src/renderer/src/views/Recording.vue b/frontend/src/renderer/src/views/Recording.vue index 2085f31d..a28ee8e0 100644 --- a/frontend/src/renderer/src/views/Recording.vue +++ b/frontend/src/renderer/src/views/Recording.vue @@ -1473,6 +1473,7 @@ onUnmounted(() => { :deep(.el-input__inner) { color: #fff; + font-size: 16px; } :deep(.el-textarea__inner) { From 6836904272eb60892c450425d43be5e0aec54be7 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Tue, 19 Aug 2025 15:31:59 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/renderer/src/views/Detection.vue | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/frontend/src/renderer/src/views/Detection.vue b/frontend/src/renderer/src/views/Detection.vue index 7544c5d3..793b190d 100644 --- a/frontend/src/renderer/src/views/Detection.vue +++ b/frontend/src/renderer/src/views/Detection.vue @@ -491,12 +491,6 @@
- -
足部相机
@@ -513,6 +507,9 @@ + + + From 230a0503fd39369b109cd7cdce7e45d944d8edbf Mon Sep 17 00:00:00 2001 From: root <13910913995@163.com> Date: Tue, 19 Aug 2025 15:37:56 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=82=E6=95=B0=E4=BF=AE=E6=94=B9=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app.spec | 4 +- backend/devices/config_api.py | 32 +++++++++++ backend/devices/utils/config_manager.py | 72 ++++++++++++++++++++++++- backend/main.py | 70 +++++++++++++++--------- 4 files changed, 150 insertions(+), 28 deletions(-) diff --git a/backend/app.spec b/backend/app.spec index 9d7bb7fe..3112d45f 100644 --- a/backend/app.spec +++ b/backend/app.spec @@ -14,8 +14,8 @@ a = Analysis( ('dll/femtobolt/bin/ob_usb.dll', 'dll/femtobolt/bin'), # Orbbec USB库 ('dll/femtobolt/bin/live555.dll', 'dll/femtobolt/bin'), # Live555库 ('dll/femtobolt/bin/OrbbecSDKConfig_v1.0.xml', 'dll/femtobolt/bin'), # Orbbec配置文件 ('dll/smitsense/SMiTSenseUsb-F3.0.dll', 'dll/smitsense'), # SMiTSense传感器库 - ('dll/smitsense/Wrapper.dll', 'dll/smitsense'), # Wrapper - ('dll/smitsense/SMiTSenseUsb-F3.0.dll', 'dll/smitsense'), # Wrapper + ('dll/smitsense/SMiTSenseUsb-F3.0.dll', 'dll/smitsense'), # SMiTSenseUsb库 + ('dll/smitsense/Wrapper.dll', 'dll/smitsense'), # SMiTSense传感器库包装类 ], hiddenimports=[ 'flask', diff --git a/backend/devices/config_api.py b/backend/devices/config_api.py index 9215b88b..6fb334c4 100644 --- a/backend/devices/config_api.py +++ b/backend/devices/config_api.py @@ -179,6 +179,38 @@ class ConfigAPI: 'message': f'设置FemtoBolt配置失败: {str(e)}' }), 500 + # 批量设置所有设备配置 + @self.app.route('/api/config/devices/all', methods=['POST']) + def set_all_device_configs(): + """批量设置所有设备配置""" + try: + data = request.get_json() + if not data: + return jsonify({ + 'success': False, + 'message': '请求数据不能为空' + }), 400 + + # 验证数据格式 + supported_devices = ['imu', 'pressure', 'camera', 'femtobolt'] + for device_name in data.keys(): + if device_name not in supported_devices: + return jsonify({ + 'success': False, + 'message': f'不支持的设备类型: {device_name},支持的设备类型: {", ".join(supported_devices)}' + }), 400 + + result = self.config_manager.set_all_device_configs(data) + status_code = 200 if result['success'] else 400 + return jsonify(result), status_code + + except Exception as e: + self.logger.error(f"批量设置设备配置失败: {e}") + return jsonify({ + 'success': False, + 'message': f'批量设置设备配置失败: {str(e)}' + }), 500 + # 重新加载配置 @self.app.route('/api/config/reload', methods=['POST']) def reload_config(): diff --git a/backend/devices/utils/config_manager.py b/backend/devices/utils/config_manager.py index fef59656..84f5ea69 100644 --- a/backend/devices/utils/config_manager.py +++ b/backend/devices/utils/config_manager.py @@ -528,4 +528,74 @@ class ConfigManager: 'pressure': self.get_device_config('pressure'), 'camera': self.get_device_config('camera'), 'femtobolt': self.get_device_config('femtobolt') - } \ No newline at end of file + } + + def set_all_device_configs(self, configs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + 批量设置所有设备配置 + + Args: + configs: 所有设备配置数据 + { + 'imu': {'device_type': 'real', 'port': 'COM7', 'baudrate': 9600}, + 'pressure': {'device_type': 'real', 'port': 'COM8', 'baudrate': 115200}, + 'camera': {'device_index': 0, 'width': 1280, 'height': 720, 'fps': 30}, + 'femtobolt': {'color_resolution': '1080P', 'depth_mode': 'NFOV_UNBINNED', 'fps': 15} + } + + Returns: + Dict[str, Any]: 设置结果 + """ + try: + results = {} + errors = [] + + # 逐个设置每个设备的配置 + if 'imu' in configs: + result = self.set_imu_config(configs['imu']) + results['imu'] = result + if not result['success']: + errors.append(f"IMU: {result['message']}") + + if 'pressure' in configs: + result = self.set_pressure_config(configs['pressure']) + results['pressure'] = result + if not result['success']: + errors.append(f"压力板: {result['message']}") + + if 'camera' in configs: + result = self.set_camera_config(configs['camera']) + results['camera'] = result + if not result['success']: + errors.append(f"相机: {result['message']}") + + if 'femtobolt' in configs: + result = self.set_femtobolt_config(configs['femtobolt']) + results['femtobolt'] = result + if not result['success']: + errors.append(f"FemtoBolt: {result['message']}") + + # 如果有错误,返回部分成功的结果 + if errors: + self.logger.warning(f"部分设备配置设置失败: {'; '.join(errors)}") + return { + 'success': False, + 'message': f'部分设备配置设置失败: {"; ".join(errors)}', + 'results': results, + 'updated_configs': self.get_all_device_configs() + } + else: + self.logger.info("所有设备配置设置成功") + return { + 'success': True, + 'message': '所有设备配置设置成功', + 'results': results, + 'updated_configs': self.get_all_device_configs() + } + + except Exception as e: + self.logger.error(f"批量设置设备配置失败: {e}") + return { + 'success': False, + 'message': f'批量设置设备配置失败: {str(e)}' + } \ No newline at end of file diff --git a/backend/main.py b/backend/main.py index 8f7a4155..48e355fb 100644 --- a/backend/main.py +++ b/backend/main.py @@ -205,9 +205,9 @@ class AppServer: self.logger.info('正在初始化设备管理器...') self.device_managers = { 'camera': CameraManager(self.socketio, self.config_manager), - # 'femtobolt': FemtoBoltManager(self.socketio, self.config_manager), - # 'imu': IMUManager(self.socketio, self.config_manager), - # 'pressure': PressureManager(self.socketio, self.config_manager) + 'femtobolt': FemtoBoltManager(self.socketio, self.config_manager), + 'imu': IMUManager(self.socketio, self.config_manager), + 'pressure': PressureManager(self.socketio, self.config_manager) } # 为每个设备添加状态变化回调 @@ -223,9 +223,9 @@ class AppServer: self.logger.info('设备协调器初始化完成') # 启动Flask应用 - host = app_config.get('host', self.host) - port = app_config.get('port', self.port) - debug = app_config.get('debug', self.debug) + host = self.host + port = self.port + debug = self.debug self.logger.info(f'启动Flask应用 - Host: {host}, Port: {port}, Debug: {debug}') @@ -559,15 +559,25 @@ class AppServer: if not data.get(field): return jsonify({'success': False, 'error': f'{field}不能为空'}), 400 - patient_id = self.db_manager.create_patient( - name=data['name'], - gender=data['gender'], - age=data['age'], - height=data.get('height'), - weight=data.get('weight'), - medical_history=data.get('medical_history', ''), - notes=data.get('notes', '') - ) + patient_data = { + 'name': data['name'], + 'gender': data['gender'], + 'age': data['age'], + 'birth_date': data.get('birth_date'), + 'nationality': data.get('nationality'), + 'residence': data.get('residence'), + 'height': data.get('height'), + 'weight': data.get('weight'), + 'shoe_size': data.get('shoe_size'), + 'phone': data.get('phone'), + 'email': data.get('email'), + 'occupation': data.get('occupation'), + 'workplace': data.get('workplace'), + 'medical_history': data.get('medical_history', ''), + 'notes': data.get('notes', '') + } + + patient_id = self.db_manager.create_patient(patient_data) if patient_id: return jsonify({ @@ -603,16 +613,26 @@ class AppServer: try: data = flask_request.get_json() - result = self.db_manager.update_patient( - patient_id=patient_id, - name=data.get('name'), - gender=data.get('gender'), - age=data.get('age'), - height=data.get('height'), - weight=data.get('weight'), - medical_history=data.get('medical_history'), - notes=data.get('notes') - ) + patient_data = { + 'name': data.get('name'), + 'gender': data.get('gender'), + 'age': data.get('age'), + 'birth_date': data.get('birth_date'), + 'nationality': data.get('nationality'), + 'residence': data.get('residence'), + 'height': data.get('height'), + 'weight': data.get('weight'), + 'shoe_size': data.get('shoe_size'), + 'phone': data.get('phone'), + 'email': data.get('email'), + 'occupation': data.get('occupation'), + 'workplace': data.get('workplace'), + 'medical_history': data.get('medical_history'), + 'notes': data.get('notes') + } + + self.db_manager.update_patient(patient_id, patient_data) + result = True if result: return jsonify({'success': True, 'message': '患者信息更新成功'}) From e97a5723d01d2788b391f6597ab4ffadeb5170f6 Mon Sep 17 00:00:00 2001 From: root <13910913995@163.com> Date: Tue, 19 Aug 2025 15:58:49 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=98=E6=9B=B4=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/devices/config_api.py | 274 ------------------------------- backend/devices/utils/config.ini | 4 +- backend/main.py | 73 ++++++++ 3 files changed, 75 insertions(+), 276 deletions(-) delete mode 100644 backend/devices/config_api.py diff --git a/backend/devices/config_api.py b/backend/devices/config_api.py deleted file mode 100644 index 6fb334c4..00000000 --- a/backend/devices/config_api.py +++ /dev/null @@ -1,274 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -设备配置HTTP API接口 -提供通过HTTP方式设置设备参数的功能 -""" - -import json -import logging -import sys -import os -from flask import Flask, request, jsonify -from typing import Dict, Any - -# 添加路径以支持导入 -sys.path.append(os.path.dirname(os.path.abspath(__file__))) -from utils.config_manager import ConfigManager - - -class ConfigAPI: - """配置API类""" - - def __init__(self, app: Flask = None): - """ - 初始化配置API - - Args: - app: Flask应用实例 - """ - self.logger = logging.getLogger(f"{__name__}.ConfigAPI") - self.config_manager = ConfigManager() - - if app: - self.init_app(app) - - def init_app(self, app: Flask): - """ - 初始化Flask应用 - - Args: - app: Flask应用实例 - """ - self.app = app - self._register_routes() - - def _register_routes(self): - """ - 注册路由 - """ - # 获取所有设备配置 - @self.app.route('/api/config/devices', methods=['GET']) - def get_all_device_configs(): - """获取所有设备配置""" - try: - configs = self.config_manager.get_all_device_configs() - return jsonify({ - 'success': True, - 'data': configs - }) - except Exception as e: - self.logger.error(f"获取设备配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'获取设备配置失败: {str(e)}' - }), 500 - - # 获取单个设备配置 - @self.app.route('/api/config/devices/', methods=['GET']) - def get_device_config(device_name: str): - """获取单个设备配置""" - try: - if device_name not in ['imu', 'pressure', 'camera', 'femtobolt']: - return jsonify({ - 'success': False, - 'message': f'不支持的设备类型: {device_name}' - }), 400 - - config = self.config_manager.get_device_config(device_name) - return jsonify({ - 'success': True, - 'data': config - }) - except Exception as e: - self.logger.error(f"获取{device_name}配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'获取{device_name}配置失败: {str(e)}' - }), 500 - - # 设置IMU配置 - @self.app.route('/api/config/devices/imu', methods=['POST']) - def set_imu_config(): - """设置IMU配置""" - try: - data = request.get_json() - if not data: - return jsonify({ - 'success': False, - 'message': '请求数据不能为空' - }), 400 - - result = self.config_manager.set_imu_config(data) - status_code = 200 if result['success'] else 400 - return jsonify(result), status_code - - except Exception as e: - self.logger.error(f"设置IMU配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'设置IMU配置失败: {str(e)}' - }), 500 - - # 设置压力板配置 - @self.app.route('/api/config/devices/pressure', methods=['POST']) - def set_pressure_config(): - """设置压力板配置""" - try: - data = request.get_json() - if not data: - return jsonify({ - 'success': False, - 'message': '请求数据不能为空' - }), 400 - - result = self.config_manager.set_pressure_config(data) - status_code = 200 if result['success'] else 400 - return jsonify(result), status_code - - except Exception as e: - self.logger.error(f"设置压力板配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'设置压力板配置失败: {str(e)}' - }), 500 - - # 设置相机配置 - @self.app.route('/api/config/devices/camera', methods=['POST']) - def set_camera_config(): - """设置相机配置""" - try: - data = request.get_json() - if not data: - return jsonify({ - 'success': False, - 'message': '请求数据不能为空' - }), 400 - - result = self.config_manager.set_camera_config(data) - status_code = 200 if result['success'] else 400 - return jsonify(result), status_code - - except Exception as e: - self.logger.error(f"设置相机配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'设置相机配置失败: {str(e)}' - }), 500 - - # 设置FemtoBolt配置 - @self.app.route('/api/config/devices/femtobolt', methods=['POST']) - def set_femtobolt_config(): - """设置FemtoBolt配置""" - try: - data = request.get_json() - if not data: - return jsonify({ - 'success': False, - 'message': '请求数据不能为空' - }), 400 - - result = self.config_manager.set_femtobolt_config(data) - status_code = 200 if result['success'] else 400 - return jsonify(result), status_code - - except Exception as e: - self.logger.error(f"设置FemtoBolt配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'设置FemtoBolt配置失败: {str(e)}' - }), 500 - - # 批量设置所有设备配置 - @self.app.route('/api/config/devices/all', methods=['POST']) - def set_all_device_configs(): - """批量设置所有设备配置""" - try: - data = request.get_json() - if not data: - return jsonify({ - 'success': False, - 'message': '请求数据不能为空' - }), 400 - - # 验证数据格式 - supported_devices = ['imu', 'pressure', 'camera', 'femtobolt'] - for device_name in data.keys(): - if device_name not in supported_devices: - return jsonify({ - 'success': False, - 'message': f'不支持的设备类型: {device_name},支持的设备类型: {", ".join(supported_devices)}' - }), 400 - - result = self.config_manager.set_all_device_configs(data) - status_code = 200 if result['success'] else 400 - return jsonify(result), status_code - - except Exception as e: - self.logger.error(f"批量设置设备配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'批量设置设备配置失败: {str(e)}' - }), 500 - - # 重新加载配置 - @self.app.route('/api/config/reload', methods=['POST']) - def reload_config(): - """重新加载配置""" - try: - self.config_manager.reload_config() - return jsonify({ - 'success': True, - 'message': '配置重新加载成功' - }) - except Exception as e: - self.logger.error(f"重新加载配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'重新加载配置失败: {str(e)}' - }), 500 - - # 验证配置 - @self.app.route('/api/config/validate', methods=['GET']) - def validate_config(): - """验证配置""" - try: - result = self.config_manager.validate_config() - return jsonify({ - 'success': True, - 'data': result - }) - except Exception as e: - self.logger.error(f"验证配置失败: {e}") - return jsonify({ - 'success': False, - 'message': f'验证配置失败: {str(e)}' - }), 500 - - -# 创建独立的Flask应用用于测试 -def create_config_app(): - """ - 创建配置API应用 - - Returns: - Flask: Flask应用实例 - """ - app = Flask(__name__) - - # 配置日志 - logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' - ) - - # 初始化配置API - config_api = ConfigAPI(app) - - return app - - -if __name__ == '__main__': - # 创建并运行应用 - app = create_config_app() - app.run(host='0.0.0.0', port=5002, debug=True) \ No newline at end of file diff --git a/backend/devices/utils/config.ini b/backend/devices/utils/config.ini index 4e1df162..71c7e20d 100644 --- a/backend/devices/utils/config.ini +++ b/backend/devices/utils/config.ini @@ -29,8 +29,8 @@ depth_range_max = 1700 [DEVICES] imu_device_type = real -imu_port = COM7 -imu_baudrate = 9600 +imu_port = COM3 +imu_baudrate = 115200 pressure_device_type = real pressure_use_mock = False pressure_port = COM5 diff --git a/backend/main.py b/backend/main.py index 48e355fb..a62a49be 100644 --- a/backend/main.py +++ b/backend/main.py @@ -686,6 +686,79 @@ class AppServer: self.logger.error(f'刷新设备失败: {e}') return jsonify({'success': False, 'error': str(e)}), 500 + # ==================== 设备配置API ==================== + + @self.app.route('/api/config/devices', methods=['GET']) + def get_all_device_configs(): + """获取所有设备配置""" + try: + if self.config_manager: + configs = self.config_manager.get_all_device_configs() + return jsonify({ + 'success': True, + 'data': configs + }) + else: + return jsonify({'success': False, 'error': '配置管理器未初始化'}), 500 + except Exception as e: + self.logger.error(f"获取设备配置失败: {e}") + return jsonify({ + 'success': False, + 'message': f'获取设备配置失败: {str(e)}' + }), 500 + + @self.app.route('/api/config/devices/all', methods=['POST']) + def set_all_device_configs(): + """批量设置所有设备配置""" + try: + if not self.config_manager: + return jsonify({'success': False, 'error': '配置管理器未初始化'}), 500 + + data = flask_request.get_json() + if not data: + return jsonify({ + 'success': False, + 'message': '请求数据不能为空' + }), 400 + + # 验证数据格式 + supported_devices = ['imu', 'pressure', 'camera', 'femtobolt'] + for device_name in data.keys(): + if device_name not in supported_devices: + return jsonify({ + 'success': False, + 'message': f'不支持的设备类型: {device_name},支持的设备类型: {", ".join(supported_devices)}' + }), 400 + + result = self.config_manager.set_all_device_configs(data) + + # 如果配置设置成功,重启设备数据推送 + if result['success']: + try: + self.logger.info("设备配置更新成功,重启设备数据推送...") + # 先停止当前的数据推送 + if self.is_pushing_data: + self.stop_device_push_data() + time.sleep(1) # 等待停止完成 + + # 重新启动设备数据推送 + self.start_device_push_data() + result['message'] = result.get('message', '') + ' 设备已重启数据推送。' + self.logger.info("设备配置更新并重启数据推送完成") + except Exception as restart_error: + self.logger.error(f"重启设备数据推送失败: {restart_error}") + result['message'] = result.get('message', '') + f' 但重启设备数据推送失败: {str(restart_error)}' + + status_code = 200 if result['success'] else 400 + return jsonify(result), status_code + + except Exception as e: + self.logger.error(f"批量设置设备配置失败: {e}") + return jsonify({ + 'success': False, + 'message': f'批量设置设备配置失败: {str(e)}' + }), 500 + @self.app.route('/api/devices/calibrate', methods=['POST']) def calibrate_device(): """校准设备""" From 004e32b63dbb79c82b52956d85f392c52d3f03e9 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Tue, 19 Aug 2025 16:35:14 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=BF=98=E8=AE=B0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E6=96=B9=E6=B3=95bug=EF=BC=8C=E7=BC=96=E8=BE=91=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA=E5=8F=82=E6=95=B0=E6=96=B9=E6=B3=95=EF=BC=8C=E9=A1=B5?= =?UTF-8?q?=E5=A4=B4=E5=9B=BE=E6=A0=87=E5=92=8C=E7=94=A8=E6=88=B7=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/renderer/src/assets/svg/avatar.svg | 1 + frontend/src/renderer/src/services/api.js | 2 +- frontend/src/renderer/src/views/Dashboard.vue | 2 +- frontend/src/renderer/src/views/Detection.vue | 103 +++++++++++++----- frontend/src/renderer/src/views/Header.vue | 7 +- frontend/src/renderer/src/views/Login.vue | 5 +- 6 files changed, 83 insertions(+), 37 deletions(-) create mode 100644 frontend/src/renderer/src/assets/svg/avatar.svg diff --git a/frontend/src/renderer/src/assets/svg/avatar.svg b/frontend/src/renderer/src/assets/svg/avatar.svg new file mode 100644 index 00000000..7d6550a6 --- /dev/null +++ b/frontend/src/renderer/src/assets/svg/avatar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/renderer/src/services/api.js b/frontend/src/renderer/src/services/api.js index 8f00445b..c0070b67 100644 --- a/frontend/src/renderer/src/services/api.js +++ b/frontend/src/renderer/src/services/api.js @@ -607,7 +607,7 @@ export const getBackendUrl = () => { if (window.electronAPI) { return window.electronAPI.getBackendUrl() } else { - return 'http://localhost:5000' + return 'http://192.168.1.58:5000' } } diff --git a/frontend/src/renderer/src/views/Dashboard.vue b/frontend/src/renderer/src/views/Dashboard.vue index 77de7db6..a992a941 100644 --- a/frontend/src/renderer/src/views/Dashboard.vue +++ b/frontend/src/renderer/src/views/Dashboard.vue @@ -62,7 +62,7 @@
基础信息
- + diff --git a/frontend/src/renderer/src/views/Detection.vue b/frontend/src/renderer/src/views/Detection.vue index 793b190d..7ac8b691 100644 --- a/frontend/src/renderer/src/views/Detection.vue +++ b/frontend/src/renderer/src/views/Detection.vue @@ -12,7 +12,7 @@ 实时检测