罗广辉
2025-06-19 f27ca082eb0a839449dd50c49007b58e5ed6946f
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
71
72
73
74
75
76
/*
 * @Author: GuLiMmo 2820890765@qq.com
 * @Date: 2024-03-12 17:59:03
 * @LastEditors: GuLiMmo 2820890765@qq.com
 * @LastEditTime: 2024-08-28 14:24:20
 * @FilePath: /drone-web/src/components/g-map/use-dock-control.ts
 * @Description:
 * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
 */
import { message } from 'ant-design-vue'
import { ref } from 'vue'
import { postSendCmd, postSendCmdAirConditionerOn } from '/@/api/device-cmd'
import { DeviceCmd, DeviceCmdItemAction } from '/@/types/device-cmd'
 
export function useDockControl () {
  const dockControlPanelVisible = ref(false)
 
  function setDockControlPanelVisible (visible: boolean) {
    dockControlPanelVisible.value = visible
  }
 
  // 远程调试开关
  async function dockDebugOnOff (sn: string, on: boolean) {
    const result = await sendDockControlCmd({
      sn: sn,
      cmd: on ? DeviceCmd.DebugModeOpen : DeviceCmd.DebugModeClose
    }, false)
    return result
  }
 
  // 发送指令
  async function sendDockControlCmd (params: {
    sn: string,
    cmd: DeviceCmd
    action?: DeviceCmdItemAction
  }, tip = true) {
    try {
      let body = undefined as any
      if (params.action !== undefined) {
        if (params.cmd === DeviceCmd.SdrWorkModeSwitch) {
          body = {
            link_workmode: params.action
          }
        } else {
          body = {
            action: params.action
          }
        }
      }
      const { code, message: msg } = await postSendCmd({ dock_sn: params.sn, device_cmd: params.cmd }, body)
      if (code === 0) {
        tip && message.success('指令发送成功')
        return true
      }
      throw (msg)
    } catch (e) {
      tip && message.error('指令发送失败')
      return false
    }
  }
 
  // 控制面板关闭
  async function onCloseControlPanel (sn: string) {
    console.log(dockControlPanelVisible.value, 'value')
    await dockDebugOnOff(sn, false)
    setDockControlPanelVisible(false)
  }
 
  return {
    dockControlPanelVisible,
    setDockControlPanelVisible,
    sendDockControlCmd,
    dockDebugOnOff,
    onCloseControlPanel,
  }
}