Procházet zdrojové kódy

feat(photography): 动态获取相机高度最大值配置

- 将相机高度最大值从固定350改为动态变量maxCameraHeight
- 添加fetchDeviceInfo函数从后端获取设备信息
- 通过socket消息获取相机高度最大值并更新界面显示
- 修改表单验证范围使用动态最大值
- 在组件挂载时调用设备信息获取功能
panqiuyao před 2 dny
rodič
revize
b7a2a8ef72

+ 1 - 0
electron/utils/socket.js

@@ -10,6 +10,7 @@ const fs = require('fs');
 
 const typeToMessage = {
   run_mcu_single:['seeting','default'],
+  get_device_info:['seeting','default'],
   get_deviation_data:"developer",
   set_deviation:"developer",
   get_mcu_other_info:"developer",

+ 24 - 2
frontend/src/views/Photography/components/editRow.vue

@@ -34,9 +34,9 @@
         </el-radio-group>
       </el-form-item>
       <el-form-item label="相机高度(mm)" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
-        <el-input v-model="editRowData.camera_height" @change="changeNum('camera_high_motor',0, 350)" :min="0" :max="350" :step="1"  style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
+        <el-input v-model="editRowData.camera_height" @change="changeNum('camera_high_motor',0, maxCameraHeight)" :min="0" :max="maxCameraHeight" :step="1"  style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
         </el-input>
-        <div class="error-msg">最小0,最大350</div>
+        <div class="error-msg">最小0,最大{{ maxCameraHeight }}</div>
       </el-form-item>
       <el-form-item label="相机倾角" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
         <el-input v-model="editRowData.camera_angle" :min="-5" :max="30" :step=".1" @change="changeNum('camera_steering',-5, 30)" style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
@@ -157,6 +157,7 @@ const props = defineProps({
 const initStatus = ref(false)
 const isDefault = ref(true); // 是否为默认配置
 const editRowData = ref({}); // 当前编辑行的数据
+const maxCameraHeight = ref(350); // 相机高度最大值,默认350,通过get_device_info从后端获取
 
 // 监听点位变化,切换预览
 watch(() => editRowData.value.point_name, (newPoint, oldPoint) => {
@@ -165,8 +166,29 @@ watch(() => editRowData.value.point_name, (newPoint, oldPoint) => {
   }
 })
 
+/**
+ * 从后端获取设备信息,更新相机高度最大值等参数。
+ */
+async function fetchDeviceInfo() {
+  if (!clientStore.isClient) return;
+  socketStore.sendMessage({
+    type: 'get_device_info',
+    data: 'get_device_info'
+  });
+
+  clientStore.ipc.on(icpList.socket.message + '_get_device_info', (event, result) => {
+    console.log('_get_device_info', result);
+    if (result.code === 0 && result.data?.camera_height) {
+      maxCameraHeight.value = result.data.camera_height;
+    }
+    clientStore.ipc.removeAllListeners(icpList.socket.message + '_get_device_info');
+  });
+}
+
 onMounted(async ()=>{
   console.log('editrow')
+  // 获取设备信息(相机高度最大值等)
+  fetchDeviceInfo();
   // 刷新点位列表
   await refreshPointList()
   if(props.addRowData.mode_type){