Browse Source

feat: 有节目进屏保,没节目进水牌,返回屏保时间设为0停在首页

ShangHai_LongXiang
jiannibang 3 years ago
parent
commit
8295050df5
  1. 21
      src/composables/useHandleScreen.js
  2. 1
      src/composables/useInitMap.js
  3. 3
      src/store/root/actions.js
  4. 11
      src/store/root/getters.js
  5. 3
      src/store/root/state.js

21
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]
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 }

1
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 => {

3
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
}
}

11
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
}

3
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 = () => {

Loading…
Cancel
Save