116 lines
3.4 KiB
Vue
Executable File
116 lines
3.4 KiB
Vue
Executable File
<template>
|
|
<Filters @run-search="() => filterData(filters)" class="mb-4">
|
|
<Type4
|
|
@update:filters="(value) => (filters = value)"
|
|
:jenis-laporan="[
|
|
{ id: 1, name: 'Laporan Berulang Unit' },
|
|
{ id: 2, name: 'Laporan Rating Negatif' },
|
|
{ id: 3, name: 'Laporan Skip Step' }
|
|
]"
|
|
/>
|
|
</Filters>
|
|
|
|
<Anomali_LAPPKU_LPT :data="data" :loading="loadingData" :filters="filters" />
|
|
<Anomali_LAPPKU_LPP :data="dataSecond" />
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import Filters from '@/components/Form/Filters.vue'
|
|
import { ref } from 'vue'
|
|
import { Anomali_LAPPKU_LPT, Anomali_LAPPKU_LPP } from '../.'
|
|
import { Type4 } from '@/components/Form/FiltersType'
|
|
import { useQuery } from '@vue/apollo-composable'
|
|
import gql from 'graphql-tag'
|
|
import { queries, requestGraphQl } from '@/utils/api/api.graphql'
|
|
const data = ref<any[]>([])
|
|
const dataSecond = ref<any[]>([])
|
|
const loadingData = ref(false)
|
|
const filters = ref({
|
|
jenisLaporan: {
|
|
id: 1,
|
|
name: 'Laporan Berulang Unit'
|
|
},
|
|
ulp: 0,
|
|
uid: 0,
|
|
up3: 0
|
|
})
|
|
|
|
const resetData = () => {
|
|
data.value = []
|
|
dataSecond.value = []
|
|
}
|
|
|
|
const filterData = async (params: any) => {
|
|
resetData()
|
|
const { ulp, uid, up3, jenisLaporan } = params
|
|
console.table('LAPPGU', jenisLaporan)
|
|
|
|
const dateValue = params.periode.split(' s/d ')
|
|
const query = {
|
|
dateFrom: dateValue[0]
|
|
? dateValue[0].split('-').reverse().join('-')
|
|
: new Date().toISOString().slice(0, 10),
|
|
dateTo: dateValue[1]
|
|
? dateValue[1].split('-').reverse().join('-')
|
|
: new Date().toISOString().slice(0, 10),
|
|
idUlp: ulp ? ulp.id : 0,
|
|
idUid: uid ? uid.id : 0,
|
|
idUp3: up3 ? up3.id : 0,
|
|
namaRegional: ''
|
|
}
|
|
|
|
loadingData.value = true
|
|
await requestGraphQl(
|
|
jenisLaporan.name == 'Laporan Berulang Unit'
|
|
? queries.anomali.keluhan.unitBerulang
|
|
: jenisLaporan.name == 'Laporan Rating Negatif'
|
|
? queries.anomali.keluhan.unitRatingNegatif
|
|
: queries.anomali.keluhan.unitSkipStep,
|
|
query
|
|
)
|
|
.then((result) => {
|
|
if (result.data.data != undefined) {
|
|
if (jenisLaporan.name == 'Laporan Berulang Unit') {
|
|
data.value = result.data.data.detailAnomaliLaporanPenangananPengaduanKeluhanUnitBerulang
|
|
} else if (jenisLaporan.name == 'Laporan Rating Negatif') {
|
|
data.value =
|
|
result.data.data.detailAnomaliLaporanPenangananPengaduanKeluhanUnitRatingNegatif
|
|
} else {
|
|
data.value = result.data.data.detailAnomaliLaporanPenangananPengaduanKeluhanUnitSkipStep
|
|
}
|
|
} else {
|
|
data.value = []
|
|
}
|
|
var unitName = ''
|
|
if (uid.id == 0) {
|
|
unitName = 'Semua Unit'
|
|
} else {
|
|
unitName = uid.name
|
|
if (up3.id != 0) {
|
|
unitName = up3.name
|
|
if (ulp.id != 0) {
|
|
unitName = ulp.name
|
|
}
|
|
}
|
|
}
|
|
dataSecond.value = [
|
|
{
|
|
nama_ulp: unitName,
|
|
wo_pln_mobile: data.value.reduce((acc, cur) => acc + cur.wo_pln_mobile, 0),
|
|
total_anomali: data.value.reduce((acc, cur) => acc + cur.anomali_pln_mobile, 0),
|
|
persen_anomali:
|
|
(data.value.reduce((acc, cur) => acc + cur.anomali_pln_mobile, 0) /
|
|
data.value.reduce((acc, cur) => acc + cur.wo_pln_mobile, 0)) *
|
|
100
|
|
}
|
|
]
|
|
})
|
|
.catch((err) => {
|
|
console.error(err)
|
|
})
|
|
.finally(() => {
|
|
loadingData.value = false
|
|
})
|
|
}
|
|
</script>
|