useSendCommand.ts
1.89 KB
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
import { ref } from 'vue';
import { DataSource } from '../../palette/types';
import { sendCommandOneway, sendCommandTwoway } from '/@/api/dataBoard';
import { useMessage } from '/@/hooks/web/useMessage';
import { ServiceCallTypeEnum } from '/@/enums/toolEnum';
import { TransportTypeEnum } from '/@/enums/deviceEnum';
const { createMessage } = useMessage();
export function useSendCommand() {
const loading = ref(false);
const error = () => {
// createMessage.error('下发指令失败');
return false;
};
const sendCommand = async (record: DataSource, value: any, isModbusCommand = false) => {
if (!record) return false;
const { customCommand, attribute } = record || {};
const { deviceId } = record;
if (!deviceId) return false;
try {
loading.value = true;
let params: string | Recordable = {
[attribute!]: Number(value),
};
if (isModbusCommand) {
params = value;
}
let sendCommandFn = sendCommandOneway;
// 如果是TCP设备从物模型中获取下发命令(TCP网关子设备无物模型服务与事件)
if (customCommand?.transportType === TransportTypeEnum.TCP && !isModbusCommand) {
params = customCommand.command!;
if (customCommand.callType === ServiceCallTypeEnum.SYNC) {
sendCommandFn = sendCommandTwoway;
}
}
// 控制按钮下发命令为0 或 1
await sendCommandFn({
deviceId,
value: {
params: params || null,
persistent: true,
additionalInfo: {
cmdType: customCommand.commandType || 'API',
},
method: 'methodThingskit',
},
});
createMessage.success('命令下发成功');
return true;
} catch (msg) {
console.error(msg);
return error();
} finally {
loading.value = false;
}
};
return {
loading,
sendCommand,
};
}