From 6f725bc0efc7dfa27124a5a2abd5593fe82d627a Mon Sep 17 00:00:00 2001 From: adonis Date: Sun, 13 Sep 2026 16:32:37 +0330 Subject: [PATCH] fix some bugs from ghatreh --- src/app/setupRouter.ts | 5 +- src/assets/css/main.less | 4 + src/composables/useProductsCatalog.ts | 14 +- .../composables/useMobileScrollReset.ts | 6 + src/layouts/mobile/MobileAppLayout.vue | 1 + src/layouts/mobile/MobileOverflowMenu.vue | 7 +- src/layouts/styles/mobile-page-common.less | 3 + src/utils/productPrice.ts | 5 + src/utils/productTradeOpen.ts | 6 +- .../home/components/LogoutConfirmDialog.vue | 2 +- src/views/base/home/index.vue | 17 +-- .../base/products/components/ProductItem.vue | 19 ++- .../components/ProductItemVertical.vue | 19 ++- .../composables/useProductsPageData.ts | 32 ++-- src/views/base/products/index.vue | 3 +- .../composables/useProductDetailPage.ts | 26 +++- .../desktop/DesktopProductDetailView.vue | 6 +- .../mobile/MobileProductDetailView.vue | 142 +++++++++++++----- .../base/user/composables/useUserPage.ts | 8 +- 19 files changed, 219 insertions(+), 106 deletions(-) diff --git a/src/app/setupRouter.ts b/src/app/setupRouter.ts index 8438964..97fd541 100644 --- a/src/app/setupRouter.ts +++ b/src/app/setupRouter.ts @@ -12,7 +12,7 @@ import { setFingerTimeOut, setHasFingerPrint } from '@/app/authBoot' -import { recoverMobileViewportAfterAuth } from '@/layouts/composables/useMobileScrollReset' +import { clearVantOverlays, recoverMobileViewportAfterAuth } from '@/layouts/composables/useMobileScrollReset' export function setupRouterGuards() { const userStore = useUserStore() @@ -180,6 +180,9 @@ export function setupRouterGuards() { }) router.afterEach((to, from) => { + if (to.name === 'login') { + clearVantOverlays() + } if (document.documentElement.classList.contains('app-layout--desktop')) return if (from.name === 'login') { recoverMobileViewportAfterAuth() diff --git a/src/assets/css/main.less b/src/assets/css/main.less index 145c7f3..d0bd717 100644 --- a/src/assets/css/main.less +++ b/src/assets/css/main.less @@ -120,6 +120,10 @@ body { pointer-events: auto !important; } +.van-dialog { + z-index: var(--app-z-dialog, 5300) !important; +} + body.van-overflow-hidden { .bottom-appbar, .app-credit-footer, diff --git a/src/composables/useProductsCatalog.ts b/src/composables/useProductsCatalog.ts index e6adedb..fd67602 100644 --- a/src/composables/useProductsCatalog.ts +++ b/src/composables/useProductsCatalog.ts @@ -1,7 +1,6 @@ import { ref } from 'vue' import { getProducts } from '@/api/products' import type { Product } from '@/models/products' -import { getLastStreamProductsList } from '@/utils/productStreamBridge' /** کش مشترک لیست محصولات — dedupe درخواست‌های polling */ const catalogProducts = ref([]) @@ -12,22 +11,11 @@ export function getProductsCatalogRef() { } export function findProductInCatalog(id: number): Product | undefined { - const cached = catalogProducts.value.find((p) => p.id === id) - if (cached) { - return cached - } - - return getLastStreamProductsList()?.find((p) => p.id === id) + return catalogProducts.value.find((p) => p.id === id) } export function getProductsCatalog(force = false): Promise { if (!force) { - const streamed = getLastStreamProductsList() - if (streamed?.length) { - catalogProducts.value = streamed - return Promise.resolve(streamed) - } - if (catalogProducts.value.length > 0) { return Promise.resolve(catalogProducts.value) } diff --git a/src/layouts/composables/useMobileScrollReset.ts b/src/layouts/composables/useMobileScrollReset.ts index aed17b6..e2b3aa4 100644 --- a/src/layouts/composables/useMobileScrollReset.ts +++ b/src/layouts/composables/useMobileScrollReset.ts @@ -41,6 +41,12 @@ function clearBodyScrollLock() { } } +/** leftover van-dialog overlay after logout/navigation — blocks all clicks */ +export function clearVantOverlays() { + document.querySelectorAll('body > .van-overlay').forEach((el) => el.remove()) + clearBodyScrollLock() +} + function resetAllScrollPositions() { window.scrollTo(0, 0) document.documentElement.scrollTop = 0 diff --git a/src/layouts/mobile/MobileAppLayout.vue b/src/layouts/mobile/MobileAppLayout.vue index 89e2a6d..66ca28c 100644 --- a/src/layouts/mobile/MobileAppLayout.vue +++ b/src/layouts/mobile/MobileAppLayout.vue @@ -47,6 +47,7 @@ const { watch( () => route.fullPath, () => { + closeOverflowMenu() resetMobileAppScroll() }, { flush: 'post' }, diff --git a/src/layouts/mobile/MobileOverflowMenu.vue b/src/layouts/mobile/MobileOverflowMenu.vue index d54d66d..558a65a 100644 --- a/src/layouts/mobile/MobileOverflowMenu.vue +++ b/src/layouts/mobile/MobileOverflowMenu.vue @@ -2,12 +2,15 @@
-
+
- +