Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-06-18 17:49:30 +03:00
parent 149cea778e
commit d1fbe60aeb
5 changed files with 216 additions and 105 deletions

View File

@@ -3,6 +3,18 @@
<q-inner-loading :showing="pageBusy">
<q-spinner-gears size="52px" color="primary" />
</q-inner-loading>
<div
v-if="pageBusy"
class="page-busy-overlay"
@click.stop
@mousedown.stop
@mouseup.stop
@touchstart.stop
@wheel.stop
>
<q-spinner-gears size="56px" color="primary" />
<div class="page-busy-label">Yukleniyor...</div>
</div>
<div class="top-bar row items-center justify-between q-mb-xs">
<div class="text-subtitle1 text-weight-bold">Urun Fiyatlandirma</div>
@@ -69,7 +81,7 @@
:disable="pageBusy"
@click="leftDetailsExpanded = !leftDetailsExpanded"
/>
<q-btn-dropdown dense color="secondary" outline icon="view_module" label="Doviz Gorunumu" :auto-close="false">
<q-btn-dropdown dense color="secondary" outline icon="view_module" label="Doviz Gorunumu" :auto-close="false" :disable="pageBusy">
<q-list dense class="currency-menu-list">
<q-item clickable @click="selectAllCurrencies">
<q-item-section>Tumunu Sec</q-item-section>
@@ -126,7 +138,7 @@
</div>
<div class="toolbar-group">
<q-btn-dropdown dense color="primary" outline icon="download" label="Cikti Al" :auto-close="true">
<q-btn-dropdown dense color="primary" outline icon="download" label="Cikti Al" :auto-close="true" :disable="pageBusy">
<q-list dense style="min-width: 260px;">
<q-item clickable :disable="filteredRows.length === 0" @click="exportCurrentView">
<q-item-section avatar><q-icon name="grid_on" /></q-item-section>
@@ -2503,7 +2515,12 @@ async function reloadData ({ page = 1, useCache = true } = {}) {
await bindHorizontalScrollSync()
// Let the table render before we re-enable actions (prevents double-submits while the UI is still updating).
await nextTick()
await new Promise((resolve) => setTimeout(resolve, 0))
const remainingBusyMs = Math.max(0, 350 - (Date.now() - startedAt))
await new Promise((resolve) => setTimeout(resolve, remainingBusyMs))
console.info('[product-pricing][ui] render:done', {
duration_ms: Date.now() - startedAt,
row_count: Array.isArray(store.rows) ? store.rows.length : 0
})
isReloading.value = false
}
}
@@ -2574,6 +2591,27 @@ onBeforeUnmount(() => {
min-width: 170px;
}
.page-busy-overlay {
position: fixed;
inset: 0;
z-index: 9000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 10px;
background: rgba(255, 255, 255, 0.72);
backdrop-filter: blur(1px);
cursor: wait;
pointer-events: all;
}
.page-busy-label {
color: #1f2937;
font-size: 13px;
font-weight: 700;
}
.top-actions {
display: flex;
flex-direction: column;

View File

@@ -3,6 +3,18 @@
<q-inner-loading :showing="pageBusy">
<q-spinner-gears size="52px" color="primary" />
</q-inner-loading>
<div
v-if="pageBusy"
class="page-busy-overlay"
@click.stop
@mousedown.stop
@mouseup.stop
@touchstart.stop
@wheel.stop
>
<q-spinner-gears size="56px" color="primary" />
<div class="page-busy-label">Yukleniyor...</div>
</div>
<div class="top-bar row items-center justify-between q-mb-xs">
<div class="text-subtitle1 text-weight-bold">Toptan Kampanya Yonetimi</div>
@@ -69,7 +81,7 @@
:disable="pageBusy"
@click="leftDetailsExpanded = !leftDetailsExpanded"
/>
<q-btn-dropdown dense color="secondary" outline icon="view_module" label="Gosterge Fiyat Sec" :auto-close="false">
<q-btn-dropdown dense color="secondary" outline icon="view_module" label="Gosterge Fiyat Sec" :auto-close="false" :disable="pageBusy">
<q-list dense class="currency-menu-list">
<q-item clickable @click="selectAllPriceOptions">
<q-item-section>Tumunu Sec</q-item-section>
@@ -130,7 +142,7 @@
</div>
<div class="toolbar-group">
<q-btn-dropdown dense color="primary" outline icon="download" label="Cikti Al" :auto-close="true">
<q-btn-dropdown dense color="primary" outline icon="download" label="Cikti Al" :auto-close="true" :disable="pageBusy">
<q-list dense style="min-width: 260px;">
<q-item clickable :disable="filteredRows.length === 0" @click="exportCurrentView">
<q-item-section avatar><q-icon name="grid_on" /></q-item-section>
@@ -2713,7 +2725,13 @@ async function reloadData ({ page = 1, useCache = true } = {}) {
})
await bindHorizontalScrollSync()
await nextTick()
await new Promise((resolve) => setTimeout(resolve, 0))
const remainingBusyMs = Math.max(0, 350 - (Date.now() - startedAt))
await new Promise((resolve) => setTimeout(resolve, remainingBusyMs))
console.info('[product-pricing][ui] render:done', {
duration_ms: Date.now() - startedAt,
row_count: Array.isArray(store.rows) ? store.rows.length : 0,
variant_row_count: Array.isArray(variantRows.value) ? variantRows.value.length : 0
})
isReloading.value = false
}
}
@@ -2787,6 +2805,27 @@ onBeforeUnmount(() => {
min-width: 170px;
}
.page-busy-overlay {
position: fixed;
inset: 0;
z-index: 9000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 10px;
background: rgba(255, 255, 255, 0.72);
backdrop-filter: blur(1px);
cursor: wait;
pointer-events: all;
}
.page-busy-label {
color: #1f2937;
font-size: 13px;
font-weight: 700;
}
.top-actions {
display: flex;
flex-direction: column;