App.vue
1.74 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
66
67
68
69
70
71
<template>
<a-config-provider :locale="locale">
<router-view/>
<global-setting/>
</a-config-provider>
</template>
<script lang="ts" setup>
import {computed, provide, ref} from 'vue';
import enUS from '@arco-design/web-vue/es/locale/lang/en-us';
import zhCN from '@arco-design/web-vue/es/locale/lang/zh-cn';
import {useDark, useToggle} from '@vueuse/core'
import GlobalSetting from '@/components/global-setting/index.vue';
import useLocale from '@/hooks/locale';
const {currentLocale} = useLocale();
import {DeviceVarAlarmMessage, SocketMessage, useSocket, WebSocketBaseMessage} from '@/api/websocketService'
import {useAppStore} from "@/store";
const locale = computed(() => {
switch (currentLocale.value) {
case 'zh-CN':
return zhCN
case 'en-US':
return enUS
default:
return enUS
}
})
const appStore = useAppStore();
const isDark = useDark({
selector: 'body',
attribute: 'arco-theme',
valueDark: 'dark',
valueLight: 'light',
storageKey: 'arco-theme',
onChanged(dark: boolean) {
// overridden default behavior
appStore.toggleTheme(dark)
},
})
useToggle(isDark);
const webSocketData = ref<SocketMessage | DeviceVarAlarmMessage>({
value: 0
})
const {on, send} = useSocket(import.meta.env.VITE_WEBSOCKET_URL);
/**
* 收到服务端数据
*/
on('message', (message: WebSocketBaseMessage) => {
webSocketData.value = message.bizData;
});
/**
* 像socket 发送订阅消息
* @param message
*/
const sendData = (message: { action: string, bizSn: any}) => {
const params = {
action: message.action,
bizSn: message.bizSn
}
if(params.bizSn && params.bizSn.length > 0){
send(JSON.stringify(params))
}
}
provide('webSocketData', {
data: webSocketData,
sendData:sendData
});
</script>