Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
<template>
|
||||
<template>
|
||||
<!-- ===========================================================
|
||||
🧾 ORDER ENTRY PAGE (BSSApp)
|
||||
v23 — Sticky-stack + Drawer uyumlu yapı
|
||||
@@ -8,14 +8,15 @@
|
||||
class="order-page"
|
||||
>
|
||||
<!-- 🔄 SAYFA LOADERI -->
|
||||
<q-inner-loading :showing="loadingHeader || loadingCari || loadingModels" color="primary">
|
||||
<q-inner-loading :showing="isPageBlocking" color="primary">
|
||||
<q-spinner size="50px" />
|
||||
</q-inner-loading>
|
||||
|
||||
<!-- =======================================================
|
||||
🔹 STICKY STACK (Filter + Save + Header)
|
||||
======================================================== -->
|
||||
<div class="sticky-stack">
|
||||
<template v-if="!isPageBlocking">
|
||||
<!-- =======================================================
|
||||
🔹 STICKY STACK (Filter + Save + Header)
|
||||
======================================================== -->
|
||||
<div class="sticky-stack">
|
||||
|
||||
<!-- 🔸 1. Satır: Filtre Bar -->
|
||||
<div class="filter-bar row q-col-gutter-md q-mb-sm">
|
||||
@@ -168,8 +169,22 @@
|
||||
</template>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- 📝 Sipariş Genel Açıklaması (filter bar altında) -->
|
||||
<div class="filter-bar-desc q-mt-sm">
|
||||
<q-input
|
||||
v-model="form.Description"
|
||||
type="textarea"
|
||||
label="Sipariş Genel Açıklaması"
|
||||
filled
|
||||
dense
|
||||
autogrow
|
||||
maxlength="1500"
|
||||
counter
|
||||
placeholder="Siparişe genel açıklama giriniz (örn. teslimat, üretim notu, müşteri isteği...)"
|
||||
:disable="isClosedRow"
|
||||
:readonly="isViewOnly"
|
||||
/>
|
||||
</div>
|
||||
<!-- 🔹 Cari Bilgi Barı -->
|
||||
<q-slide-transition>
|
||||
@@ -212,6 +227,14 @@
|
||||
<div class="save-toolbar">
|
||||
<div class="text-subtitle2 text-weight-bold">Sipariş Formu</div>
|
||||
<div>
|
||||
<q-btn
|
||||
flat
|
||||
color="grey-7"
|
||||
class="q-ml-sm"
|
||||
:label="compactGridHeader ? 'BAŞLIK GENİŞLET' : 'BAŞLIK DARALT'"
|
||||
:icon="compactGridHeader ? 'unfold_more' : 'unfold_less'"
|
||||
@click="compactGridHeader = !compactGridHeader"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="isViewOnly && canExportOrder"
|
||||
label="🖨 SİPARİŞİ YAZDIR"
|
||||
@@ -222,7 +245,16 @@
|
||||
/>
|
||||
|
||||
<q-btn
|
||||
v-else-if="canSubmitOrder"
|
||||
v-if="canMutateRows"
|
||||
label="SATIR EKLE"
|
||||
color="secondary"
|
||||
icon="add"
|
||||
class="q-ml-sm"
|
||||
@click="openNewRowEditor"
|
||||
:disable="isClosedRow || isViewOnly || !canMutateRows"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="canSubmitOrder"
|
||||
:label="isEditMode ? 'TÜMÜNÜ GÜNCELLE' : 'TÜMÜNÜ KAYDET'"
|
||||
color="primary"
|
||||
icon="save"
|
||||
@@ -231,24 +263,15 @@
|
||||
:disable="!canSubmitOrder"
|
||||
@click="confirmAndSubmit"
|
||||
/>
|
||||
<q-btn
|
||||
label="YENİ SİPARİŞ"
|
||||
v-if="canWriteOrder"
|
||||
color="secondary"
|
||||
icon="add_circle"
|
||||
class="q-ml-sm"
|
||||
@click="onResetEditorClick"
|
||||
:disable="isClosedRow || !canWriteOrder"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 🔹 Grid Header -->
|
||||
<div class="order-grid-header">
|
||||
<div class="order-grid-header" :class="{ compact: compactGridHeader }">
|
||||
<div class="col-fixed model">MODEL</div>
|
||||
<div class="col-fixed renk">RENK</div>
|
||||
<div class="col-fixed ana">ÜRÜN ANA<br />GRUBU</div>
|
||||
<div class="col-fixed alt">ÜRÜN ALT<br />GRUBU</div>
|
||||
<div class="col-fixed ana">ÜRÜN ANA GRUBU</div>
|
||||
<div class="col-fixed alt">ÜRÜN ALT GRUBU</div>
|
||||
<div class="col-fixed aciklama-col">AÇIKLAMA</div>
|
||||
|
||||
<div class="beden-block">
|
||||
@@ -289,7 +312,7 @@
|
||||
<!-- =======================================================
|
||||
🔹 GRID BODY (Final Stabil) + EDITOR aynı scroll’da
|
||||
======================================================== -->
|
||||
<div class="order-scroll-y"> <!-- ✅ YENİ: Grid + Editor ortak dikey scroll -->
|
||||
<div class="order-scroll-y" :class="{ 'compact-grid-header': compactGridHeader }"> <!-- ✅ YENİ: Grid + Editor ortak dikey scroll -->
|
||||
<div class="order-grid-body">
|
||||
<template v-for="grp in groupedRows" :key="grp.name">
|
||||
<div :class="['summary-group', grp.open ? 'open' : 'closed']">
|
||||
@@ -424,7 +447,24 @@
|
||||
<!-- =======================================================
|
||||
🔹 SATIR DÜZENLEYİCİ FORM (EDITOR)
|
||||
======================================================== -->
|
||||
<div class="editor q-mt-lg q-pa-sm">
|
||||
<q-dialog
|
||||
v-model="showEditor"
|
||||
class="order-editor-dialog"
|
||||
:maximized="$q.screen.lt.md"
|
||||
full-width
|
||||
transition-show="jump-down"
|
||||
transition-hide="jump-up"
|
||||
persistent
|
||||
>
|
||||
<q-card class="order-editor-card">
|
||||
<q-card-section class="row items-center justify-between">
|
||||
<div class="text-subtitle1 text-weight-bold">
|
||||
{{ isEditing ? 'Satır Düzenle' : 'Yeni Satır' }}
|
||||
</div>
|
||||
<q-btn flat round icon="close" @click="showEditor = false" />
|
||||
</q-card-section>
|
||||
<q-separator />
|
||||
<q-card-section class="editor q-pa-sm">
|
||||
|
||||
<!-- 🔸 1. Satır: Model ve Ürün Bilgileri -->
|
||||
<div class="row q-col-gutter-sm q-mb-sm">
|
||||
@@ -717,28 +757,11 @@
|
||||
butonuna basarak işlemleri kaydedebilirsiniz.
|
||||
</div>
|
||||
|
||||
<!-- =======================================================
|
||||
🔹 SİPARİŞ GENEL AÇIKLAMASI
|
||||
======================================================== -->
|
||||
<div class="row q-mt-md">
|
||||
<div class="col-12">
|
||||
<q-input
|
||||
v-model="form.Description"
|
||||
type="textarea"
|
||||
label="Sipariş Genel Açıklaması"
|
||||
filled
|
||||
dense
|
||||
autogrow
|
||||
maxlength="1500"
|
||||
counter
|
||||
placeholder="Siparişe genel açıklama giriniz (örn. teslimat, üretim notu, müşteri isteği...)"
|
||||
:disable="isClosedRow"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- editor -->
|
||||
</div> <!-- ✅ order-scroll-y -->
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</div> <!-- ✅ order-scroll-y -->
|
||||
</template>
|
||||
|
||||
</q-page>
|
||||
<q-page
|
||||
@@ -777,6 +800,8 @@ const canExportOrder = canExport('order')
|
||||
const formatDate = formatDateDisplay
|
||||
|
||||
|
||||
const showEditor = ref(false)
|
||||
const compactGridHeader = ref(false)
|
||||
|
||||
|
||||
|
||||
@@ -1094,6 +1119,16 @@ const seriMultiplier = ref(1)
|
||||
const loadingHeader = ref(true)
|
||||
const loadingCari = ref(true)
|
||||
const loadingModels = ref(true)
|
||||
const isPageBlocking = computed(() => {
|
||||
if (!isEditMode.value) return false
|
||||
const headerReady = !!orderStore.header
|
||||
return (
|
||||
loadingHeader.value ||
|
||||
loadingCari.value ||
|
||||
loadingModels.value ||
|
||||
!headerReady
|
||||
)
|
||||
})
|
||||
/* ===========================================================
|
||||
🔹 CARİ INFO STATE
|
||||
=========================================================== */
|
||||
@@ -2346,11 +2381,22 @@ const editRow = async (row) => {
|
||||
notify: true,
|
||||
loadSizes: true
|
||||
})
|
||||
showEditor.value = true
|
||||
} catch (err) {
|
||||
console.error('❌ editRow hata:', err)
|
||||
}
|
||||
}
|
||||
|
||||
const openNewRowEditor = async () => {
|
||||
if (!hasRowMutationPermission()) {
|
||||
notifyNoPermission('Siparis satiri ekleme/guncelleme yetkiniz yok')
|
||||
return
|
||||
}
|
||||
|
||||
await resetEditor(true)
|
||||
showEditor.value = true
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2765,6 +2811,7 @@ const onSaveOrUpdateRow = async () => {
|
||||
stockMap,
|
||||
$q
|
||||
})
|
||||
showEditor.value = false
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user