xiongzhu 3 ani în urmă
părinte
comite
0daebec493

+ 3 - 4
src/components/AppBar.vue

@@ -39,14 +39,13 @@
 import { mapState } from 'vuex';
 import { useCssVar } from '@vueuse/core';
 export default {
-    inject: ['setKeeps'],
+    inject: ['setKeeps', 'safeTop', 'barHeight'],
     data() {
         return {
             show: false,
             showPopover: false,
             tabColor: '',
-            title: '',
-            safeTop: useCssVar('--safe-top')
+            title: ''
         };
     },
     computed: {
@@ -73,7 +72,7 @@ export default {
             }
         },
         height() {
-            return Number((this.safeTop || '0').replace('px', '')) + 46;
+            return this.barHeight;
         }
     },
     watch: {

+ 70 - 46
src/main.js

@@ -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;

+ 12 - 2
src/styles/app.less

@@ -38,6 +38,10 @@
     --van-dialog-has-title-message-text-color: #000;
     --van-field-label-color: #aaabad;
     --van-search-action-padding: 0 16px;
+    --sat: env(safe-area-inset-top);
+    --sar: env(safe-area-inset-right);
+    --sab: env(safe-area-inset-bottom);
+    --sal: env(safe-area-inset-left);
 }
 
 [contenteditable='true'],
@@ -55,16 +59,22 @@ textarea {
 .van-divider::before {
     height: 5px;
 }
+html,
 body {
+    padding: 0;
+    margin: 0;
     font-family: BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', miui,
         'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
     -webkit-text-size-adjust: none;
     font-size: 14px;
     color: var(--van-text-color);
     background-color: #272b2e;
+    -webkit-font-smoothing: antialiased;
+}
+body {
+    height: 100vh;
+    overflow: hidden;
 }
-html,
-body,
 #app,
 .scroll-wrapper {
     padding: 0;

+ 1 - 1
src/views/Creator.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="discover">
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="top-btn">
                     <div class="btn" @click="$router.replace('/discover')">收藏探索</div>

+ 3 - 3
src/views/Discover.vue

@@ -148,7 +148,7 @@
         </div>
 
         <div class="tabbar-placeholder"></div>
-        <img src="../assets/icon_zhiding.png" @click="goTop" class="goTop" v-if="bodyScroll.value > 100" alt="" />
+        <img src="../assets/icon_zhiding.png" @click="goTop" class="goTop" v-if="bodyScroll > 100" alt="" />
     </van-pull-refresh>
 </template>
 
@@ -161,7 +161,7 @@ import ShowInfo from '../components/asset/showInfo.vue';
 import { useCssVar } from '@vueuse/core';
 export default {
     name: 'discover',
-    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll', 'bodyScroll'],
+    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll', 'bodyScroll', 'safeTop'],
     mixins: [banner, product],
     components: {
         ProductInfo,
@@ -428,7 +428,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (!to.meta.menuPage || to.path === '/hall') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['index', 'discover']);
         } else {
             this.scrollTop = 0;

+ 1 - 1
src/views/DiscoverPre.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="discover">
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="top-btn">
                     <div class="btn active">收藏探索</div>

+ 1 - 1
src/views/Home.vue

@@ -355,7 +355,7 @@ export default {
             this.$el.parentNode.childNodes[1].className.replace(/ bgBack/, '') + ' bgBack';
         console.log(to);
         if (!to.meta.menuPage && to.path !== '/agreement') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['index', 'home']);
         } else {
             this.scrollTop = 0;

+ 1 - 1
src/views/Index.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="index">
         <router-view v-slot="{ Component }">
-            <keep-alive :include="keeps.value">
+            <keep-alive :include="keeps">
                 <component :is="Component" class="container barTop" />
             </keep-alive>
         </router-view>

+ 2 - 2
src/views/Store.vue

@@ -116,7 +116,7 @@
                     require(`@assets/${active == 'coupon' ? 'kong_png_duihuanquanhei' : 'empty_img_asset_dark'}.png`)
                 "
             />
-            <img src="../assets/icon_zhiding.png" @click="goTop" class="goTop" v-if="bodyScroll.value > 100" alt="" />
+            <img src="../assets/icon_zhiding.png" @click="goTop" class="goTop" v-if="bodyScroll > 100" alt="" />
         </van-list>
         <van-action-sheet
             ref="action"
@@ -346,7 +346,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (to.path === '/assetDetail' || to.path === '/hall') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['index', 'store']);
         } else {
             this.scrollTop = 0;

+ 2 - 2
src/views/account/Login.vue

@@ -1,7 +1,7 @@
 <template>
     <div
         class="login"
-        :class="{ loginHeight: bar.value && bar.value.show }"
+        :class="{ loginHeight: bar && bar.show }"
         :style="{ backgroundImage: `url(https://cdn.raex.vip/nft/2022-06-24-17-12-00oEyAgOxj.jpg)` }"
     >
         <img class="logo" v-if="active === 'phone'" src="../../assets/lvzhopu-logo.png" alt="" />
@@ -149,7 +149,6 @@ export default {
                     this.$http
                         .post('/auth/oneKeyLogin', { token: res.token, umengKey: res.umengKey })
                         .then(res => {
-                            this.$toast.clear();
                             localStorage.setItem('nineToken', res);
                             this.$store.dispatch('getUserInfo');
                             this.finish();
@@ -229,6 +228,7 @@ export default {
         },
         finish() {
             setTimeout(() => {
+                this.$toast.clear();
                 if (this.$store.state.loginBackUrl) {
                     this.$router.replace(this.$store.state.loginBackUrl);
                 } else if (

+ 1 - 1
src/views/account/Register.vue

@@ -1,7 +1,7 @@
 <template>
     <div
         class="login"
-        :class="{ loginHeight: bar.value && bar.value.show }"
+        :class="{ loginHeight: bar && bar.show }"
         :style="{ backgroundImage: `url(${require('../../assets/login.jpg')})` }"
     >
         <img class="logo" src="../../assets/lvzhopu-logo.png" alt="" />

+ 1 - 1
src/views/account/Setting.vue

@@ -42,7 +42,7 @@
                     <van-uploader class="avatar" :after-read="afterRead2" result-type="file" />
                 </template>
             </van-cell>
-            <van-cell class="not" title="用户id" :value="userInfo.id" @click="showConsoleEve" />
+            <van-cell class="not" title="用户ID" :value="userInfo.id" @click="showConsoleEve" />
             <van-cell class="not" v-if="showConsole" title="审核版本" is-link @click="goReview" />
             <van-cell class="not" v-if="showConsole" title="测试app" is-link @click="goTest" />
         </van-cell-group>

+ 1 - 1
src/views/asset/GiveSearch.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="search">
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="title">赠送</div>
             <div class="name">通过手机号码检索用户信息,<span>确认赠送后该数字藏品将会被转移</span></div>
             <van-search

+ 2 - 2
src/views/asset/Search.vue

@@ -4,7 +4,7 @@
         :class="{ isSearch: isSearch }"
         :style="{ backgroundColor: isSearch ? $colors.bgBlack : $colors.bg }"
     >
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <van-search
                 ref="top"
                 shape="round"
@@ -130,7 +130,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (to.path === '/creatorDetail') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['assetSearch']);
         } else {
             this.scrollTop = 0;

+ 3 - 3
src/views/auction/Home.vue

@@ -8,7 +8,7 @@
         @refresh="onRefresh"
         pageType="light"
     >
-        <van-sticky :offset-top="46">
+        <van-sticky :offset-top="barHeight">
             <div class="search-bar">
                 <span class="icon">拍卖中心</span>
                 <div class="search-input" @click="$router.push('/auctionSearch')">
@@ -85,7 +85,7 @@ import banner from '../../mixins/banner';
 export default {
     name: 'auctionHome',
     mixins: [list, banner],
-    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
+    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll', 'barHeight'],
     components: {
         Swiper,
         SwiperSlide,
@@ -144,7 +144,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (to.name === 'auctionDetail') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['auctionHome']);
         } else {
             this.scrollTop = 0;

+ 2 - 2
src/views/auction/List.vue

@@ -7,7 +7,7 @@
         @refresh="onRefresh"
         pageType="light"
     >
-        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" class="list-top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top" v-if="!minterId">
                 <div class="name">{{ pageName }}</div>
                 <img src="@assets/icon-sosuo.png" alt="" @click="goSearch" class="search" />
@@ -246,7 +246,7 @@ export default {
     beforeRouteLeave(to, from, next) {
         if (to.name === 'productDetail') {
             this.beforeSort = this.sort;
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['productList']);
         } else {
             this.beforeSort = '';

+ 2 - 2
src/views/auction/Search.vue

@@ -8,7 +8,7 @@
         @refresh="onRefresh"
         pageType="light"
     >
-        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" class="list-top" :offset-top="bar && bar.show ? bar.height : 0">
             <van-search
                 ref="top"
                 shape="round"
@@ -260,7 +260,7 @@ export default {
     beforeRouteLeave(to, from, next) {
         if (to.name === 'auctionDetail') {
             this.beforeSort = this.sort;
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['auctionSearch']);
         } else {
             this.beforeSort = '';

+ 3 - 3
src/views/creator/Detail.vue

@@ -92,7 +92,7 @@
             </div>
         </div>
 
-        <van-sticky ref="top" :offset-top="46">
+        <van-sticky ref="top" :offset-top="barHeight">
             <div class="menu" v-if="isMinter">
                 <div class="menu-item" @click="changeMenu('HISTORY')" :class="{ active: type === 'HISTORY' }">
                     历史创作
@@ -203,7 +203,7 @@ export default {
         }
     },
     name: 'creatorDetail',
-    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
+    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll', 'barHeight'],
     mixins: [list],
     data() {
         return {
@@ -364,7 +364,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (to.name === 'productDetail' || to.name === 'hall') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['creatorDetail']);
         } else {
             this.scrollTop = 0;

+ 1 - 1
src/views/creator/Home.vue

@@ -144,7 +144,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (!to.meta.menuPage) {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['creatorList']);
         } else {
             this.scrollTop = 0;

+ 2 - 2
src/views/creator/List.vue

@@ -7,7 +7,7 @@
         :head-height="80"
         @refresh="onRefresh"
     >
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="name">铸造者</div>
                 <img src="@assets/icon-sosuo.png" @click="$router.push('/creatorSearch')" alt="" class="search" />
@@ -97,7 +97,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (!to.meta.menuPage) {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['creatorList']);
         } else {
             this.scrollTop = 0;

+ 2 - 2
src/views/creator/Search.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="search" :style="{ backgroundColor: isSearch ? $colors.bg3 : $colors.bg }">
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <van-search
                 ref="top"
                 shape="round"
@@ -89,7 +89,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (to.path === '/assetDetail') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['creatorSearch']);
         } else {
             this.scrollTop = 0;

+ 3 - 3
src/views/hall/Detail.vue

@@ -1194,12 +1194,11 @@ export default {
 
 .top {
     position: fixed;
-    top: 0;
+    top: var(--safe-top);
     left: 0;
     z-index: 20;
     right: 0;
     height: 44px;
-
     .flex();
     justify-content: space-between;
     .top-btn {
@@ -1509,13 +1508,14 @@ export default {
         // width: 100vh;
         // transform-origin: bottom;
         top: 0;
-        bottom: 0;
         left: auto;
         height: 100vh;
         height: var(--app-height);
         width: 40px;
         flex-direction: column;
         right: 5px;
+        padding-top: var(--safe-top);
+        box-sizing: border-box;
         .top-btn {
             height: auto;
             white-space: nowrap;

+ 3 - 3
src/views/hall/List.vue

@@ -7,7 +7,7 @@
         @refresh="onRefresh"
     >
         <div class="list-top">艺术展览</div>
-        <van-sticky offset-top="46">
+        <van-sticky :offset-top="barHeight">
             <van-tabs class="darkTabs" @change="changeType" v-model:active="type" shrink>
                 <van-tab title="艺术机构" name="COMPANY,COMPANY_BOX"></van-tab>
                 <van-tab title="藏家展厅" name="USER"></van-tab>
@@ -33,7 +33,7 @@ import list from '../../mixins/list';
 import ShowInfo from '../../components/asset/showInfo.vue';
 export default {
     name: 'hallList',
-    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
+    inject: ['barHeight', 'setKeeps', 'scrollWrapper', 'changeScroll'],
     mixins: [list],
     components: { ShowInfo },
     data() {
@@ -90,7 +90,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (to.name == 'hall') {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['hallList']);
         } else {
             this.scrollTop = 0;

+ 1 - 1
src/views/order/ActivityOrders.vue

@@ -8,7 +8,7 @@
         @refresh="onRefresh"
         pageType="light"
     >
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <!-- <div class="top">
                 <div class="top-btn">
                     <div class="btn" :class="{ active: type === 'DEFAULT' }" @click="changeActive('DEFAULT')">

+ 3 - 3
src/views/order/AuctionOrders.vue

@@ -8,7 +8,7 @@
         @refresh="onRefresh"
         pageType="light"
     >
-        <van-sticky ref="top" :offset-top="46">
+        <van-sticky ref="top" :offset-top="barHeight">
             <div class="top">
                 <div class="top-btn">
                     <div class="btn" :class="{ active: type === 'ENTITY' }" @click="changeActive('ENTITY')">
@@ -51,7 +51,7 @@ import OrderInfoAuction from '../../components/order/OrderInfoAuction.vue';
 import list from '../../mixins/list';
 export default {
     name: 'discover',
-    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
+    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll', 'barHeight'],
     mixins: [list],
     components: {
         OrderInfoAuction
@@ -212,7 +212,7 @@ export default {
     },
     beforeRouteLeave(to, from, next) {
         if (!to.meta.menuPage) {
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['index', 'discover']);
         } else {
             this.scrollTop = 0;

+ 1 - 1
src/views/order/Orders.vue

@@ -8,7 +8,7 @@
         @refresh="onRefresh"
         pageType="light"
     >
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="top-btn">
                     <div class="btn" :class="{ active: type === 'DEFAULT' }" @click="changeActive('DEFAULT')">

+ 10 - 8
src/views/product/HopeMarket.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="follow">
-        <div ref="top" class="list-top" :style="{ top: barShow ? '46px' : 0 }">
+        <div ref="top" class="list-top" :style="{ top: barShow ? barHeight + 'px' : 0 }">
             <div class="top" v-if="!minterId">
                 <div class="name">版权市场</div>
                 <img src="@assets/icon-sosuo.png" alt="" @click="goSearch" class="search" />
@@ -138,7 +138,7 @@ import { useWindowSize } from '@vant/use';
 export default {
     name: 'productList',
     components: { ProductInfo, Swiper, SwiperSlide },
-    inject: ['setKeeps', 'scrollWrapper', 'changeScroll'],
+    inject: ['setKeeps', 'scrollWrapper', 'changeScroll', 'barHeight'],
     mixins: [product, list, banner],
     setup() {
         const { width, height } = useWindowSize();
@@ -253,11 +253,13 @@ export default {
     },
     mounted() {
         this.init();
-        if (document.getElementById('navBar')) {
-            this.barShow = true;
-        } else {
-            this.barShow = false;
-        }
+        this.$nextTick(() => {
+            if (document.getElementById('navBar')) {
+                this.barShow = true;
+            } else {
+                this.barShow = false;
+            }
+        });
 
         this.$http
             .get('/sysConfig/get/collect_not')
@@ -418,7 +420,7 @@ export default {
         document.getElementById('scroll-wrapper').style.overflow = 'auto';
         if (to.name === 'productDetail') {
             this.beforeSort = this.sort;
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['productList']);
         } else {
             this.beforeSort = '';

+ 2 - 2
src/views/product/List.vue

@@ -6,7 +6,7 @@
         v-model="isLoading"
         @refresh="onRefresh"
     >
-        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" class="list-top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top" v-if="!minterId">
                 <div class="name">{{ title || pageName }}</div>
                 <img src="@assets/icon-sosuo.png" alt="" @click="goSearch" class="search" />
@@ -239,7 +239,7 @@ export default {
     beforeRouteLeave(to, from, next) {
         if (to.name === 'productDetail') {
             this.beforeSort = this.sort;
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['productList']);
         } else {
             this.beforeSort = '';

+ 3 - 3
src/views/product/Search.vue

@@ -12,7 +12,7 @@
             v-if="!isSearch"
             ref="top"
             class="list-top"
-            :offset-top="bar.value && bar.value.show ? bar.value.height : 0"
+            :offset-top="bar && bar.show ? bar.height : 0"
         >
             <van-search
                 ref="top"
@@ -31,7 +31,7 @@
             </van-search>
         </van-sticky>
 
-        <van-sticky v-else ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky v-else ref="top" class="list-top" :offset-top="bar && bar.show ? bar.height : 0">
             <van-search
                 ref="top"
                 shape="round"
@@ -310,7 +310,7 @@ export default {
     beforeRouteLeave(to, from, next) {
         if (to.name === 'productDetail') {
             this.beforeSort = this.sort;
-            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.scrollTop = this.scrollWrapper.scrollTop;
             this.setKeeps(['productSearch']);
         } else {
             this.beforeSort = '';

+ 1 - 0
src/views/product/Tasks.vue

@@ -648,6 +648,7 @@ export default {
 .home {
     position: fixed;
     top: 16px;
+    top: calc(var(--safe-top) + 16px);
     left: 16px;
     width: 32px;
     height: 32px;

+ 1 - 1
src/views/user/Followers.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="follow">
-        <van-sticky :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="name">我的粉丝</div>
             </div>

+ 1 - 1
src/views/user/Follows.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="follow">
-        <van-sticky :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="name">我关注的</div>
             </div>

+ 1 - 1
src/views/user/Likes.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="follow">
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? bar.value.height : 0">
+        <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="name">我赞过的</div>
             </div>