无人机管理后台前端(已迁走)
张含笑
2025-08-05 c832bf2e80ac465e71b7a1c1f7a59d4252030989
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import { ElMessage } from 'element-plus';
import { ref } from 'vue';
import { postSendCmd } from '@/api/device-cmd';
import { DeviceCmd } from '@/types/device-cmd';
 
export function useDockControl() {
  const dockControlPanelVisible = ref(false);
 
  function setDockControlPanelVisible(visible) {
    dockControlPanelVisible.value = visible;
  }
 
  // 远程调试开关
  async function dockDebugOnOff(sn, on) {
    const result = await sendDockControlCmd(
      {
        sn: sn,
        cmd: on ? DeviceCmd.DebugModeOpen : DeviceCmd.DebugModeClose,
      },
      false
    );
    return result;
  }
 
  // 发送指令
  async function sendDockControlCmd(params, tip = true) {
    let body = undefined;
    if (params.action !== undefined) {
      if (params.cmd === DeviceCmd.SdrWorkModeSwitch) {
        body = {
          link_workmode: params.action,
        };
      } else {
        body = {
          action: params.action,
        };
      }
    }
    try {
      const res = await postSendCmd({ dock_sn: params.sn, device_cmd: params.cmd }, body);
      if (res.data.code === 0) {
        tip &&
          ElMessage({
            message: '指令发送成功',
            type: 'success',
          });
        return true;
      }
    } catch (error) {
      return false;
    }
 
    return false;
  }
 
  // 控制面板关闭
  async function onCloseControlPanel(sn) {
    console.log(dockControlPanelVisible.value, 'value');
    await dockDebugOnOff(sn, false);
    setDockControlPanelVisible(false);
  }
 
  return {
    dockControlPanelVisible,
    setDockControlPanelVisible,
    sendDockControlCmd,
    dockDebugOnOff,
    onCloseControlPanel,
  };
}