Compare commits
2 Commits
b9ed81beb7
...
a28576960e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a28576960e | ||
|
|
a661c06639 |
@@ -321,6 +321,11 @@ const processXLS = function () {
|
|||||||
bordroRow['Tutar'] = row[veri.colNro] * (oran.oran / 100)
|
bordroRow['Tutar'] = row[veri.colNro] * (oran.oran / 100)
|
||||||
bordroRow['B/A'] = veri.ba
|
bordroRow['B/A'] = veri.ba
|
||||||
|
|
||||||
|
const hedefAlan = tmpl.dagitim[bazAlan].hedefAlan
|
||||||
|
if (bordroRow[hedefAlan]) {
|
||||||
|
bordroRow[hedefAlan] = oran.deger
|
||||||
|
}
|
||||||
|
|
||||||
bordro.push({ ...bordroRow })
|
bordro.push({ ...bordroRow })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -279,13 +279,32 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-weight-bolder">
|
<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
|
Değer
|
||||||
<q-btn
|
<q-btn
|
||||||
flat
|
flat
|
||||||
icon="add"
|
icon="mdi-table-column-plus-after"
|
||||||
dense
|
dense
|
||||||
color="positive"
|
color="positive"
|
||||||
/>
|
>
|
||||||
|
<q-tooltip>Veri alanı ekle</q-tooltip>
|
||||||
<q-popup-edit
|
<q-popup-edit
|
||||||
v-model="ld.selectedVal"
|
v-model="ld.selectedVal"
|
||||||
buttons
|
buttons
|
||||||
@@ -300,6 +319,14 @@
|
|||||||
counter
|
counter
|
||||||
@keyup.enter="scope.set"/>
|
@keyup.enter="scope.set"/>
|
||||||
</q-popup-edit>
|
</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>
|
||||||
<td v-for="f in v.valFields" :key="f">
|
<td v-for="f in v.valFields" :key="f">
|
||||||
{{ f }}
|
{{ f }}
|
||||||
@@ -310,6 +337,25 @@
|
|||||||
color="negative"
|
color="negative"
|
||||||
@click="delMapping(k, f)"
|
@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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -321,6 +367,9 @@
|
|||||||
v-model="kv[f]"
|
v-model="kv[f]"
|
||||||
dense
|
dense
|
||||||
@update:modelValue="ld.isDirty=true"
|
@update:modelValue="ld.isDirty=true"
|
||||||
|
:label="f"
|
||||||
|
stack-label
|
||||||
|
label-color="primary"
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
@@ -451,10 +500,10 @@
|
|||||||
import { computed, onMounted, reactive, toRaw } from 'vue'
|
import { computed, onMounted, reactive, toRaw } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
import { api } from 'boot/axios'
|
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 MEditHeader from 'src/libjs/comp/MEditHeader.vue'
|
||||||
import { read, utils } from 'xlsx'
|
import { read, utils } from 'xlsx'
|
||||||
import { useQuasar } from 'quasar'
|
import { copyToClipboard, useQuasar } from 'quasar'
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
const $q = useQuasar()
|
const $q = useQuasar()
|
||||||
@@ -479,6 +528,8 @@ const ld = reactive({
|
|||||||
//{baz: xxx, hedef: [{deger: yyy, oran: zzz}]}
|
//{baz: xxx, hedef: [{deger: yyy, oran: zzz}]}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
mappingVal: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
const tmpl = reactive({
|
const tmpl = reactive({
|
||||||
@@ -656,40 +707,37 @@ const processXLS = function () {
|
|||||||
const sheet = workbook.Sheets[tmpl.bordroSheet]
|
const sheet = workbook.Sheets[tmpl.bordroSheet]
|
||||||
tmpl.rawData = utils.sheet_to_json(sheet, { header: 1 })
|
tmpl.rawData = utils.sheet_to_json(sheet, { header: 1 })
|
||||||
|
|
||||||
|
/*
|
||||||
tmpl.alanlar.splice(0)
|
tmpl.alanlar.splice(0)
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fieldNames = []
|
||||||
let lastCol = -1
|
let lastCol = -1
|
||||||
tmpl.rawData[tmpl.baslikSatiri - 1].forEach((val, ndx) => {
|
tmpl.rawData[tmpl.baslikSatiri - 1].forEach((val, ndx) => {
|
||||||
|
|
||||||
//başlık olmayan kolonlar
|
//başlık olmayan kolonlar
|
||||||
if (ndx - lastCol > 1) {
|
if (ndx - lastCol > 1) {
|
||||||
for (let j = 1; j < ndx - lastCol; j++) {
|
const msg = 'Başlıksız kolonlar var. Dosya işlenemez'
|
||||||
tmpl.alanlar.push({
|
showError(msg)
|
||||||
colNro: lastCol + 1,
|
throw msg
|
||||||
fieldName: `Kolon ${lastCol + 2}`,
|
|
||||||
colType: '',
|
|
||||||
ba: 'B',
|
|
||||||
showInSlip: false,
|
|
||||||
combinedFields: [],
|
|
||||||
combinedFieldsNro: [],
|
|
||||||
formula: '',
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let name = val
|
let name = val
|
||||||
|
|
||||||
for (let j = 1; j < tmpl.baslikSatirAdedi; j++) {
|
for (let j = 1; j < tmpl.baslikSatirAdedi; j++) {
|
||||||
let addiVal = tmpl.rawData[tmpl.baslikSatiri - 1 + j][ndx]
|
let addiVal = tmpl.rawData[tmpl.baslikSatiri - 1 + j][ndx]
|
||||||
if (!addiVal) {
|
if (addiVal) {
|
||||||
addiVal = ''
|
|
||||||
}
|
|
||||||
name = name + ' ' + 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({
|
tmpl.alanlar.push({
|
||||||
colNro: ndx,
|
colNro: ndx,
|
||||||
fieldName: name.trim(),
|
fieldName: name,
|
||||||
colType: '',
|
colType: '',
|
||||||
ba: 'B',
|
ba: 'B',
|
||||||
showInSlip: false,
|
showInSlip: false,
|
||||||
@@ -697,24 +745,88 @@ const processXLS = function () {
|
|||||||
combinedFieldsNro: [],
|
combinedFieldsNro: [],
|
||||||
formula: '',
|
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
|
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
|
ld.showFields = true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const fillCriteria = function () {
|
const fillCriteria = function () {
|
||||||
ld.isDirty = true
|
ld.isDirty = true
|
||||||
// kriterleri temizleyelim
|
// kriterleri temizleyelim
|
||||||
|
|
||||||
|
/*
|
||||||
Object.keys(ld.alreadySelectedValFields).forEach(k => {
|
Object.keys(ld.alreadySelectedValFields).forEach(k => {
|
||||||
delete ld.alreadySelectedValFields[k]
|
delete ld.alreadySelectedValFields[k]
|
||||||
})
|
})
|
||||||
tmpl.kriterler = {}
|
tmpl.kriterler = {}
|
||||||
|
*/
|
||||||
|
|
||||||
// kriter alanlarını bulup boş kriter nesnelerini oluşturalım
|
// kriter alanlarını bulup boş kriter nesnelerini oluşturalım
|
||||||
const kriterCols = []
|
const kriterCols = []
|
||||||
tmpl.alanlar.filter(f => {return f.colType === 'kriter'}).forEach(f => {
|
tmpl.alanlar.filter(f => {return f.colType === 'kriter'}).forEach(f => {
|
||||||
|
if (!tmpl.kriterler.hasOwnProperty(f.fieldName)) {
|
||||||
tmpl.kriterler[f.fieldName] = {
|
tmpl.kriterler[f.fieldName] = {
|
||||||
colNro: f.colNro,
|
colNro: f.colNro,
|
||||||
|
|
||||||
@@ -734,9 +846,18 @@ const fillCriteria = function () {
|
|||||||
mapping['kriter1'] = {xxx: 770.01.001, yyy: 770.01.002}
|
mapping['kriter1'] = {xxx: 770.01.001, yyy: 770.01.002}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
kriterCols.push(f.fieldName)
|
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) => {
|
tmpl.rawData.forEach((row, ndx) => {
|
||||||
if (ndx <= tmpl.baslikSatiri - 1 + tmpl.baslikSatirAdedi) {
|
if (ndx <= tmpl.baslikSatiri - 1 + tmpl.baslikSatirAdedi) {
|
||||||
|
|
||||||
@@ -764,9 +885,15 @@ const fillCriteria = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((kriterVal !== null) && (kriterVal !== undefined) && (kriterVal !== '')) {
|
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 () {
|
const addCombinedField = function () {
|
||||||
ld.isDirty = true
|
ld.isDirty = true
|
||||||
@@ -849,7 +1019,7 @@ const addDagitim = function () {
|
|||||||
bazAlanColNro: getFieldColNumber(bazAlan),
|
bazAlanColNro: getFieldColNumber(bazAlan),
|
||||||
hedefAlanColNro: getFieldColNumber(hedefAlan),
|
hedefAlanColNro: getFieldColNumber(hedefAlan),
|
||||||
hedefAlan: hedefAlan,
|
hedefAlan: hedefAlan,
|
||||||
kural: {}
|
kural: {},
|
||||||
}
|
}
|
||||||
|
|
||||||
ld.dagitim.kural.forEach(k => {
|
ld.dagitim.kural.forEach(k => {
|
||||||
|
|||||||
Reference in New Issue
Block a user