Split desktop and mobile layouts with shared page data so APIs fetch once per context.

Add layout shells, desktop views, module-level page caches, and UI fixes for auth, home, wallet, transactions, address, and related pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-14 10:08:46 +03:30
co-authored by Cursor
parent 4404b4cb92
commit a5e458ed25
234 changed files with 18425 additions and 5503 deletions
+22 -29
View File
@@ -1,43 +1,36 @@
<template>
<div style="max-height: calc(100vh - 50px)">
<div class="bg-white py-3 px-3 z-100000 text-primary font-bold drop-shadow flex flex-col wrap-fix">
<div class="flex">
<div @click="router.back()">
<BasicIcon icon="vuesax-linear:arrow-right-1"/>
</div>
<div v-if="route.name=='list'" class="mr-2">دریافت فیزیکی</div>
<div v-else class="mr-2">دریافت فیزیکی-درخواست جدید</div>
<div class="physical-receive-page-root" :class="{ 'physical-receive-page-root--desktop': isDesktop }">
<MobilePhysicalReceiveChrome v-show="!isDesktop" />
<div :class="isDesktop ? 'dpr' : ''">
<div :class="isDesktop ? 'dpr__container' : 'physical-receive-page-root__content'">
<DesktopPhysicalReceiveChrome v-show="isDesktop" />
<router-view />
</div>
</div>
<div>
<router-view></router-view>
</div>
</div>
</template>
<script lang="ts" setup>
import {ref} from "vue";
import RequestList from "@/views/base/physicalReceive/components/RequestList.vue";
import NewRequest from "@/views/base/physicalReceive/components/NewRequest.vue";
import router from "@/router";
import BasicIcon from "@/components/BasicPacks/BasicIcon.vue";
import {useRoute} from "vue-router";
import { usePhysicalReceiveShell } from './composables/usePhysicalReceiveShell'
import DesktopPhysicalReceiveChrome from './desktop/DesktopPhysicalReceiveChrome.vue'
import MobilePhysicalReceiveChrome from './mobile/MobilePhysicalReceiveChrome.vue'
const activekey=ref(1)
const route=useRoute()
const { isDesktop } = usePhysicalReceiveShell()
</script>
<style scoped>
/*.fade-enter-active,
.fade-leave-active {
transition: opacity 0.2s ease;
.physical-receive-page-root {
min-height: 100%;
height: 100%;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}*/
/*.trans{
transition: height 1s;
}*/
.physical-receive-page-root__content {
min-height: 0;
}
.physical-receive-page-root--desktop {
height: auto;
min-height: 0;
}
</style>