Bladeren bron

feat(header): 添加一键回落功能并重构摄影页面菜单结构

- 在头部栏组件中新增一键回落功能配置
- 实现一键回落确认弹窗和socket消息发送逻辑
- 重构摄影页面菜单为设置、快捷操作和高级生成三个一级导航
- 将生成图目录、一键释放、一键回落等功能整合到快捷操作下拉菜单
- 为实体遥控器拍照按钮添加点击日志记录功能
- 优化菜单结构适配不同应用模式下的显示逻辑
panqiuyao 6 dagen geleden
bovenliggende
commit
f96b50f128
2 gewijzigde bestanden met toevoegingen van 89 en 37 verwijderingen
  1. 22 0
      frontend/src/components/header-bar/index.vue
  2. 67 37
      frontend/src/views/Photography/mixin/usePhotography.ts

+ 22 - 0
frontend/src/components/header-bar/index.vue

@@ -212,6 +212,10 @@ const menuType = reactive({
     name: '一键释放',
     click: OneClickRelease
   },
+  OneKeyDown: {
+    name: '一键回落',
+    click: OneKeyDown
+  },
   developer: {
     name: '初始设备调频设置',
     icon: iconsz,
@@ -368,6 +372,24 @@ async function  OneClickRelease(){
   })
 }
 
+//一键回落
+async function OneKeyDown(){
+
+  await ElMessageBox.confirm(
+      `确定要一键回落设备吗?`,
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      },
+  )
+  socketStore.sendMessage({
+    type: 'one_key_down',
+    data: 'one_key_down'
+  })
+}
+
 onMounted(() => {
   document.addEventListener('click', handleOutsideClick);
 })

+ 67 - 37
frontend/src/views/Photography/mixin/usePhotography.ts

@@ -577,29 +577,48 @@ export default function usePhotography() {
     }
 
     const menu = computed(() => {
+      // 一级导航:设置 + 快捷操作下拉(含一键释放/一键回落/生成图目录)
+      const quickActionsChildren = [
+        {
+          name: '生成图目录',
+          click() {
+            openOutputDir()
+          }
+        },
+        {
+          type: 'OneClickRelease'
+        },
+        {
+          type: 'OneKeyDown'
+        }
+      ]
+
+      // 一级导航:高级生成下拉
+      const generateMenu = {
+        ...generate
+      }
+
       if (configInfoStore.appModel === 2) {
         return [
           {
             type: 'setting'
           },
           {
-            name: '切换模式',
-            click() {
-              configInfoStore.updateAppModel(1)
-              Router.push({
-                name: 'PhotographyCheck'
-              })
-            }
-          },
-          {
-            name: '生成图目录',
-            click() {
-              openOutputDir()
-            }
+            name: '快捷操作',
+            children: [
+              ...quickActionsChildren,
+              {
+                name: '切换模式',
+                click() {
+                  configInfoStore.updateAppModel(1)
+                  Router.push({
+                    name: 'PhotographyCheck'
+                  })
+                }
+              }
+            ]
           },
-          {
-            ...generate
-          }
+          generateMenu
         ]
       }
       if (useUserInfoStore.userInfo.brand_company_code === '1300' || configInfoStore.appConfig.debug) {
@@ -608,20 +627,18 @@ export default function usePhotography() {
             type: 'setting'
           },
           {
-            type: 'developer'
-          },
-          {
-            name: '生成图目录',
-            click() {
-              openOutputDir()
-            }
+            name: '快捷操作',
+            children: quickActionsChildren
           },
           {
-            ...generate,
+            name: '开发工具',
+            children: [
+              {
+                type: 'developer'
+              }
+            ]
           },
-          {
-            type: 'OneClickRelease'
-          }
+          generateMenu
         ]
       }
 
@@ -631,17 +648,10 @@ export default function usePhotography() {
           type: 'setting'
         },
         {
-          name: '生成图目录',
-          click() {
-            openOutputDir()
-          }
-        },
-        {
-          ...generate
+          name: '快捷操作',
+          children: quickActionsChildren
         },
-        {
-          type: 'OneClickRelease'
-        }
+        generateMenu
       ]
 
 
@@ -783,6 +793,26 @@ const onRemoteControl = async (type) => {
         console.log('_handler_take_picture')
         console.log(result)
         if (result.code === 0) {
+
+          if(result.msg  === '处理单拍消息'){
+            const pointName = await getPhotoPointName()
+            clickLog({ describe: { action: '实体遥控器拍照按钮', point_name: pointName } }, route);
+
+            if (runLoading.value || takePictureLoading.value) {
+              ElMessage.error('拍摄程序正在运行,请稍候')
+              return
+            }
+
+            ElMessage.success('正在拍摄中,请稍候')
+            takePictureLoading.value = true;
+            socketStore.sendMessage({
+              type: 'handler_take_picture',
+              data: {
+                point_name: pointName
+              }
+            })
+            return;
+          }
   /*        if (runLoading.value || takePictureLoading.value) {
             ElMessage.error('拍摄程序正在运行,请稍候')
             return