瀏覽代碼

refactor(frontend): 重构设备配置相关功能

- 修改拍照、翻转等选项的标签值为数字类型
- 优化设备配置详情获取和保存逻辑
- 添加新的 API 接口用于获取设备配置详情和保存配置
-根据 appModel 条件显示相机配置和左右脚程序设置选项
panqiuyao 3 月之前
父節點
當前提交
0e7a5d5b51

+ 21 - 1
frontend/src/apis/setting.ts

@@ -7,7 +7,7 @@ export async function getAllUserConfigs(data){
 }
 
 
-//获取配置
+//更新配置
 export async function setAllUserConfigs(data){
     return POST('/api/ai_image/camera_machine/update_all_user_configs',data)
 
@@ -58,3 +58,23 @@ export async function delDviceConfig(data){
 
 
 
+//获取设备配置详情
+export async function getDeviceConfigDetail(data){
+    return GET('/api/ai_image/camera_machine/device_config_detail',data)
+
+}
+
+//根据条件查询可执行程序-单条
+export async function getDeviceConfigDetailQuery(data){
+    return GET('/api/ai_image/camera_machine/device_config_detail_query',data)
+
+}
+
+
+
+//创建或者保存动作
+export async function saveDeviceConfig(data){
+    return POST('/api/ai_image/camera_machine/save_device_config',data)
+
+}
+

+ 36 - 38
frontend/src/views/Photography/components/editRow.vue

@@ -9,8 +9,8 @@
       </el-form-item>
       <el-form-item label="是否拍照" v-if="!editRowData.is_system">
         <el-radio-group v-model="editRowData.take_picture">
-          <el-radio :label="true">拍照</el-radio>
-          <el-radio :label="false">不拍照</el-radio>
+          <el-radio :label="1">拍照</el-radio>
+          <el-radio :label="0">不拍照</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item label="相机高度(mm)">
@@ -36,16 +36,16 @@
       <el-form-item label="鞋子翻转">
         <div class="flex-row">
           <el-radio-group v-model="editRowData.shoe_upturn">
-            <el-radio :label="true">翻转</el-radio>
-            <el-radio :label="false">不翻转</el-radio>
+            <el-radio :label="1">翻转</el-radio>
+            <el-radio :label="0">不翻转</el-radio>
           </el-radio-group>
           <a class="cursor-pointer" @click="changeNum('overturn_steering')" v-log="{ describe: { action: '点击测试翻转' } }">测试翻转</a>
         </div>
       </el-form-item>
       <el-form-item label="LED灯光开光" @change="changeNum('laser_position')">
         <el-radio-group v-model="editRowData.led_switch">
-          <el-radio :label="false">关闭</el-radio>
-          <el-radio :label="true">开启</el-radio>
+          <el-radio :label="0">关闭</el-radio>
+          <el-radio :label="1">开启</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item label="对焦次数">
@@ -78,6 +78,7 @@ import { ref, defineProps, defineEmits , watch, onMounted } from 'vue'
 import icpList from '@/utils/ipc';
 import { digiCamControlWEB } from  '@/utils/appconfig'
 import {ElMessage} from "element-plus";
+import  { getDeviceConfigDetail,getDeviceConfigDetailQuery,saveDeviceConfig } from '@/apis/setting'
 import client from "@/stores/modules/client";
 const clientStore = client();
 import socket from "@/stores/modules/socket";
@@ -100,7 +101,7 @@ const props = defineProps({
 const initStatus = ref(false)
 const isDefault = ref(true); // 是否为默认配置
 const editRowData = ref({}); // 当前编辑行的数据
-onMounted(()=>{
+onMounted(async ()=>{
   console.log('editrow')
   if(props.addRowData.mode_type){
     console.log(props.addRowData);
@@ -109,29 +110,27 @@ onMounted(()=>{
     testShoesFlip()
     return
   }
+  let fun = getDeviceConfigDetail;
   let params = {
     id: props.id
   }
-  if(!props.id) params = {
-    mode_type:"执行左脚程序",
-    action_name:"侧视",
+  if(!props.id){
+    params = {
+      mode_type:"执行左脚程序",
+      action_name:"侧视",
+    }
+    fun =  getDeviceConfigDetailQuery
   }
-  clientStore.ipc.removeAllListeners(icpList.setting.getDeviceConfigDetail);
-  clientStore.ipc.send(icpList.setting.getDeviceConfigDetail, params);
-  clientStore.ipc.on(icpList.setting.getDeviceConfigDetail, (event, result) => {
 
-    console.log('getDeviceConfigDetail')
-    console.log(result)
-    if(result.code == 0 && result.data){
 
-      editRowData.value = result.data;
-      clientStore.ipc.removeAllListeners(icpList.setting.getDeviceConfigDetail);
-      initStatus.value = true;
-      testShoesFlip()
-    }else if(result.msg){
-      ElMessage.error(result.msg)
-    }
-  });
+
+  const result = await fun(params)
+
+  if(result.code == 0 && result.data){
+    editRowData.value = result.data;
+    initStatus.value = true;
+    testShoesFlip()
+  }
 
 })
 
@@ -222,25 +221,24 @@ const close = ()=>{
 /**
  * 保存当前编辑的配置。
  */
-const saveRow = () => {
+const saveRow = async () => {
+
   if(!editRowData.value.action_name){
     ElMessage.error('请输入动作名称')
     return;
   }
-  clientStore.ipc.send(icpList.setting.saveDeviceConfig, {
+
+  const result = await  saveDeviceConfig({
     ...editRowData.value
-  });
-  clientStore.ipc.on(icpList.setting.saveDeviceConfig, (event, result) => {
-    console.log('saveDeviceConfig');
-    console.log(editRowData.value);
-    if (result.code == 0) {
-      emit('confirm')
-      ElMessage.success('保存成功');
-      clientStore.ipc.removeAllListeners(icpList.setting.saveDeviceConfig);
-    } else {
-      ElMessage.error('保存失败');
-    }
-  });
+  })
+  if (result.code == 0) {
+    emit('confirm')
+    ElMessage.success('保存成功');
+    clientStore.ipc.removeAllListeners(icpList.setting.saveDeviceConfig);
+  }
+
+
+
 };
 
 // 暴露给父组件

+ 2 - 2
frontend/src/views/Setting/index.vue

@@ -10,7 +10,7 @@
         <img src="@/assets/images/setting/icon1a.png" class="nav-icon" v-else/>
         <span>基础配置</span>
       </div>
-      <div class="nav-item" :class="{'active': activeIndex === 3}" @click="toggleTab(3)" v-log="{ describe: { action: '点击切换设置Tab', tab: '相机配置' } }">
+      <div class="nav-item" v-if="configInfoStore.appModel === 1" :class="{'active': activeIndex === 3}" @click="toggleTab(3)" v-log="{ describe: { action: '点击切换设置Tab', tab: '相机配置' } }">
         <img src="@/assets/images/setting/icon2.png" class="nav-icon" v-if="activeIndex !== 3"/>
         <img src="@/assets/images/setting/icon2a.png" class="nav-icon" v-else/>
         <span>相机配置</span>
@@ -20,7 +20,7 @@
         <img src="@/assets/images/setting/icon3a.png" class="nav-icon" v-else/>
         <span>其他设置</span>
       </div>
-      <div class="nav-item"  :class="{'active': activeIndex === 4}"  @click="toggleTab(4)" v-log="{ describe: { action: '点击切换设置Tab', tab: '左右脚程序设置' } }">
+      <div class="nav-item" v-if="configInfoStore.appModel === 1"  :class="{'active': activeIndex === 4}"  @click="toggleTab(4)" v-log="{ describe: { action: '点击切换设置Tab', tab: '左右脚程序设置' } }">
         <img src="@/assets/images/setting/icon4.png" class="nav-icon" v-if="activeIndex !== 4"/>
         <img src="@/assets/images/setting/icon4a.png" class="nav-icon" v-else/>
         <span>左右脚程序设置</span>