Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -1689,3 +1689,115 @@ body {
|
|||||||
width: 98vw;
|
width: 98vw;
|
||||||
max-width: 1900px;
|
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>
|
<template>
|
||||||
<q-page v-if="canReadFinance" class="q-px-md q-pb-md page-col statement-page">
|
<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="row q-col-gutter-sm items-end">
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<q-select
|
<q-select
|
||||||
@@ -88,6 +92,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</q-slide-transition>
|
||||||
|
|
||||||
<!-- Tablo Alanı -->
|
<!-- Tablo Alanı -->
|
||||||
<div class="table-scroll">
|
<div class="table-scroll">
|
||||||
@@ -106,6 +111,13 @@
|
|||||||
|
|
||||||
<!-- Sağ taraftaki buton grubu -->
|
<!-- Sağ taraftaki buton grubu -->
|
||||||
<div class="row items-center q-gutter-sm">
|
<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 -->
|
<!-- Tüm detayları aç/kapat -->
|
||||||
<q-btn
|
<q-btn
|
||||||
@@ -350,6 +362,7 @@ const selectedMonType = ref(monetaryTypeOptions[0].value)
|
|||||||
/* Expand kontrolü */
|
/* Expand kontrolü */
|
||||||
const expandedRows = ref({})
|
const expandedRows = ref({})
|
||||||
const allDetailsOpen = ref(false)
|
const allDetailsOpen = ref(false)
|
||||||
|
const filtersCollapsed = ref(false)
|
||||||
|
|
||||||
/* Kolonları dinamik üretelim */
|
/* Kolonları dinamik üretelim */
|
||||||
function buildColumns(data) {
|
function buildColumns(data) {
|
||||||
@@ -424,6 +437,9 @@ function toggleAllDetails() {
|
|||||||
expandedRows.value = {}
|
expandedRows.value = {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function toggleFiltersCollapsed () {
|
||||||
|
filtersCollapsed.value = !filtersCollapsed.value
|
||||||
|
}
|
||||||
function normalizeText (str) {
|
function normalizeText (str) {
|
||||||
return (str || '')
|
return (str || '')
|
||||||
.toString()
|
.toString()
|
||||||
@@ -675,5 +691,28 @@ async function CurrheadDownload() {
|
|||||||
max-width: 180px;
|
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>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export const useAccountAgingBalanceStore = defineStore('accountAgingBalance', {
|
|||||||
cariIlkGrupOptions: (state) => uniqueOptions(state.rows, 'cari_ilk_grup'),
|
cariIlkGrupOptions: (state) => uniqueOptions(state.rows, 'cari_ilk_grup'),
|
||||||
piyasaOptions: (state) => uniqueOptions(state.rows, 'piyasa'),
|
piyasaOptions: (state) => uniqueOptions(state.rows, 'piyasa'),
|
||||||
temsilciOptions: (state) => uniqueOptions(state.rows, 'temsilci'),
|
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'),
|
ulkeOptions: (state) => uniqueOptions(state.rows, 'ozellik05'),
|
||||||
ilOptions: (state) => uniqueOptions(state.rows, 'il'),
|
ilOptions: (state) => uniqueOptions(state.rows, 'il'),
|
||||||
ilceOptions: (state) => uniqueOptions(state.rows, 'ilce'),
|
ilceOptions: (state) => uniqueOptions(state.rows, 'ilce'),
|
||||||
@@ -45,7 +45,7 @@ export const useAccountAgingBalanceStore = defineStore('accountAgingBalance', {
|
|||||||
const matchMulti = (selectedSet, value) => {
|
const matchMulti = (selectedSet, value) => {
|
||||||
if (!selectedSet.size) return true
|
if (!selectedSet.size) return true
|
||||||
const normalized = normalizeText(value)
|
const normalized = normalizeText(value)
|
||||||
if (!normalized) return true
|
if (!normalized) return selectedSet.has('-')
|
||||||
return selectedSet.has(normalized)
|
return selectedSet.has(normalized)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,17 +239,24 @@ export const useAccountAgingBalanceStore = defineStore('accountAgingBalance', {
|
|||||||
const excludedCariIlkGrup = new Set([normalizeText('transfer'), normalizeText('perakende'), normalizeText('dtf')])
|
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)))
|
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.filters.riskDurumu = this.riskDurumuOptions.map(o => o.value).filter(v => !excludedRisk.has(normalizeText(v)))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
function uniqueOptions (rows, field) {
|
function uniqueOptions (rows, field, opts = {}) {
|
||||||
|
const includeDash = !!opts.includeDash
|
||||||
const set = new Set()
|
const set = new Set()
|
||||||
|
if (includeDash) set.add('-')
|
||||||
for (const r of rows) {
|
for (const r of rows) {
|
||||||
const v = String(r[field] || '').trim()
|
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 }))
|
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'),
|
cariIlkGrupOptions: (state) => uniqueOptions(state.rows, 'cari_ilk_grup'),
|
||||||
piyasaOptions: (state) => uniqueOptions(state.rows, 'piyasa'),
|
piyasaOptions: (state) => uniqueOptions(state.rows, 'piyasa'),
|
||||||
temsilciOptions: (state) => uniqueOptions(state.rows, 'temsilci'),
|
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'),
|
ulkeOptions: (state) => uniqueOptions(state.rows, 'ozellik05'),
|
||||||
ilOptions: (state) => uniqueOptions(state.rows, 'il'),
|
ilOptions: (state) => uniqueOptions(state.rows, 'il'),
|
||||||
ilceOptions: (state) => uniqueOptions(state.rows, 'ilce'),
|
ilceOptions: (state) => uniqueOptions(state.rows, 'ilce'),
|
||||||
@@ -45,7 +45,7 @@ export const useCustomerBalanceListStore = defineStore('customerBalanceList', {
|
|||||||
const matchMulti = (selectedSet, value) => {
|
const matchMulti = (selectedSet, value) => {
|
||||||
if (!selectedSet.size) return true
|
if (!selectedSet.size) return true
|
||||||
const normalized = normalizeText(value)
|
const normalized = normalizeText(value)
|
||||||
if (!normalized) return true
|
if (!normalized) return selectedSet.has('-')
|
||||||
return selectedSet.has(normalized)
|
return selectedSet.has(normalized)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,23 +254,24 @@ export const useCustomerBalanceListStore = defineStore('customerBalanceList', {
|
|||||||
.map(o => o.value)
|
.map(o => o.value)
|
||||||
.filter(v => !excludedCariIlkGrup.has(normalizeText(v)))
|
.filter(v => !excludedCariIlkGrup.has(normalizeText(v)))
|
||||||
|
|
||||||
const excludedRisk = new Set([
|
this.filters.riskDurumu = []
|
||||||
normalizeText('avukat'),
|
|
||||||
normalizeText('orta risk'),
|
|
||||||
normalizeText('yuksek risk')
|
|
||||||
])
|
|
||||||
this.filters.riskDurumu = this.riskDurumuOptions
|
|
||||||
.map(o => o.value)
|
|
||||||
.filter(v => !excludedRisk.has(normalizeText(v)))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
function uniqueOptions (rows, field) {
|
function uniqueOptions (rows, field, opts = {}) {
|
||||||
|
const includeDash = !!opts.includeDash
|
||||||
const set = new Set()
|
const set = new Set()
|
||||||
|
if (includeDash) set.add('-')
|
||||||
for (const r of rows) {
|
for (const r of rows) {
|
||||||
const v = String(r[field] || '').trim()
|
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)
|
return Array.from(set)
|
||||||
|
|||||||
Reference in New Issue
Block a user