kriter değeri ekleme, hesap kodu kopyalama, excel okuma, kriter güncelleme
This commit is contained in:
@@ -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 (let j = 1; j < ndx - lastCol; j++) {
|
||||
tmpl.alanlar.push({
|
||||
colNro: lastCol + 1,
|
||||
fieldName: `Kolon ${lastCol + 2}`,
|
||||
colType: '',
|
||||
ba: 'B',
|
||||
showInSlip: false,
|
||||
combinedFields: [],
|
||||
combinedFieldsNro: [],
|
||||
formula: '',
|
||||
})
|
||||
}
|
||||
const msg = 'Başlıksız kolonlar var. Dosya işlenemez'
|
||||
showError(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 })
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user