|
|
@@ -28,16 +28,19 @@ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
|
|
|
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
|
import { Toast, Dialog } from 'vant';
|
|
|
import smoothscroll from 'smoothscroll-polyfill';
|
|
|
+import { useCssVar } from '@vueuse/core';
|
|
|
+import { watch, watchEffect, computed } from 'vue';
|
|
|
|
|
|
smoothscroll.polyfill();
|
|
|
-
|
|
|
-const appHeight = () => {
|
|
|
- const doc = document.documentElement;
|
|
|
- doc.style.setProperty('--app-height', `${window.innerHeight}px`);
|
|
|
+const appHeight = useCssVar('--app-height', document.documentElement);
|
|
|
+const onWindowResize = () => {
|
|
|
+ appHeight.value = `${window.innerHeight}px`;
|
|
|
};
|
|
|
-window.addEventListener('resize', appHeight);
|
|
|
-appHeight();
|
|
|
-
|
|
|
+window.addEventListener('resize', onWindowResize);
|
|
|
+onWindowResize();
|
|
|
+setTimeout(() => {
|
|
|
+ onWindowResize();
|
|
|
+}, 100);
|
|
|
Toast.setDefaultOptions('loading', { duration: 0 });
|
|
|
require('dayjs/locale/zh-cn');
|
|
|
|
|
|
@@ -59,7 +62,15 @@ store.commit('setFirstUrl', location.href);
|
|
|
|
|
|
import ImgContent from './components/ImgContent.vue';
|
|
|
import PullRefresh from './components/PullRefresh.vue';
|
|
|
-
|
|
|
+import { setTimeout } from 'core-js';
|
|
|
+const safeTop = useCssVar('--safe-top', document.documentElement);
|
|
|
+const safeBottom = useCssVar('--safe-bottom', document.documentElement);
|
|
|
+const safeLeft = useCssVar('--safe-left', document.documentElement);
|
|
|
+const safeRight = useCssVar('--safe-right', document.documentElement);
|
|
|
+if (navigator.userAgent.includes('#testSafeTop#')) {
|
|
|
+ safeTop.value = '30px';
|
|
|
+}
|
|
|
+const barHeight = computed(() => Number((safeTop.value || '0').replace('px', '')) + 46);
|
|
|
const app = createApp(App)
|
|
|
.use(Vant)
|
|
|
.use(http)
|
|
|
@@ -75,7 +86,14 @@ const app = createApp(App)
|
|
|
.component('van-pull-refresh', PullRefresh)
|
|
|
.component('page-bar', PageBar)
|
|
|
.use(store)
|
|
|
- .use(router);
|
|
|
+ .use(router)
|
|
|
+ .provide('appHeight', appHeight)
|
|
|
+ .provide('safeTop', safeTop)
|
|
|
+ .provide('safeBottom', safeBottom)
|
|
|
+ .provide('safeLeft', safeLeft)
|
|
|
+ .provide('safeRight', safeRight)
|
|
|
+ .provide('barHeight', barHeight);
|
|
|
+app.config.unwrapInjectedRef = true;
|
|
|
app.config.globalProperties.emitter = emitter;
|
|
|
app.config.globalProperties.dayjs = dayjs;
|
|
|
|
|
|
@@ -119,11 +137,6 @@ if (query.hopeMarket === 'true' || query.hopeMarket === true || sessionStorage.g
|
|
|
store.commit('setHopeMarket', true);
|
|
|
sessionStorage.setItem('hopeMarket', true);
|
|
|
}
|
|
|
-const style = document.documentElement.style;
|
|
|
-style.setProperty('--safe-top', '20px');
|
|
|
-style.setProperty('--safe-bottom', 'env(safe-area-inset-bottom)');
|
|
|
-style.setProperty('--safe-left', 'env(safe-area-inset-left)');
|
|
|
-style.setProperty('--safe-right', 'env(safe-area-inset-right)');
|
|
|
|
|
|
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
|
|
|
|
|
|
@@ -167,6 +180,24 @@ if (navigator.userAgent.includes('#cordova#')) {
|
|
|
'deviceready',
|
|
|
function () {
|
|
|
StatusBar.overlaysWebView(true);
|
|
|
+ safeTop.value = getComputedStyle(document.documentElement).getPropertyValue('--sat').replaceAll(' ', '');
|
|
|
+ safeBottom.value = getComputedStyle(document.documentElement).getPropertyValue('--sab').replaceAll(' ', '');
|
|
|
+ safeLeft.value = getComputedStyle(document.documentElement).getPropertyValue('--sal').replaceAll(' ', '');
|
|
|
+ safeRight.value = getComputedStyle(document.documentElement).getPropertyValue('--sar').replaceAll(' ', '');
|
|
|
+ setTimeout(() => {
|
|
|
+ safeTop.value = getComputedStyle(document.documentElement)
|
|
|
+ .getPropertyValue('--sat')
|
|
|
+ .replaceAll(' ', '');
|
|
|
+ safeBottom.value = getComputedStyle(document.documentElement)
|
|
|
+ .getPropertyValue('--sab')
|
|
|
+ .replaceAll(' ', '');
|
|
|
+ safeLeft.value = getComputedStyle(document.documentElement)
|
|
|
+ .getPropertyValue('--sal')
|
|
|
+ .replaceAll(' ', '');
|
|
|
+ safeRight.value = getComputedStyle(document.documentElement)
|
|
|
+ .getPropertyValue('--sar')
|
|
|
+ .replaceAll(' ', '');
|
|
|
+ }, 1000);
|
|
|
if ('1' === window.localStorage.getItem('AppTips')) {
|
|
|
try {
|
|
|
window.cordova.plugins.UmengPlugin.initPush(deviceToken => {
|
|
|
@@ -209,41 +240,34 @@ if (navigator.userAgent.includes('#cordova#')) {
|
|
|
StatusBar.styleDefault();
|
|
|
});
|
|
|
|
|
|
- if ('ios' === window.cordova.platformId) {
|
|
|
- style.setProperty('--safe-top', 'env(safe-area-inset-top)');
|
|
|
- style.setProperty('--safe-bottom', 'env(safe-area-inset-bottom)');
|
|
|
- style.setProperty('--safe-left', 'env(safe-area-inset-left)');
|
|
|
- style.setProperty('--safe-right', 'env(safe-area-inset-right)');
|
|
|
- } else {
|
|
|
- if (window.AndroidNotch) {
|
|
|
- window.AndroidNotch.getInsetTop(
|
|
|
- px => {
|
|
|
- style.setProperty('--safe-top', px + 'px');
|
|
|
- },
|
|
|
- err => console.error('Failed to get insets top:', err)
|
|
|
- );
|
|
|
+ if (window.AndroidNotch) {
|
|
|
+ window.AndroidNotch.getInsetTop(
|
|
|
+ px => {
|
|
|
+ safeTop.value = px + 'px';
|
|
|
+ },
|
|
|
+ err => console.error('Failed to get insets top:', err)
|
|
|
+ );
|
|
|
|
|
|
- window.AndroidNotch.getInsetRight(
|
|
|
- px => {
|
|
|
- style.setProperty('--safe-right', px + 'px');
|
|
|
- },
|
|
|
- err => console.error('Failed to get insets right:', err)
|
|
|
- );
|
|
|
+ window.AndroidNotch.getInsetRight(
|
|
|
+ px => {
|
|
|
+ safeRight.value = px + 'px';
|
|
|
+ },
|
|
|
+ err => console.error('Failed to get insets right:', err)
|
|
|
+ );
|
|
|
|
|
|
- window.AndroidNotch.getInsetBottom(
|
|
|
- px => {
|
|
|
- style.setProperty('--safe-bottom', px + 'px');
|
|
|
- },
|
|
|
- err => console.error('Failed to get insets bottom:', err)
|
|
|
- );
|
|
|
+ window.AndroidNotch.getInsetBottom(
|
|
|
+ px => {
|
|
|
+ safeBottom.value = px + 'px';
|
|
|
+ },
|
|
|
+ err => console.error('Failed to get insets bottom:', err)
|
|
|
+ );
|
|
|
|
|
|
- window.AndroidNotch.getInsetLeft(
|
|
|
- px => {
|
|
|
- style.setProperty('--safe-left', px + 'px');
|
|
|
- },
|
|
|
- err => console.error('Failed to get insets left:', err)
|
|
|
- );
|
|
|
- }
|
|
|
+ window.AndroidNotch.getInsetLeft(
|
|
|
+ px => {
|
|
|
+ safeLeft.value = px + 'px';
|
|
|
+ },
|
|
|
+ err => console.error('Failed to get insets left:', err)
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
let t = 0;
|