diff --git a/src/composables/useHandleScreen.js b/src/composables/useHandleScreen.js index 6cdda9a..b1ca195 100644 --- a/src/composables/useHandleScreen.js +++ b/src/composables/useHandleScreen.js @@ -1,11 +1,13 @@ -import { reactive, onMounted, toRefs, computed } from 'vue' +import { reactive, onMounted, toRefs, computed, watch } from 'vue' import { getBackTime } from '@/http/api' import { useRouter } from 'vue-router' import { useStatistics } from '@/composables/useStatistics' +import { useStore } from '@/store/root' export const useHandleScreen = (callback, screenSaveCallback) => { const router = useRouter() - + const store = useStore() + const { nativeMethods, mapStatus } = toRefs(store) const state = reactive({ isWall: false, //当前是回到首页还是回到屏保 messageWS: null, @@ -80,7 +82,11 @@ export const useHandleScreen = (callback, screenSaveCallback) => { state.countDownGif = false state.isWall = false state.countDownToWall = state.times[1] - screenSaveCallback && screenSaveCallback() + if (!nativeMethods.value?.hasProgram()) { + screenSaveCallback && screenSaveCallback() + } else { + nativeMethods.value?.goScreenSave() + } resolve() } }, 1000) @@ -116,12 +122,21 @@ export const useHandleScreen = (callback, screenSaveCallback) => { } }, 400) } - + window.leaveScreenSave = () => { + checkHandleScreen() + } //初始化相关数据 function initMessage() { _getBackTime() } + watch(mapStatus, newVal => { + //当地图加载成功之后自动触发一次屏保弹框以便能进入屏保 + if (newVal) { + checkHandleScreen() + } + }) + onMounted(initMessage) return { ...toRefs(state), checkHandleScreen } diff --git a/src/composables/useInitMap.js b/src/composables/useInitMap.js index 5022d04..68b2878 100644 --- a/src/composables/useInitMap.js +++ b/src/composables/useInitMap.js @@ -12,6 +12,7 @@ export const useInitMap = function () { store.SET_MAP_DATA(JSON.parse(data.mapData)) //初始化地图 onReady(store.currentFloor, data, store.shopList, () => { + store.SET_MAP_STATUS(true) const facilityList = window.Map_QM.getAllIcon().flat(Infinity) const list = facilityList.map(item => { diff --git a/src/store/root/actions.js b/src/store/root/actions.js index 8f7589d..1693e11 100644 --- a/src/store/root/actions.js +++ b/src/store/root/actions.js @@ -53,5 +53,8 @@ export const actions = { }, SET_FOOD_INDUSTRY_MAP(data) { this.foodIndustryMap = data + }, + SET_MAP_STATUS(flag) { + this.mapStatus = flag } } diff --git a/src/store/root/getters.js b/src/store/root/getters.js index 8e41bbd..b8efdd6 100644 --- a/src/store/root/getters.js +++ b/src/store/root/getters.js @@ -1,5 +1,8 @@ import arrows from '../arrows/arrows' - +const DEVICE = { + WINDOWS: 'windows', + ANDROID: 'android' +} export const currentBuildingFloorsList = state => { const currentBuilding = state.buildingList.find(building => building.buildingCode === state.currentFloor.buildingCode) return currentBuilding?.floorList ?? [] @@ -50,3 +53,9 @@ export const currentFloorShopMap = ({ currentFloor: device, shopList, mapData }) return { ...acc, [shop.shopCode]: result } }, {}) } +export const nativeMethods = state => { + if (state.currentFloor.label === DEVICE.ANDROID) { + return window.android + } + return window.chrome?.webview?.hostObjects?.sync?.csobj +} diff --git a/src/store/root/state.js b/src/store/root/state.js index 58afa3a..842fd38 100644 --- a/src/store/root/state.js +++ b/src/store/root/state.js @@ -16,7 +16,8 @@ export const state = () => ({ mapData: null, theme: null, facility: null, - foodIndustryMap: {} + foodIndustryMap: {}, + mapStatus: false }) export const is4k = () => {