Files
fengjie-datascreen/src/views/home/index.vue
2025-03-13 21:23:53 +08:00

117 lines
2.8 KiB
Vue

<template>
<box1 />
<box2 @switch-spot="switchSpot" />
<box3 />
</template>
<script setup>
import box1 from './components/box-1.vue'
import box2 from './components/box-2.vue'
import box3 from './components/box-3.vue'
import { useHomeStore } from '@/stores/home'
import { useWebSocket } from '@/hooks/socket'
import { mode, socketBaseUrl, proSocketBaseUrl } from '@/utils/config'
const { isConnected, dataRes, sendMessage } = useWebSocket(
`${mode == 'dev' ? socketBaseUrl : proSocketBaseUrl}/ws/third-party`
)
const homeStore = useHomeStore()
let timer = null
watch(
() => isConnected.value,
(val) => {
if (val) {
sendMessage(
JSON.stringify({
action: 'start',
type: '',
scenicSpot: ''
})
)
}
}
)
watch(
() => dataRes.value,
(val) => {
if (val) {
console.log(val, '首页接受数据')
switch (val.type) {
case 'userPortrait':
homeStore.setUserPortraitData(val.data)
break
case 'admission':
homeStore.setScenicData(val)
break
case 'queuingInScenicSpots':
homeStore.setScenicQueueData(val)
break
case 'queuingScenicSpots':
homeStore.setScenicBearData(val)
break
case 'visitorInfo':
homeStore.setVisitorInfoData(val.data)
break
case 'visitorDataInfo':
homeStore.setVisitorInfoList(val.data)
break
case 'baiduMap':
homeStore.setBaiduMapData(val.data)
break
case 'wordkOrderlist':
homeStore.setWordkOrderList(val.data)
break
case 'wordkOrderTotal':
homeStore.setWordkOrderData(val)
break
case 'trafficInformation':
homeStore.setTrafficInfoData(val)
break
case 'carStopInfo':
homeStore.setCarStopInfoData(val)
break
case 'carShipData':
homeStore.setCarShipData(val.data)
break
case 'hotelData':
homeStore.setHotelData(val.data)
break
case 'getMapNotifyInfo':
homeStore.setNotifyInfo(val.data)
break
}
if (!timer) sendCarShip()
}
}
)
const sendCarShip = (e) => {
timer = setInterval(() => {
if (isConnected.value) {
sendMessage(
JSON.stringify({
action: 'start',
type: 'carShipData',
scenicSpotId: ''
})
)
}
}, 5000)
}
const switchSpot = (e) => {
sendMessage(
JSON.stringify({
action: 'start',
type: 'index',
scenicSpot: e
})
)
}
onUnmounted(() => {
if (timer) clearInterval(timer)
})
</script>