Improve boursecu UX: banners, support FAB, wallet deposit guide, fund/physical layouts, nav, and sidebar credit.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-23 14:10:40 +02:00
co-authored by Cursor
parent 21345318ba
commit 4fd12277e7
40 changed files with 1844 additions and 305 deletions
@@ -17,6 +17,14 @@
<span>مقدار موجودی</span>
<span class="font-bold">{{ displayGold }}</span>
<span>{{ quantityUnit }}</span>
<div
v-if="minDeliveryQuantity > 0"
class="mt-0.5 w-full text-xs text-gray-500"
>
حداقل مقدار تحویل:
<span class="font-bold text-gray-700">{{ displayMinDelivery }}</span>
{{ quantityUnit }}
</div>
<div
v-if="getProductUnitWeightLabel(item.product)"
class="mt-0.5 text-xs text-gray-500"
@@ -90,6 +98,18 @@ const displayGold = computed(() => {
return isCountBased.value ? usePriceWithoutType(gold, false) : formatGoldAmount(gold)
})
const minDeliveryQuantity = computed(() => {
const min = Number(props.item.product.min_physical_delivery_quantity ?? 0)
return Number.isFinite(min) && min > 0 ? min : 0
})
const displayMinDelivery = computed(() => {
if (minDeliveryQuantity.value <= 0) return ''
return isCountBased.value
? usePriceWithoutType(minDeliveryQuantity.value, false)
: formatGoldAmount(minDeliveryQuantity.value)
})
const config = useConfigStore()
function selectCountInput(e: FocusEvent) {
@@ -1,5 +1,8 @@
<template>
<div class="physical-receive-list-root">
<div
class="physical-receive-list-root"
:class="{ 'physical-receive-list-root--desktop': isDesktop }"
>
<MobileRequestListView v-show="!isDesktop" />
<DesktopRequestListView v-show="isDesktop" />
</div>
@@ -30,4 +33,20 @@ usePhysicalReceiveList()
min-height: 0;
height: 100%;
}
/* Desktop: let list grow with content; page scroll handles overflow */
.physical-receive-list-root--desktop {
flex: none;
display: block;
height: auto;
min-height: 0;
overflow: visible;
}
.physical-receive-list-root--desktop > * {
flex: none;
height: auto;
min-height: 0;
overflow: visible;
}
</style>
@@ -2,14 +2,17 @@
.dpr {
min-height: 100%;
height: auto;
background: #f6f7f9;
color: #111827;
overflow: visible;
}
.dpr__container {
max-width: 1180px;
margin: 0 auto;
padding: 28px 36px 40px;
overflow: visible;
}
.dpr-topbar {
@@ -81,6 +84,8 @@
border: 1px solid rgba(15, 23, 42, 0.06);
border-radius: 16px;
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
height: auto;
overflow: visible;
&__toolbar {
display: flex;
@@ -88,6 +93,7 @@
justify-content: space-between;
gap: 12px;
margin-bottom: 20px;
flex-shrink: 0;
}
&__count {
+8
View File
@@ -51,6 +51,14 @@ const { isDesktop } = usePhysicalReceiveShell()
}
.physical-receive-page-root--desktop {
display: block;
height: auto;
min-height: 100%;
overflow: visible;
}
.physical-receive-page-root--desktop :deep(.physical-receive-list-root),
.physical-receive-page-root--desktop :deep(.dpr-list) {
height: auto;
min-height: 0;
overflow: visible;