Browse Source

feat: 移除websocket点击退出

v1.0.1
jiannibang 3 years ago
parent
commit
7c04c4e7f1
  1. 11
      src/components/PublicComponent/PublicComponent.vue
  2. 45
      src/composables/useHandleScreen.js
  3. 8
      src/composables/useInitConfigAndMallInfo.js
  4. 1
      src/composables/useInitMap.js
  5. 43
      src/router/index.js
  6. 5
      src/router/routes.js
  7. 2
      src/store/root/getters.js
  8. 4
      src/views/Index/Index.vue

11
src/components/PublicComponent/PublicComponent.vue

@ -3,9 +3,6 @@
<!-- 地图容器 --> <!-- 地图容器 -->
<Map v-show="$route.meta.showMap" @handle-GO="handleGO" @handle-Detail="handleDetail" /> <Map v-show="$route.meta.showMap" @handle-GO="handleGO" @handle-Detail="handleDetail" />
<!-- 退出弹框 -->
<Logout v-model="logoutRef" @bingo="send('startexplorer')" />
<!-- 倒计时返回首页提示 --> <!-- 倒计时返回首页提示 -->
<AutoBackNotification v-if="countDownGif" :title="title" :delay="isWall ? countDownToWall : countDownNum" /> <AutoBackNotification v-if="countDownGif" :title="title" :delay="isWall ? countDownToWall : countDownNum" />
@ -27,7 +24,6 @@ import { useHandleScreen } from '@/composables/useHandleScreen'
import { useLogout } from '@/composables/useLogout' import { useLogout } from '@/composables/useLogout'
import { useInitMap } from '@/composables/useInitMap' import { useInitMap } from '@/composables/useInitMap'
import Map from '@/components/Map/Map.vue' import Map from '@/components/Map/Map.vue'
const Logout = defineAsyncComponent(() => import('@/base/Logout/Logout.vue'))
const AutoBackNotification = defineAsyncComponent(() => import('@/base/AutoBackNotification/AutoBackNotification.vue')) const AutoBackNotification = defineAsyncComponent(() => import('@/base/AutoBackNotification/AutoBackNotification.vue'))
const Search = defineAsyncComponent(() => import('@/components/Search/Search.vue')) const Search = defineAsyncComponent(() => import('@/components/Search/Search.vue'))
const Temperature = defineAsyncComponent(() => import('@/base/Temperature/Temperature.vue')) const Temperature = defineAsyncComponent(() => import('@/base/Temperature/Temperature.vue'))
@ -40,7 +36,7 @@ const route = useRoute()
const store = useStore() const store = useStore()
const { shop, showSearch, sidebarList, language } = storeToRefs(store) const { shop, showSearch, sidebarList, language } = storeToRefs(store)
const { logoutRef, resetClickNumber, setLogoutRef, addTotalClick } = useLogout()
const { resetClickNumber, setLogoutRef, addTotalClick } = useLogout()
const screenSaveCallback = () => { const screenSaveCallback = () => {
window.Map_QM.changeMapIPState(shop.value?.houseNum, shop.value?.formatColor) window.Map_QM.changeMapIPState(shop.value?.houseNum, shop.value?.formatColor)
@ -52,7 +48,7 @@ const screenSaveCallback = () => {
router.push('/billboard') router.push('/billboard')
} }
const { title, countDownGif, isWall, countDownToWall, countDownNum, send, checkHandleScreen } = useHandleScreen(handleScreen, screenSaveCallback)
const { title, countDownGif, isWall, countDownToWall, countDownNum, checkHandleScreen } = useHandleScreen(handleScreen, screenSaveCallback)
function handleGO() { function handleGO() {
router.push('/nav') router.push('/nav')
@ -75,9 +71,6 @@ async function handleScreen() {
const timer = ref(null) const timer = ref(null)
onMounted(() => { onMounted(() => {
!window.Map_QM && useInitMap() !window.Map_QM && useInitMap()
timer.value = setInterval(() => {
send(`type:online`)
}, 30000)
window.addEventListener('touchend', checkHandleScreen) window.addEventListener('touchend', checkHandleScreen)
}) })

45
src/composables/useHandleScreen.js

@ -1,14 +1,10 @@
import { reactive, onMounted, toRefs, computed } from 'vue' import { reactive, onMounted, toRefs, computed } from 'vue'
import { getBackTime } from '@/http/api' import { getBackTime } from '@/http/api'
import { useStore } from '@/store/root'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStatistics } from '@/composables/useStatistics' import { useStatistics } from '@/composables/useStatistics'
export const useHandleScreen = (callback, screenSaveCallback) => { export const useHandleScreen = (callback, screenSaveCallback) => {
const router = useRouter() const router = useRouter()
const store = useStore()
const backSocket = computed(() => store.config?.backSocket)
const version = computed(() => store.config?.version)
const state = reactive({ const state = reactive({
isWall: false, //当前是回到首页还是回到屏保 isWall: false, //当前是回到首页还是回到屏保
@ -23,15 +19,6 @@ export const useHandleScreen = (callback, screenSaveCallback) => {
title: computed(() => (!state.isWall ? '即将进入首页' : '即将进入屏幕保护')) title: computed(() => (!state.isWall ? '即将进入首页' : '即将进入屏幕保护'))
}) })
//socket发送消息
function send(msg) {
try {
state?.messageWS?.send(msg)
} catch (error) {
console.log(error)
}
}
//获取返回时长 //获取返回时长
async function _getBackTime() { async function _getBackTime() {
try { try {
@ -94,41 +81,12 @@ export const useHandleScreen = (callback, screenSaveCallback) => {
state.isWall = false state.isWall = false
state.countDownToWall = state.times[1] state.countDownToWall = state.times[1]
screenSaveCallback && screenSaveCallback() screenSaveCallback && screenSaveCallback()
send('pcscreensavers')
resolve() resolve()
} }
}, 1000) }, 1000)
}) })
} }
//初始化与容器通信的websocket
function initWebSocket() {
try {
state.messageWS = new WebSocket(backSocket.value)
//连接成功
state.messageWS.onopen = setOnopenMessage
//收到消息的回调
state.messageWS.onmessage = setOnmessageMessage
} catch (error) {
console.log(error)
}
}
//websocket连接成功
function setOnopenMessage() {
console.log('message to container success')
send(`version:${version.value}`)
}
//接收数据
async function setOnmessageMessage() {
if (state.times[1] !== 0) {
await wallpaperPromise()
}
}
//超过一分钟未操作回到首页 //超过一分钟未操作回到首页
const checkHandleScreen = () => { const checkHandleScreen = () => {
useStatistics('device') useStatistics('device')
@ -162,10 +120,9 @@ export const useHandleScreen = (callback, screenSaveCallback) => {
//初始化相关数据 //初始化相关数据
function initMessage() { function initMessage() {
_getBackTime() _getBackTime()
initWebSocket()
} }
onMounted(initMessage) onMounted(initMessage)
return { ...toRefs(state), checkHandleScreen, send }
return { ...toRefs(state), checkHandleScreen }
} }

8
src/composables/useInitConfigAndMallInfo.js

@ -1,4 +1,4 @@
import { getConfig, getCurrentFloor, getGuideList, getTheme } from '@/http/api'
import { getConfig, getCurrentFloor, getGuideList, getTheme, getIndexList, getQMGoShopData } from '@/http/api'
import { useStore } from '@/store/root' import { useStore } from '@/store/root'
import VConsole from 'vconsole' import VConsole from 'vconsole'
@ -27,4 +27,10 @@ export const useInitConfigAndMallInfo = async () => {
const { buildingList, shopList } = _guideList.data const { buildingList, shopList } = _guideList.data
store.SET_SHOP_LIST(shopList.filter(({ yaxis }) => !!yaxis)) store.SET_SHOP_LIST(shopList.filter(({ yaxis }) => !!yaxis))
store.SET_BUILDING_LIST(buildingList) store.SET_BUILDING_LIST(buildingList)
const res = await getIndexList()
const { data } = res
const {
data: { searchList, recommendList }
} = await getQMGoShopData()
store.SET_INDEX_LIST({ ...data, recommendList, hotSearch: searchList })
} }

1
src/composables/useInitMap.js

@ -6,6 +6,7 @@ import Message from '@/base/Message/Message'
export const useInitMap = function () { export const useInitMap = function () {
const store = useStore() const store = useStore()
getMap() getMap()
.then(({ data }) => { .then(({ data }) => {
store.SET_MAP_DATA(JSON.parse(data.mapData)) store.SET_MAP_DATA(JSON.parse(data.mapData))

43
src/router/index.js

@ -1,54 +1,11 @@
import { createRouter, createWebHashHistory } from 'vue-router' import { createRouter, createWebHashHistory } from 'vue-router'
import { staticRoutes } from './routes' import { staticRoutes } from './routes'
import { useStore } from '@/store/root'
import { getIndexList, getQMGoShopData } from '@/http/api'
import { ERR_OK } from '@/http/config'
const router = createRouter({ const router = createRouter({
history: createWebHashHistory(process.env.BASE_URL), history: createWebHashHistory(process.env.BASE_URL),
routes: staticRoutes routes: staticRoutes
}) })
function dynamicRoutes(list) {
return {
path: '/index',
name: 'home',
component: list.length ? () => import(/* webpackChunkName: "Home" */ '@/views/Index/Index') : () => import(/* webpackChunkName: "Home" */ '@/views/Guide/Guide'),
meta: {
showMenu: true,
showMap: list.length ? false : true
}
}
}
router.beforeEach(async to => {
try {
const store = useStore()
const res = await getIndexList()
const { data, code } = res
if (code === ERR_OK) {
if (!router.hasRoute('home')) {
const {
data: { searchList, recommendList }
} = await getQMGoShopData()
store.SET_INDEX_LIST({ ...data, recommendList, hotSearch: searchList })
router.addRoute({
path: '/index',
name: 'home',
component: import(/* webpackChunkName: "Home" */ '@/views/Index/Index')
})
return to.fullPath
}
}
} catch (error) {
return to.fullPath
}
})
export function initRouter(app) { export function initRouter(app) {
app.use(router) app.use(router)
} }

5
src/router/routes.js

@ -3,6 +3,11 @@ export const staticRoutes = [
path: '/', path: '/',
redirect: '/index' redirect: '/index'
}, },
{
path: '/index',
name: 'home',
component: () => import(/* webpackChunkName: "Home" */ '@/views/Index/Index')
},
{ {
path: '/billboard', path: '/billboard',
name: 'Billboard', name: 'Billboard',

2
src/store/root/getters.js

@ -32,7 +32,7 @@ export const currentFloorShopMap = ({ currentFloor: device, shopList, mapData })
const deviceX = nodes[device.location].x const deviceX = nodes[device.location].x
const deviceY = nodes[device.location].y const deviceY = nodes[device.location].y
return shopList return shopList
.filter(shop => shop.floor === device.floor)
.filter(shop => shop.floor === device.floor && shop.yaxis)
.reduce((acc, shop) => { .reduce((acc, shop) => {
const result = {} const result = {}
try { try {

4
src/views/Index/Index.vue

@ -167,9 +167,9 @@ const foodList = computed(() => {
} }
return splitBy(arr) return splitBy(arr)
}) })
const hotRecommend = computed(() => indexList.value.hotSearch.slice(0, 5) ?? [])
const hotRecommend = computed(() => indexList?.value?.hotSearch?.slice(0, 5) ?? [])
const recommendShops = computed(() => { const recommendShops = computed(() => {
const arr = indexList.value.recommendList
const arr = indexList?.value?.recommendList
if (arr.length > 12) { if (arr.length > 12) {
while (arr.length % 4 !== 0) { while (arr.length % 4 !== 0) {
arr.push(arr[Math.floor(Math.random() * arr.length)]) arr.push(arr[Math.floor(Math.random() * arr.length)])

Loading…
Cancel
Save