@@ -233,13 +233,13 @@
/ >
< / td >
< td >
{ { kk } } : { { khk } }
{ { kk } } : { { khk } }
< / td >
< td >
{ { kv . hedefAlan } }
{ { kv . hedefAlan } }
< br / >
< template v-for = "oran in khv" :key="oran.deger" >
% {{ oran.oran }} - - > { { oran . deger } }
% {{ oran.oran }} - - > { { oran . deger } }
< br / >
< / template >
< / td >
@@ -279,13 +279,32 @@
< thead >
< tr >
< td class = "text-weight-bolder" >
< q-btn icon = "add" flat dense >
< q-tooltip > Kriter değeri ekle < / q-tooltip >
< q-popup-edit
v-model = "ld.mappingVal"
buttons
v-slot = "scope"
anchor = "top left"
persistent
@ update :modelValue = "addMappingKey(k)"
>
< q-input
v-model = "scope.value"
dense
autofocus
@keyup.enter ="scope.set" />
< / q -popup -edit >
< / q-btn >
Değer
< q-btn
flat
icon = "add "
icon = "mdi-table-column-plus-after "
dense
color = "positive"
/ >
>
< q-tooltip > Veri alanı ekle < / q-tooltip >
< q-popup-edit
v-model = "ld.selectedVal"
buttons
@@ -300,6 +319,14 @@
counter
@keyup.enter ="scope.set" />
< / q -popup -edit >
< / q-btn >
< q-btn flat icon = "content_copy" dense
@click ="copyMappingKeys(k)"
>
< q-tooltip > Kriter değerlerini koopyala < / q-tooltip >
< / q-btn >
< / td >
< td v-for = "f in v.valFields" :key="f" >
{{ f }}
@@ -310,6 +337,25 @@
color = "negative"
@click ="delMapping(k, f)"
/ >
< q-btn flat icon = "south" dense >
< q-tooltip > Girilen değeri tüm satı rlara kopyala < / q-tooltip >
< q-popup-edit
v-model = "ld.mappingVal"
buttons
v-slot = "scope"
anchor = "top left"
persistent
@ update : modelValue = "fillMappings(k, f)"
>
< q-input
v-model = "scope.value"
dense
autofocus
@keyup.enter ="scope.set" />
< / q -popup -edit >
< / q-btn >
< / td >
< / tr >
< / thead >
@@ -321,6 +367,9 @@
v-model = "kv[f]"
dense
@ update :modelValue = "ld.isDirty=true"
:label = "f"
stack -label
label -color = " primary "
/ >
< / td >
@@ -451,10 +500,10 @@
import { computed , onMounted , reactive , toRaw } from 'vue'
import { useI18n } from 'vue-i18n'
import { api } from 'boot/axios'
import { catchAxiosError , showAxiosError } from 'src/libjs/lib/axios'
import { catchAxiosError , showAxiosError , showError , showSuccess } from 'src/libjs/lib/axios'
import MEditHeader from 'src/libjs/comp/MEditHeader.vue'
import { read , utils } from 'xlsx'
import { useQuasar } from 'quasar'
import { copyToClipboard , useQuasar } from 'quasar'
const { t } = useI18n ( )
const $q = useQuasar ( )
@@ -479,6 +528,8 @@ const ld = reactive({
//{baz: xxx, hedef: [{deger: yyy, oran: zzz}]}
] ,
} ,
mappingVal : '' ,
} )
const tmpl = reactive ( {
@@ -540,7 +591,7 @@ const fieldOptionsLabel = computed(() => {
const ls = tmpl . alanlar . filter ( f => { return f . colNro >= 0 } )
const opts = [ ]
ls . forEach ( f => {
opts . push ( f . fieldName )
opts . push ( f . fieldName )
} )
return opts
} )
@@ -656,40 +707,37 @@ const processXLS = function () {
const sheet = workbook . Sheets [ tmpl . bordroSheet ]
tmpl . rawData = utils . sheet _to _json ( sheet , { header : 1 } )
/*
tmpl.alanlar.splice(0)
*/
const fieldNames = [ ]
let lastCol = - 1
tmpl . rawData [ tmpl . baslikSatiri - 1 ] . forEach ( ( val , ndx ) => {
//başlı k olmayan kolonlar
if ( ndx - lastCol > 1 ) {
for ( le t j = 1 ; j < ndx - lastCol ; j ++ ) {
tmpl . alanla r . push ( {
colNro : lastCol + 1 ,
fieldName : ` Kolon ${ lastCol + 2 } ` ,
colType : '' ,
ba : 'B' ,
showInSlip : false ,
combinedFields : [ ] ,
combinedFieldsNro : [ ] ,
formula : '' ,
} )
}
cons t msg = 'Başlı ksı z kolonlar var. Dosya işlenemez'
showErro r( msg )
throw msg
}
let name = val
for ( let j = 1 ; j < tmpl . baslikSatirAdedi ; j ++ ) {
let addiVal = tmpl . rawData [ tmpl . baslikSatiri - 1 + j ] [ ndx ]
if ( ! addiVal ) {
addiVal = ''
}
if ( addiVal ) {
name = name + ' ' + addiVal
}
}
name = name . trim ( )
fieldNames . push ( name )
const alanIndex = tmpl . alanlar . findIndex ( f => { return f . fieldName === name } )
if ( alanIndex < 0 ) {
tmpl . alanlar . push ( {
colNro : ndx ,
fieldName : name . trim ( ) ,
fieldName : name ,
colType : '' ,
ba : 'B' ,
showInSlip : false ,
@@ -697,24 +745,88 @@ const processXLS = function () {
combinedFieldsNro : [ ] ,
formula : '' ,
} )
} else {
if ( tmpl . alanlar [ alanIndex ] . colNro !== ndx ) {
const oldColNro = tmpl . alanlar [ alanIndex ] . colNro
tmpl . alanlar [ alanIndex ] . colNro = ndx
//kriter kolon no'ları güncelleyelim
Object . keys ( tmpl . kriterler ) . forEach ( kr => {
if ( tmpl . kriterler [ kr ] . colNro === oldColNro ) {
tmpl . kriterler [ kr ] . colNro = ndx
}
for ( let j = 0 ; j < tmpl . kriterler [ kr ] . combinedFieldsNro . length ; j ++ ) {
if ( tmpl . kriterler [ kr ] . combinedFieldsNro [ j ] === oldColNro ) {
tmpl . kriterler [ kr ] . combinedFieldsNro [ j ] = ndx
}
}
} )
// Dağtı m kolon no'ları güncelleyelim
Object . keys ( tmpl . dagitim ) . forEach ( dk => {
if ( tmpl . dagitim [ dk ] . bazAlanColNro === oldColNro ) {
tmpl . dagitim [ dk ] . bazAlanColNro = ndx
}
if ( tmpl . dagitim [ dk ] . hedefAlanColNro === oldColNro ) {
tmpl . dagitim [ dk ] . hedefAlanColNro = ndx
}
} )
// Birleşik kriterleri güncelleyelim
tmpl . alanlar . forEach ( af => {
if ( af . colNro < 0 ) {
for ( let j = 0 ; j < af . combinedFieldsNro . length ; j ++ ) {
if ( af . combinedFieldsNro [ j ] === oldColNro ) {
af . combinedFieldsNro [ j ] = ndx
}
}
}
} )
}
}
lastCol = ndx
} )
// Sı ralayalı m
tmpl . alanlar . sort ( ( a , b ) => {
if ( a . colNro < b . colNro ) {
return - 1
} else {
return 1
}
} )
// excelden silinen alanları uçuralı m
tmpl . alanlar . forEach ( ( v , n ) => {
const tmpIndex = fieldNames . findIndex ( el => { return v . fieldName === el } )
if ( tmpIndex < 0 ) {
console . log ( v . fieldName )
tmpl . alanlar . splice ( n , 1 )
}
} )
ld . showFields = true
}
const fillCriteria = function ( ) {
ld . isDirty = true
// kriterleri temizleyelim
/*
Object.keys(ld.alreadySelectedValFields).forEach(k => {
delete ld.alreadySelectedValFields[k]
})
tmpl.kriterler = {}
*/
// kriter alanları nı bulup boş kriter nesnelerini oluşturalı m
const kriterCols = [ ]
tmpl . alanlar . filter ( f => { return f . colType === 'kriter' } ) . forEach ( f => {
if ( ! tmpl . kriterler . hasOwnProperty ( f . fieldName ) ) {
tmpl . kriterler [ f . fieldName ] = {
colNro : f . colNro ,
@@ -734,9 +846,18 @@ const fillCriteria = function () {
mapping['kriter1'] = {xxx: 770.01.001, yyy: 770.01.002}
*/
}
}
kriterCols . push ( f . fieldName )
} )
// kriter olmayan kolonları silelim
Object . keys ( tmpl . kriterler ) . forEach ( k => {
if ( kriterCols . indexOf ( k ) < 0 ) {
delete tmpl . kriterler [ k ]
}
} )
tmpl . rawData . forEach ( ( row , ndx ) => {
if ( ndx <= tmpl . baslikSatiri - 1 + tmpl . baslikSatirAdedi ) {
@@ -764,9 +885,15 @@ const fillCriteria = function () {
}
if ( ( kriterVal !== null ) && ( kriterVal !== undefined ) && ( kriterVal !== '' ) ) {
tmpl . kriterler [ k ] . mappings [ kriterVal ] = { }
}
if ( ! tmpl . kriterler [ k ] . mappings . hasOwnProperty ( kriterVal ) ) {
tmpl . kriterler [ k ] . mappings [ kriterVal ] = { }
tmpl . kriterler [ k ] . valFields . forEach ( f => {
tmpl . kriterler [ k ] . mappings [ ld . mappingVal ] [ f ] = ''
} )
}
}
} )
}
}
@@ -797,6 +924,49 @@ const delMapping = function (k, valField) {
} )
}
const fillMappings = function ( k , valField ) {
ld . isDirty = true
Object . keys ( tmpl . kriterler [ k ] . mappings ) . forEach ( vk => {
tmpl . kriterler [ k ] . mappings [ vk ] [ valField ] = ld . mappingVal
} )
ld . mappingVal = ''
}
const addMappingKey = function ( k ) {
ld . isDirty = true
tmpl . kriterler [ k ] . mappings [ ld . mappingVal ] = { }
tmpl . kriterler [ k ] . valFields . forEach ( f => {
tmpl . kriterler [ k ] . mappings [ ld . mappingVal ] [ f ] = ''
} )
ld . mappingVal = ''
}
const copyMappingKeys = function ( k ) {
let text = ''
Object . keys ( tmpl . kriterler [ k ] . mappings ) . forEach ( vk => {
text += vk + '\n'
} )
copyToClipboard ( text ) . then ( ( ) => {
showSuccess ( 'Kriter değerleri kopyalandı ' )
} ) . catch ( ( ) => {
alert ( 'kopyalamada hata' )
} )
}
const fillMappingsFromExcel = function ( k , valField ) {
ld . isDirty = true
Object . keys ( tmpl . kriterler [ k ] . mappings ) . forEach ( vk => {
tmpl . kriterler [ k ] . mappings [ vk ] [ valField ] = ld . mappingVal
} )
ld . mappingVal = ''
}
const addCombinedField = function ( ) {
ld . isDirty = true
@@ -849,7 +1019,7 @@ const addDagitim = function () {
bazAlanColNro : getFieldColNumber ( bazAlan ) ,
hedefAlanColNro : getFieldColNumber ( hedefAlan ) ,
hedefAlan : hedefAlan ,
kural : { }
kural : { } ,
}
ld . dagitim . kural . forEach ( k => {
@@ -857,7 +1027,7 @@ const addDagitim = function () {
tmpl . dagitim [ bazAlan ] . kural [ bazDeger ] = [ ]
k . hedef . forEach ( h => {
tmpl . dagitim [ bazAlan ] . kural [ bazDeger ] . push ( { oran : h . oran , deger : h . deger } )
tmpl . dagitim [ bazAlan ] . kural [ bazDeger ] . push ( { oran : h . oran , deger : h . deger } )
} )
} )