|
@@ -7,10 +7,14 @@ import LockScreen from '@/layout/LockScreen.vue'
|
|
|
import PauseMarker from '@/layout/PauseMarker.vue'
|
|
|
import LoadingFlag from '@/components/common/LoadingFlag.vue'
|
|
|
import RowNextBottomDialog from '@/components/common/RowNextBottomDialog.vue'
|
|
|
-import { onMounted, watch } from 'vue'
|
|
|
+import { onMounted, watch, ref } from 'vue'
|
|
|
import { useRoute } from 'vue-router'
|
|
|
import useFetch from './hooks/useFetch'
|
|
|
-import { useIntervalFn } from '@vueuse/core'
|
|
|
+// import { useIntervalFn } from '@vueuse/core'
|
|
|
+import OnlineIntervalWorker from '@/utils/onlineInterval.worker?worker'
|
|
|
+
|
|
|
+const onlineIntervalWorker = new OnlineIntervalWorker()
|
|
|
+const isActive = ref(false)
|
|
|
const route = useRoute()
|
|
|
const mainStore = useMainStore()
|
|
|
const mainLayoutStore = useMainLayoutStore()
|
|
@@ -22,14 +26,23 @@ if (location.pathname == '/marking/mark') {
|
|
|
const onlineCheckInterval = () => {
|
|
|
useFetch('onlineCheck').fetch()
|
|
|
}
|
|
|
-const { pause, isActive, resume } = useIntervalFn(onlineCheckInterval, 5000, { immediate: false })
|
|
|
+onlineIntervalWorker.onmessage = (e: any) => {
|
|
|
+ const data = e.data
|
|
|
+ console.log('data', data)
|
|
|
+ if (typeof e.data === 'boolean') {
|
|
|
+ isActive.value = !!data
|
|
|
+ } else if (e.data === '') {
|
|
|
+ onlineCheckInterval()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
watch(
|
|
|
() => mainStore.loginInfo,
|
|
|
(val) => {
|
|
|
if (val) {
|
|
|
- resume()
|
|
|
+ onlineIntervalWorker.postMessage(true)
|
|
|
} else {
|
|
|
- pause()
|
|
|
+ onlineIntervalWorker.postMessage(false)
|
|
|
}
|
|
|
}
|
|
|
)
|
|
@@ -39,7 +52,7 @@ if (mainStore.loginInfo) {
|
|
|
mainStore.getUserMarkConfig()
|
|
|
mainLayoutStore.getRenderMenuList()
|
|
|
if (!isActive.value) {
|
|
|
- resume()
|
|
|
+ onlineIntervalWorker.postMessage(true)
|
|
|
}
|
|
|
}
|
|
|
window.addEventListener('online', () => {
|