Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -1689,3 +1689,115 @@ body {
|
||||
width: 98vw;
|
||||
max-width: 1900px;
|
||||
}
|
||||
|
||||
/* ===========================================================
|
||||
GLOBAL MOBILE USABILITY PACK
|
||||
=========================================================== */
|
||||
@media (max-width: 1024px) {
|
||||
.q-layout,
|
||||
.q-page-container,
|
||||
.q-page {
|
||||
max-width: 100vw;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.q-page {
|
||||
padding-left: 8px !important;
|
||||
padding-right: 8px !important;
|
||||
}
|
||||
|
||||
.q-toolbar {
|
||||
min-height: 52px !important;
|
||||
}
|
||||
|
||||
.q-toolbar-title {
|
||||
font-size: 1.15rem;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.page-layout,
|
||||
.statement-page,
|
||||
.order-prod-page,
|
||||
.permissions-page,
|
||||
.user-detail-page {
|
||||
min-height: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.filter-sticky,
|
||||
.local-filter-bar,
|
||||
.sticky-bar,
|
||||
.page-header,
|
||||
.save-toolbar {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.filters-panel {
|
||||
max-height: 46vh;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.top-actions,
|
||||
.top-actions.single-line {
|
||||
flex-wrap: nowrap;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.top-actions > [class*='col-'],
|
||||
.top-actions > .col-auto,
|
||||
.top-actions.single-line > [class*='col-'],
|
||||
.top-actions.single-line > .col-auto {
|
||||
flex: 0 0 auto;
|
||||
min-width: 180px;
|
||||
}
|
||||
|
||||
.top-actions > .col-auto,
|
||||
.top-actions.single-line > .col-auto {
|
||||
min-width: auto;
|
||||
}
|
||||
|
||||
.table-area,
|
||||
.table-scroll,
|
||||
.table-wrap {
|
||||
min-width: 0;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.q-table__middle {
|
||||
overflow: auto !important;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.sticky-bar .q-btn,
|
||||
.page-header .q-btn,
|
||||
.save-toolbar .q-btn {
|
||||
min-height: 30px;
|
||||
font-size: 12px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) and (orientation: landscape) {
|
||||
.filters-panel,
|
||||
.local-filter-bar {
|
||||
max-height: 40vh;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.sticky-bar {
|
||||
padding: 4px 6px !important;
|
||||
}
|
||||
|
||||
.q-table__middle {
|
||||
max-height: calc(100vh - 180px) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<template>
|
||||
<q-page v-if="canReadFinance" class="q-px-md q-pb-md page-col statement-page">
|
||||
|
||||
<div class="local-filter-bar compact-filter q-pa-sm q-mb-xs">
|
||||
<q-slide-transition>
|
||||
<div
|
||||
v-show="!filtersCollapsed"
|
||||
class="local-filter-bar compact-filter q-pa-sm q-mb-xs"
|
||||
>
|
||||
<div class="row q-col-gutter-sm items-end">
|
||||
<div class="col-12 col-md-4">
|
||||
<q-select
|
||||
@@ -88,6 +92,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
|
||||
<!-- Tablo Alanı -->
|
||||
<div class="table-scroll">
|
||||
@@ -106,6 +111,13 @@
|
||||
|
||||
<!-- Sağ taraftaki buton grubu -->
|
||||
<div class="row items-center q-gutter-sm">
|
||||
<q-btn
|
||||
flat
|
||||
color="primary"
|
||||
:icon="filtersCollapsed ? 'unfold_more' : 'unfold_less'"
|
||||
:label="filtersCollapsed ? 'Filtreleri Genişlet' : 'Filtreleri Daralt'"
|
||||
@click="toggleFiltersCollapsed"
|
||||
/>
|
||||
|
||||
<!-- Tüm detayları aç/kapat -->
|
||||
<q-btn
|
||||
@@ -350,6 +362,7 @@ const selectedMonType = ref(monetaryTypeOptions[0].value)
|
||||
/* Expand kontrolü */
|
||||
const expandedRows = ref({})
|
||||
const allDetailsOpen = ref(false)
|
||||
const filtersCollapsed = ref(false)
|
||||
|
||||
/* Kolonları dinamik üretelim */
|
||||
function buildColumns(data) {
|
||||
@@ -424,6 +437,9 @@ function toggleAllDetails() {
|
||||
expandedRows.value = {}
|
||||
}
|
||||
}
|
||||
function toggleFiltersCollapsed () {
|
||||
filtersCollapsed.value = !filtersCollapsed.value
|
||||
}
|
||||
function normalizeText (str) {
|
||||
return (str || '')
|
||||
.toString()
|
||||
@@ -675,5 +691,28 @@ async function CurrheadDownload() {
|
||||
max-width: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) and (orientation: landscape) {
|
||||
.statement-page {
|
||||
height: calc(100vh - 56px);
|
||||
padding-top: 56px !important;
|
||||
}
|
||||
|
||||
.statement-page .local-filter-bar {
|
||||
max-height: 42vh;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.sticky-bar {
|
||||
padding: 4px 6px !important;
|
||||
}
|
||||
|
||||
.sticky-bar :deep(.q-btn) {
|
||||
min-height: 30px;
|
||||
font-size: 12px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ export const useAccountAgingBalanceStore = defineStore('accountAgingBalance', {
|
||||
cariIlkGrupOptions: (state) => uniqueOptions(state.rows, 'cari_ilk_grup'),
|
||||
piyasaOptions: (state) => uniqueOptions(state.rows, 'piyasa'),
|
||||
temsilciOptions: (state) => uniqueOptions(state.rows, 'temsilci'),
|
||||
riskDurumuOptions: (state) => uniqueOptions(state.rows, 'risk_durumu'),
|
||||
riskDurumuOptions: (state) => uniqueOptions(state.rows, 'risk_durumu', { includeDash: true }),
|
||||
ulkeOptions: (state) => uniqueOptions(state.rows, 'ozellik05'),
|
||||
ilOptions: (state) => uniqueOptions(state.rows, 'il'),
|
||||
ilceOptions: (state) => uniqueOptions(state.rows, 'ilce'),
|
||||
@@ -45,7 +45,7 @@ export const useAccountAgingBalanceStore = defineStore('accountAgingBalance', {
|
||||
const matchMulti = (selectedSet, value) => {
|
||||
if (!selectedSet.size) return true
|
||||
const normalized = normalizeText(value)
|
||||
if (!normalized) return true
|
||||
if (!normalized) return selectedSet.has('-')
|
||||
return selectedSet.has(normalized)
|
||||
}
|
||||
|
||||
@@ -239,17 +239,24 @@ export const useAccountAgingBalanceStore = defineStore('accountAgingBalance', {
|
||||
const excludedCariIlkGrup = new Set([normalizeText('transfer'), normalizeText('perakende'), normalizeText('dtf')])
|
||||
this.filters.cariIlkGrup = this.cariIlkGrupOptions.map(o => o.value).filter(v => !excludedCariIlkGrup.has(normalizeText(v)))
|
||||
|
||||
const excludedRisk = new Set([normalizeText('avukat'), normalizeText('orta risk'), normalizeText('yuksek risk')])
|
||||
this.filters.riskDurumu = this.riskDurumuOptions.map(o => o.value).filter(v => !excludedRisk.has(normalizeText(v)))
|
||||
this.filters.riskDurumu = []
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function uniqueOptions (rows, field) {
|
||||
function uniqueOptions (rows, field, opts = {}) {
|
||||
const includeDash = !!opts.includeDash
|
||||
const set = new Set()
|
||||
if (includeDash) set.add('-')
|
||||
for (const r of rows) {
|
||||
const v = String(r[field] || '').trim()
|
||||
if (v) set.add(v)
|
||||
if (v) {
|
||||
set.add(v)
|
||||
continue
|
||||
}
|
||||
if (includeDash) {
|
||||
set.add('-')
|
||||
}
|
||||
}
|
||||
return Array.from(set).sort((a, b) => a.localeCompare(b, 'tr')).map(v => ({ label: v, value: v }))
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ export const useCustomerBalanceListStore = defineStore('customerBalanceList', {
|
||||
cariIlkGrupOptions: (state) => uniqueOptions(state.rows, 'cari_ilk_grup'),
|
||||
piyasaOptions: (state) => uniqueOptions(state.rows, 'piyasa'),
|
||||
temsilciOptions: (state) => uniqueOptions(state.rows, 'temsilci'),
|
||||
riskDurumuOptions: (state) => uniqueOptions(state.rows, 'risk_durumu'),
|
||||
riskDurumuOptions: (state) => uniqueOptions(state.rows, 'risk_durumu', { includeDash: true }),
|
||||
ulkeOptions: (state) => uniqueOptions(state.rows, 'ozellik05'),
|
||||
ilOptions: (state) => uniqueOptions(state.rows, 'il'),
|
||||
ilceOptions: (state) => uniqueOptions(state.rows, 'ilce'),
|
||||
@@ -45,7 +45,7 @@ export const useCustomerBalanceListStore = defineStore('customerBalanceList', {
|
||||
const matchMulti = (selectedSet, value) => {
|
||||
if (!selectedSet.size) return true
|
||||
const normalized = normalizeText(value)
|
||||
if (!normalized) return true
|
||||
if (!normalized) return selectedSet.has('-')
|
||||
return selectedSet.has(normalized)
|
||||
}
|
||||
|
||||
@@ -254,23 +254,24 @@ export const useCustomerBalanceListStore = defineStore('customerBalanceList', {
|
||||
.map(o => o.value)
|
||||
.filter(v => !excludedCariIlkGrup.has(normalizeText(v)))
|
||||
|
||||
const excludedRisk = new Set([
|
||||
normalizeText('avukat'),
|
||||
normalizeText('orta risk'),
|
||||
normalizeText('yuksek risk')
|
||||
])
|
||||
this.filters.riskDurumu = this.riskDurumuOptions
|
||||
.map(o => o.value)
|
||||
.filter(v => !excludedRisk.has(normalizeText(v)))
|
||||
this.filters.riskDurumu = []
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function uniqueOptions (rows, field) {
|
||||
function uniqueOptions (rows, field, opts = {}) {
|
||||
const includeDash = !!opts.includeDash
|
||||
const set = new Set()
|
||||
if (includeDash) set.add('-')
|
||||
for (const r of rows) {
|
||||
const v = String(r[field] || '').trim()
|
||||
if (v) set.add(v)
|
||||
if (v) {
|
||||
set.add(v)
|
||||
continue
|
||||
}
|
||||
if (includeDash) {
|
||||
set.add('-')
|
||||
}
|
||||
}
|
||||
|
||||
return Array.from(set)
|
||||
|
||||
Reference in New Issue
Block a user