Merge branch 'dev-eko-vm' of https://gitea.callysta-engineering.com/APKT/eis into dev-bagus

This commit is contained in:
kur0nek-o
2024-02-23 17:23:41 +07:00
30 changed files with 432 additions and 442 deletions

View File

@ -12,9 +12,9 @@ import {
} from './reference' } from './reference'
import { onMounted, ref, watch } from 'vue' import { onMounted, ref, watch } from 'vue'
const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah' const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'
const up3laceholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan' const up3placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
const poskoPlaceholder = 'Semua Posko' const poskoPlaceholder = 'Semua Posko'
const up3 = ref({ id: 0, name: up3laceholder }) const up3 = ref({ id: 0, name: up3placeholder })
const uid = ref({ id: 0, name: uidPlaceholder }) const uid = ref({ id: 0, name: uidPlaceholder })
const posko = ref({ id: 0, name: poskoPlaceholder }) const posko = ref({ id: 0, name: poskoPlaceholder })
const emit = defineEmits(['update:filters']) const emit = defineEmits(['update:filters'])
@ -32,7 +32,7 @@ watch(data.value, (value) => {
const setUid = (value: any) => { const setUid = (value: any) => {
uid.value = value uid.value = value
selectedUid(value) selectedUid(value)
up3.value = { id: 0, name: up3laceholder } up3.value = { id: 0, name: up3placeholder }
data.value.uid = value data.value.uid = value
} }
@ -65,7 +65,7 @@ onMounted(() => {
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center"> <div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Unit Pelaksanaan Pelayanan Pelanggan:</label> <label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Unit Pelaksanaan Pelayanan Pelanggan:</label>
<Select @update:selected="setUp3($event)" :data="itemsUp3" :selected="up3" :placeholder="up3laceholder" /> <Select @update:selected="setUp3($event)" :data="itemsUp3" :selected="up3" :placeholder="up3placeholder" />
</div> </div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center"> <div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">

View File

@ -1,6 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref, watch } from 'vue' import { onMounted, ref, watch } from 'vue'
import { useTotalDuration } from '@/stores/totalDuration';
import { import {
selectedUid, selectedUid,
selectedUp3Ulp, selectedUp3Ulp,
@ -13,7 +15,7 @@ import {
import Select from '@/components/Select.vue' import Select from '@/components/Select.vue'
import DatePicker from '@/components/DatePicker.vue' import DatePicker from '@/components/DatePicker.vue'
import InputWithSuffix from '@/components/Form/InputWithSuffix.vue'
const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'; const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah';
const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'; const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan';
const ulpPlaceholder = 'Semua Unit Layanan Pelanggan'; const ulpPlaceholder = 'Semua Unit Layanan Pelanggan';
@ -21,6 +23,7 @@ const uppp = ref({ id: 0, name: up3Placeholder });
const uid = ref({ id: 0, name: uidPlaceholder }); const uid = ref({ id: 0, name: uidPlaceholder });
const ulp = ref({ id: "", name: ulpPlaceholder }); const ulp = ref({ id: "", name: ulpPlaceholder });
const emit = defineEmits(['update:filters']) const emit = defineEmits(['update:filters'])
const sla = [ const sla = [
{ {
id: 1, id: 1,
@ -36,8 +39,8 @@ const data = ref({
up3: uppp.value, up3: uppp.value,
posko: ulp.value, posko: ulp.value,
periode: '', periode: '',
minDurasiRecoveryTime: 1, minTime: 1,
maxDurasiRecoveryTime: 1 maxTime: 1
}) })
const setUid = (value: any) => { const setUid = (value: any) => {
uid.value = value; uid.value = value;
@ -58,25 +61,34 @@ const setUlp = (value: any) => {
selectedUlp(value); selectedUlp(value);
data.value.posko = value; data.value.posko = value;
}; };
const setMin = (value: any) => {
console.log(value)
data.value.minTime = value
useTotalDuration().setDataMin(value)
}
const setMax = (value: any) => {
data.value.maxTime = value
useTotalDuration().setDataMax(value)
}
const triggerInput = ref(false) const triggerInput = ref(false)
const changeDuration = (value: any) => { const changeDuration = (value: any) => {
if (value.id === 0) { if (value.id === 0) {
setMin("1")
setMax("5")
console.log('Durasi Menit') console.log('Durasi Menit')
data.value.minDurasiRecoveryTime = 0
data.value.maxDurasiRecoveryTime = 5
triggerInput.value = false triggerInput.value = false
} else if (value.id === 1) { } else if (value.id === 1) {
data.value.minDurasiRecoveryTime = 0 setMin("1")
data.value.maxDurasiRecoveryTime = 45 setMax("45")
console.log('Dibawah / Sesuai SLA (<= 45 menit)') console.log('Dibawah / Sesuai SLA (<= 45 menit)')
triggerInput.value = true triggerInput.value = true
} else { } else {
data.value.minDurasiRecoveryTime = 46 setMin("45")
data.value.maxDurasiRecoveryTime = 99999 * 60 * 24 setMax(99999 * 60 * 24)
triggerInput.value = true triggerInput.value = true
console.log('Melebihi SLA (> 45 menit)') console.log('Melebihi SLA (> 45 menit)')
} }
} }
onMounted(() => { onMounted(() => {
emit('update:filters', data.value) emit('update:filters', data.value)
@ -88,43 +100,27 @@ onMounted(() => {
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center"> <div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Unit Induk Distribusi/Wilayah:</label> <label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Unit Induk Distribusi/Wilayah:</label>
<Select <Select @update:selected="setUid($event)" :data="itemsUid" :placeholder="uidPlaceholder" />
@update:selected="setUid($event)"
:data="itemsUid"
:placeholder="uidPlaceholder"
/>
</div> </div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center"> <div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="text-gray-800 font-semibold mb-2 sm:mb-0 block" <label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Unit Pelaksanaan Pelayanan Pelanggan:</label>
>Unit Pelaksanaan Pelayanan Pelanggan:</label
>
<Select <Select @update:selected="setUp3($event)" :data="itemsUp3" :placeholder="up3Placeholder" />
@update:selected="setUp3($event)"
:data="itemsUp3"
:placeholder="up3Placeholder"
/>
</div> </div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center"> <div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="text-gray-800 font-semibold mb-2 sm:mb-0 block" <label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Unit Layanan Pelanggan:</label>
>Unit Layanan Pelanggan:</label
>
<Select <Select @update:selected="setUlp($event)" :data="itemsUlp" :placeholder="ulpPlaceholder" />
@update:selected="setUlp($event)"
:data="itemsUlp"
:placeholder="ulpPlaceholder"
/>
</div> </div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center"> <div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Periode Tanggal:</label> <label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Periode Tanggal:</label>
<DatePicker @update:date-value="(value) => { <DatePicker @update:date-value="(value) => {
data.periode = value data.periode = value
} }
" /> " />
</div> </div>
@ -132,31 +128,13 @@ onMounted(() => {
<label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Durasi:</label> <label class="text-gray-800 font-semibold mb-2 sm:mb-0 block">Durasi:</label>
<div class="flex flex-col gap-y-1"> <div class="flex flex-col gap-y-1">
<Select <Select @update:selected="changeDuration($event)" :data="sla" placeholder="Durasi Menit" />
@update:selected="changeDuration($event)"
:data="sla"
placeholder="Durasi Menit"
/>
<div class="grid grid-flow-col auto-cols-auto gap-x-1.5"> <div class="grid grid-flow-col auto-cols-auto gap-x-1.5">
<InputWithSuffix <InputWithSuffix :value="`${data.minTime} Menit`" />
@update:minute-value="
(value :any)=> {
data.minDurasiRecoveryTime =value
}
"
@value="data.minDurasiRecoveryTime"
:disabled=triggerInput />
<small class="flex items-center">s/d</small> <small class="flex items-center">s/d</small>
<InputWithSuffix <InputWithSuffix :value="`${data.maxTime} Menit`" />
@update:minute-value="
(value :any)=> {
data.maxDurasiRecoveryTime = value
}
"
@value="data.maxDurasiRecoveryTime"
:disabled="triggerInput" />
</div> </div>
</div> </div>
</div> </div>
</template> </template>

View File

@ -10,42 +10,47 @@ import {
itemsUp3, itemsUp3,
itemsUlp itemsUlp
} from './reference' } from './reference'
import { onMounted, ref } from 'vue' import { onMounted, ref, watch } from 'vue'
const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah' const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'
const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan' const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
const ulpPlaceholder = 'Semua Unit Layanan Pelanggan' const ulpPlaceholder = 'Semua Unit Layanan Pelanggan'
const uppp = ref({ id: 0, name: up3Placeholder }) const up3 = ref({ id: 0, name: up3Placeholder })
const uid = ref({ id: 0, name: uidPlaceholder }) const uid = ref({ id: 0, name: uidPlaceholder })
const ulp = ref({ id: '', name: ulpPlaceholder }) const ulp = ref({ id: 0, name: ulpPlaceholder })
const emit = defineEmits(['update:filters']) const emit = defineEmits(['update:filters'])
const data = ref({ const data = ref({
uid: uid.value, uid: uid.value,
up3: uppp.value, up3: up3.value,
posko: ulp.value, ulp: ulp.value,
periode: '' periode: ''
}) })
watch(data.value, (value) => {
emit('update:filters', value)
})
const setUid = (value: any) => { const setUid = (value: any) => {
uid.value = value uid.value = value
selectedUid(value) selectedUid(value)
uppp.value = { id: 0, name: up3Placeholder } up3.value = { id: 0, name: up3Placeholder }
data.value.uid = value data.value.uid = value
} }
const setUp3 = (value: any) => { const setUp3 = (value: any) => {
uppp.value = value up3.value = value
selectedUp3Ulp(value) selectedUp3Ulp(value)
ulp.value = { id: '', name: ulpPlaceholder } ulp.value = { id: 0, name: ulpPlaceholder }
data.value.up3 = value data.value.up3 = value
} }
const setUlp = (value: any) => { const setUlp = (value: any) => {
ulp.value = value ulp.value = value
selectedUlp(value) selectedUlp(value)
data.value.posko = value data.value.ulp = value
} }
onMounted(() => { onMounted(() => {
emit('update:filters', data.value)
fetchUid() fetchUid()
emit('update:filters', data.value)
}) })
</script> </script>

View File

@ -65,18 +65,18 @@ const setMax = (value: any) => {
const triggerInput = ref(false) const triggerInput = ref(false)
const changeDuration = (value: any) => { const changeDuration = (value: any) => {
if (value.id === 0) { if (value.id === 0) {
setMin("1 Menit") setMin("1")
setMax("5 Menit") setMax("5")
console.log('Durasi Menit') console.log('Durasi Menit')
triggerInput.value = false triggerInput.value = false
} else if (value.id === 1) { } else if (value.id === 1) {
setMin("1 Menit") setMin("1")
setMax("45 Menit") setMax("45")
console.log('Dibawah / Sesuai SLA (<= 45 menit)') console.log('Dibawah / Sesuai SLA (<= 45 menit)')
triggerInput.value = true triggerInput.value = true
} else { } else {
setMin("45 Menit") setMin("45")
setMax(99999 * 60 * 24+ ' Menit') setMax(99999 * 60 * 24)
triggerInput.value = true triggerInput.value = true
console.log('Melebihi SLA (> 45 menit)') console.log('Melebihi SLA (> 45 menit)')
} }

View File

@ -19,7 +19,7 @@ const uppPlaceholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
const poskoPlaceholder = 'Semua Posko' const poskoPlaceholder = 'Semua Posko'
const uppp = ref({ id: 0, name: uppPlaceholder }) const uppp = ref({ id: 0, name: uppPlaceholder })
const uid = ref({ id: 0, name: uidPlaceholder }) const uid = ref({ id: 0, name: uidPlaceholder })
const posko = ref({ id: "" ,name: poskoPlaceholder }) const posko = ref({ id: 0 ,name: poskoPlaceholder })
const emit = defineEmits(['update:filters']) const emit = defineEmits(['update:filters'])
const data = ref({ const data = ref({
uid: uid.value, uid: uid.value,

View File

@ -2,7 +2,7 @@ import { usePostsStore } from '@/stores/posts'
import { useRegionStore } from '@/stores/region' import { useRegionStore } from '@/stores/region'
import { useUlpStore } from '@/stores/ulp' import { useUlpStore } from '@/stores/ulp'
import { useUp3Store } from '@/stores/up3' import { useUp3Store } from '@/stores/up3'
import { getUid, getUp3, getPosko, getUlp, getRegional } from '@/utils/network' import { getUid, getUp3, getPosko, getUlp, getRegional, getUidRegional } from '@/utils/network'
import { ref } from 'vue' import { ref } from 'vue'
interface Item { interface Item {
id: any id: any
@ -52,6 +52,23 @@ const fetchMedia = () => {
{ id: 'Call PLN 123', name: 'Call PLN 123' } { id: 'Call PLN 123', name: 'Call PLN 123' }
] ]
} }
const fetchUidByRegional = async (regional: number) => {
if (regional == 0) {
itemsUid.value = [];
} else {
try {
const res = await getUidRegional(regional)
itemsUid.value = res.data.map((item: any) => (
{
id: item.id,
name: item.nama.toUpperCase(),
}
));
} catch (error) {
console.error('Error fetching data:', error);
}
}
}
// Fetch data from the API using Axios // Fetch data from the API using Axios
const fetchUid = async () => { const fetchUid = async () => {
try { try {
@ -59,7 +76,7 @@ const fetchUid = async () => {
itemsUid.value = res.data.map((item: any) => ( itemsUid.value = res.data.map((item: any) => (
{ {
id: item.id, id: item.id,
name: item.nama.toUpperCase(), name: item.nama,
} }
)); ));
} catch (error) { } catch (error) {
@ -68,36 +85,51 @@ const fetchUid = async () => {
} }
const fetchDataUp3 = async (uid: number) => { const fetchDataUp3 = async (uid: number) => {
try { if (uid == 0) {
const res = await getUp3(uid) itemsUp3.value = [];
itemsUp3.value = res.data.map((item: any) => ({ itemsUlp.value = [];
id: item.id, itemsPosko.value = [];
name: item.nama } else {
})) try {
} catch (error) { const res = await getUp3(uid);
console.error('Error fetching data:', error) itemsUp3.value = res.data.map((item: any) => ({
id: item.id,
name: item.nama
}))
} catch (error) {
console.error('Error fetching data:', error)
}
} }
} }
const fetchDataUlp = async (up3: number) => { const fetchDataUlp = async (up3: number) => {
try {
const res = await getUlp(up3) if (up3 == 0) {
itemsUlp.value = res.data.map((item: any) => ({ itemsUlp.value = []
id: item.id, } else {
name: item.nama try {
})) const res = await getUlp(up3)
} catch (error) { itemsUlp.value = res.data.map((item: any) => ({
console.error('Error fetching data:', error) id: item.id,
name: item.name
}))
} catch (error) {
console.error('Error fetching data:', error)
}
} }
} }
const fetchDataPosko = async (up3: number) => { const fetchDataPosko = async (up3: number) => {
try { if (up3 == 0) {
const res = await getPosko(up3) itemsPosko.value = []
itemsPosko.value = res.data.map((item: any) => ({ } else {
id: item.id, try {
name: item.nama const res = await getPosko(up3)
})) itemsPosko.value = res.data.map((item: any) => ({
} catch (error) { id: item.id,
console.error('Error fetching data:', error) name: item.nama
}))
} catch (error) {
console.error('Error fetching data:', error)
}
} }
} }
const fetchRegional = async () => { const fetchRegional = async () => {
@ -115,18 +147,17 @@ const fetchRegional = async () => {
} }
const selectedUid = (value: any) => { const selectedUid = (value: any) => {
useRegionStore().setData(value.id)
fetchDataUp3(value.id) fetchDataUp3(value.id)
} }
const selectedUp3Posko = (value: any) => { const selectedUp3Posko = (value: any) => {
if (value.id != 0) { if (value.id != 0) {
useUp3Store().setData(value.id)
fetchDataPosko(value.id) fetchDataPosko(value.id)
} }
} }
const selectedUp3Ulp = (value: any) => { const selectedUp3Ulp = (value: any) => {
useUp3Store().setData(value.id) if (value.id != 0) {
fetchDataUlp(value.id) fetchDataUlp(value.id)
}
} }
const selectedPosko = (value: any) => { const selectedPosko = (value: any) => {
usePostsStore().setData(value.id) usePostsStore().setData(value.id)
@ -136,15 +167,16 @@ const selectedUlp = (value: any) => {
} }
export { export {
selectedUid, selectedUid,
selectedUp3Posko, selectedUp3Posko,
selectedUp3Ulp, selectedUp3Ulp,
selectedPosko, selectedPosko,
selectedUlp, selectedUlp,
fetchRegional, fetchRegional,
fetchUidByRegional,
fetchUid, fetchUid,
fetchMedia, fetchMedia,
fetchStatus,
itemsUid, itemsUid,
itemsUp3, itemsUp3,
itemsPosko, itemsPosko,

View File

@ -1,9 +1,7 @@
<template> <template>
<Filters @run-search="() => { <Filters @run-search="() => {
console.log(filters)
filterData(filters) filterData(filters)
} }" class="mb-4">
" class="mb-4">
<Type1 @update:filters="(value) => { <Type1 @update:filters="(value) => {
filters = value filters = value
} }
@ -242,35 +240,45 @@ const closeDetail = () => {
showDetail.value = false showDetail.value = false
} }
const onExporting = (e: any) => { const onExporting = (e: any) => {
if (e.format === 'pdf') { if (e.format === 'pdf') {
const doc = new jsPDF({ const doc = new jsPDF({
orientation: 'landscape', orientation: 'landscape',
unit: 'mm', unit: 'mm',
format: 'a4', format: 'F4',
}) })
// Add title on each page
const title = "Daftar Gangguan Dialihkan Ke Posko Lain";
// autoTable(doc, { // Initialize page number
const pageNumber = ref(1);
// margin: { top: 20 }, // Adjust top margin as needed autoTable(doc, {
// styles: { head: [['No Laporan', 'Pembuat Laporan', 'Tgl Lapor', 'Tgl Dialihkan', 'Tgl Response', 'Tgl Recovery', 'Durasi Response Time', 'Durasi Recovery Time', 'Posko Awal', 'Posko Tujuan', 'Status', 'IDPEL/NO METER', 'Nama Pelapor', 'Alamat Pelapor', 'No Telp Pelapor', 'Keterangan Pelapor', 'Sumber Lapor', 'Posko']],
// fontSize: 8, startY: 10,
// overflow: 'linebreak', // Enable linebreaks to fit content body: data.value.map((item) =>
// }, [item.no_laporan, item.pembuat_laporan, item.waktu_lapor, item.waktu_dialihkan, item.waktu_response, item.waktu_recovery, item.durasi_response_time, item.durasi_recovery_time, item.nama_posko_lama, item.nama_posko_baru, item.status_akhir, item.idpel_nometer, item.nama_pelapor, item.alamat_pelapor, item.no_telp_pelapor, item.keterangan_pelapor, item.media, item.posko]),
// startY: 10, // Adjust startY position as needed styles: {
// head: [['No Laporan', 'Pembuat Laporan', 'Tgl Lapor', 'Tgl Dialihkan', 'Tgl Response', 'Tgl Recovery', 'Durasi Response Time', 'Durasi Recovery Time', 'Posko Awal', 'Posko Tujuan', 'Status', 'IDPEL/NO METER', 'Nama Pelapor', 'Alamat Pelapor', 'No Telp Pelapor', 'Keterangan Pelapor', 'Sumber Lapor', 'Posko']], fontSize: 6,
// body: data.value.map((item) => cellWidth: 'wrap'
// [item.no_laporan, item.pembuat_laporan, item.waktu_lapor, item.waktu_dialihkan, item.waktu_response, item.waktu_recovery, item.durasi_response_time, item.durasi_recovery_time, item.nama_posko_lama, item.nama_posko_baru, item.status_akhir, item.idpel_nometer, item.nama_pelapor, item.alamat_pelapor, item.no_telp_pelapor, item.keterangan_pelapor, item.media, item.posko]) },
})
doc.setProperties({
title: 'Daftar Gangguan Dialihkan Ke Posko Lain',
subject: 'Daftar Gangguan Dialihkan Ke Posko Lain',
});
pageNumber.value++; // Increment the pageNumber
doc.save(`Daftar Gangguan Dialihkan Ke Posko Lain.pdf`)
// exportToPdf({
// jsPDFDocument: doc,
// component: e.component,
// }).then(() => {
// doc.save(`Daftar Gangguan Dialihkan Ke Posko Lain.pdf`)
// }) // })
exportToPdf({
jsPDFDocument: doc,
component: e.component,
}).then(() => {
doc.save(`Daftar Gangguan Dialihkan Ke Posko Lain.pdf`)
})
} else { } else {
const workbook = new Workbook() const workbook = new Workbook()
const worksheet = workbook.addWorksheet('Daftar Gangguan Dialihkan Ke Posko Lain') const worksheet = workbook.addWorksheet('Daftar Gangguan Dialihkan Ke Posko Lain')
@ -332,15 +340,7 @@ const filterData = (params: any) => {
}) })
onResult((queryResult) => { onResult((queryResult) => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
queryResult.data.daftarGangguanDialihkanKePoskoLain.forEach((item: any) => { data.value = queryResult.data.daftarGangguanDialihkanKePoskoLain
data.value = [
...data.value,
{
...item,
posko: item.nama_posko_baru
}
]
})
} }
console.log(queryResult.data) console.log(queryResult.data)
console.log(queryResult.loading) console.log(queryResult.loading)
@ -355,7 +355,7 @@ const { onResult, onError, loading, refetch } = useQuery(
{ {
dateFrom: new Date().toISOString().slice(0, 10), dateFrom: new Date().toISOString().slice(0, 10),
dateTo: new Date().toISOString().slice(0, 10), dateTo: new Date().toISOString().slice(0, 10),
posko: '', posko: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
} }

View File

@ -103,11 +103,7 @@ import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter'
import { saveAs } from 'file-saver' import { saveAs } from 'file-saver'
import { Workbook } from 'exceljs' import { Workbook } from 'exceljs'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import { useDateStore } from '@/stores/date'
import { useSearchStore } from '@/stores/filtersAction'
import { usePostsStore } from '@/stores/posts'
import { useRegionStore } from '@/stores/region'
import { useUp3Store } from '@/stores/up3'
import { useQuery } from '@vue/apollo-composable' import { useQuery } from '@vue/apollo-composable'
const position = { of: '#data' } const position = { of: '#data' }
const showIndicator = ref(true) const showIndicator = ref(true)
@ -181,7 +177,7 @@ const onExporting = (e: any) => {
const { onResult, onError, loading, refetch } = useQuery(GET_REKAP_JENIS_GANGGUAN_SE004, { const { onResult, onError, loading, refetch } = useQuery(GET_REKAP_JENIS_GANGGUAN_SE004, {
dateFrom: new Date().toISOString().slice(0, 10), dateFrom: new Date().toISOString().slice(0, 10),
dateTo: new Date().toISOString().slice(0, 10), dateTo: new Date().toISOString().slice(0, 10),
posko: '', posko: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -191,7 +187,7 @@ const filterData = (params: any) => {
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko, posko: posko ? posko.id : 0,
idUid: uid ? uid.id : 0, idUid: uid ? uid.id : 0,
idUp3: up3 ? up3.id : 0 idUp3: up3 ? up3.id : 0
}) })

View File

@ -19,12 +19,11 @@
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
<DxColumn :width="60" alignment="center" data-field="no" caption="NO" css-class="custom-table-column" /> <DxColumn :width="60" alignment="center" data-field="no" caption="NO" css-class="custom-table-column" />
<DxColumn :width="150" name="poskoGroup" alignment="center" data-field="posko" caption="Posko" <DxColumn :width="150" name="poskoGroup" alignment="center" data-field="nama_posko" caption="Posko"
css-class="custom-table-column" :group-index="0" /> css-class="custom-table-column" :group-index="0" />
<DxColumn :width="150" alignment="center" data-field="posko" caption="Posko" css-class="custom-table-column" /> <DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" css-class="custom-table-column" />
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn :width="120" alignment="center" data-field="laporan.total" data-type="number" caption="Total" <DxColumn :width="120" alignment="center" data-field="laporan.total" data-type="number" caption="Total"
css-class="custom-table-column" /> css-class="custom-table-column" />
@ -188,25 +187,19 @@ query rekapitulasiGangguanPerPosko(
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
avg_durasi_dispatch
avg_durasi_recovery avg_durasi_recovery
avg_durasi_response avg_durasi_response
id_uid id_posko
id_up3
max_durasi_dispatch
max_durasi_recovery max_durasi_recovery
max_durasi_response max_durasi_response
min_durasi_dispatch
min_durasi_recovery min_durasi_recovery
min_durasi_response min_durasi_response
nama_posko
persen_inproses persen_inproses
persen_selesai persen_selesai
posko
total total
total_diatas_sla_dispatch
total_diatas_sla_recovery total_diatas_sla_recovery
total_diatas_sla_response total_diatas_sla_response
total_dibawah_sla_dispatch
total_dibawah_sla_recovery total_dibawah_sla_recovery
total_dibawah_sla_response total_dibawah_sla_response
total_inproses total_inproses
@ -272,7 +265,7 @@ const filterData = (params: any) => {
queryResult.data.rekapitulasiGangguanPerPosko.forEach((item: any) => { queryResult.data.rekapitulasiGangguanPerPosko.forEach((item: any) => {
const entry = { const entry = {
no: Number(i++), no: Number(i++),
posko: item.posko, nama_posko: item.nama_posko,
laporan: { laporan: {
total: item.total, total: item.total,
sudahSelesai: { sudahSelesai: {

View File

@ -22,7 +22,7 @@
<DxColumn css-class="custom-table-column" :width="50" alignment="center" <DxColumn css-class="custom-table-column" :width="50" alignment="center"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
<DxColumn :width="120" alignment="center" data-field="kode_regu" caption="Kode" <DxColumn :width="120" alignment="center" data-field="id_regu" caption="Kode"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="nama_regu" caption="Nama Regu" <DxColumn :width="150" alignment="center" data-field="nama_regu" caption="Nama Regu"
css-class="custom-table-column" /> css-class="custom-table-column" />
@ -116,26 +116,20 @@ query rekapitulasiGangguanPerRegu(
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
id_regu
nama_regu nama_regu
avg_durasi_dispatch
avg_durasi_recovery avg_durasi_recovery
avg_durasi_response avg_durasi_response
id_uid
id_up3
max_durasi_dispatch
max_durasi_recovery max_durasi_recovery
max_durasi_response max_durasi_response
min_durasi_dispatch
min_durasi_recovery min_durasi_recovery
min_durasi_response min_durasi_response
persen_inproses persen_inproses
persen_selesai persen_selesai
posko nama_posko
total total
total_diatas_sla_dispatch
total_diatas_sla_recovery total_diatas_sla_recovery
total_diatas_sla_response total_diatas_sla_response
total_dibawah_sla_dispatch
total_dibawah_sla_recovery total_dibawah_sla_recovery
total_dibawah_sla_response total_dibawah_sla_response
total_inproses total_inproses

View File

@ -1,30 +1,27 @@
<template> <template>
<Filters @run-search="() => filterData(filters)" class="mb-4"> <Filters @run-search="() => filterData(filters)" class="mb-4">
<Type9 @update:filters="(value) => { <Type9 @update:filters="(value) => {
filters = value filters = value
} }
" /> " />
</Filters> </Filters>
<div id="data"> <div id="data">
<DxDataGrid class="max-h-[calc(100vh-140px)]" :data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true" <DxDataGrid class="max-h-[calc(100vh-140px)]" :data-source="data" :show-column-lines="true" :show-row-lines="false"
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onSelectionChanged" :show-borders="true" :row-alternation-enabled="true" :hover-state-enabled="true"
:column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" @selection-changed="onSelectionChanged" :column-width="100" @exporting="onExporting"
:word-wrap-enabled="true"> :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
<DxSelection mode="single" /> <DxSelection mode="single" />
<DxPaging :enabled="false" /> <DxPaging :enabled="false" />
<DxScrolling column-rendering-mode="virtual" mode="virtual" /> <DxScrolling column-rendering-mode="virtual" mode="virtual" />
<DxLoadPanel :position="position" :show-indicator="showIndicator" <DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading"
:show-pane="showPane" :shading="shading" v-if="loading" v-model:visible="loading" :enabled="true" />
v-if="loading" v-model:visible="loading" :enabled="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
<DxColumn css-class="custom-table-column" :width="50" alignment="center" <DxColumn css-class="custom-table-column" :width="50" alignment="center"
:calculateCellValue="(item:any) => data.findIndex((i)=>i == item)+1" :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
data-type="number"
caption="No" />
<DxColumn :width="170" alignment="center" data-field="tanggal" caption="Tanggal Lapor" <DxColumn :width="170" alignment="center" data-field="tanggal" caption="Tanggal Lapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
@ -47,36 +44,36 @@
<DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> <DxColumn alignment="center" caption="Menit" css-class="custom-table-column">
<DxColumn :width="120" alignment="center" data-field="total_response" data-type="number" caption="Total" <DxColumn :width="120" alignment="center" data-field="total_response" data-type="number" caption="Total"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number" caption="Rata-Rata" <DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number"
css-class="custom-table-column" /> caption="Rata-Rata" css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max" <DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number"
css-class="custom-table-column" /> caption="Max" css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min" <DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number"
css-class="custom-table-column" /> caption="Min" css-class="custom-table-column" />
</DxColumn> </DxColumn>
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number" caption=">SLA" <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number"
css-class="custom-table-column" /> caption=">SLA" css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number" caption="SLA" <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number"
css-class="custom-table-column" /> caption="SLA" css-class="custom-table-column" />
</DxColumn> </DxColumn>
</DxColumn> </DxColumn>
<DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column"> <DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column">
<DxColumn alignment="center" caption="Menit" css-class="custom-table-column"> <DxColumn alignment="center" caption="Menit" css-class="custom-table-column">
<DxColumn :width="120" alignment="center" data-field="total_recovery" data-type="number" caption="Total" <DxColumn :width="120" alignment="center" data-field="total_recovery" data-type="number" caption="Total"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number" caption="Rata-Rata" <DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number"
css-class="custom-table-column" /> caption="Rata-Rata" css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max" <DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number"
css-class="custom-table-column" /> caption="Max" css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min" <DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number"
css-class="custom-table-column" /> caption="Min" css-class="custom-table-column" />
</DxColumn> </DxColumn>
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number" caption=">SLA" <DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number"
css-class="custom-table-column" /> caption=">SLA" css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number" caption="SLA" <DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number"
css-class="custom-table-column" /> caption="SLA" css-class="custom-table-column" />
</DxColumn> </DxColumn>
</DxColumn> </DxColumn>
</DxDataGrid> </DxDataGrid>
@ -152,25 +149,19 @@ query rekapitulasiGangguanPerTanggal(
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
avg_durasi_dispatch nama_posko
avg_durasi_recovery avg_durasi_recovery
avg_durasi_response avg_durasi_response
id_uid
id_up3
max_durasi_dispatch
max_durasi_recovery max_durasi_recovery
max_durasi_response max_durasi_response
min_durasi_dispatch
min_durasi_recovery min_durasi_recovery
min_durasi_response min_durasi_response
persen_inproses persen_inproses
persen_selesai persen_selesai
tanggal tanggal
total total
total_diatas_sla_dispatch
total_diatas_sla_recovery total_diatas_sla_recovery
total_diatas_sla_response total_diatas_sla_response
total_dibawah_sla_dispatch
total_dibawah_sla_recovery total_dibawah_sla_recovery
total_dibawah_sla_response total_dibawah_sla_response
total_inproses total_inproses
@ -178,22 +169,22 @@ query rekapitulasiGangguanPerTanggal(
} }
}`; }`;
const { onResult, onError,loading,refetch } = useQuery(GET_REKAPITULASI_GANGGUAN_PER_TANGGAL, { const { onResult, onError, loading, refetch } = useQuery(GET_REKAPITULASI_GANGGUAN_PER_TANGGAL, {
dateFrom: new Date("2023-10-01").toISOString().slice(0, 10), dateFrom: new Date("2023-10-01").toISOString().slice(0, 10),
dateTo: new Date("2023-10-01").toISOString().slice(0, 10), dateTo: new Date("2023-10-01").toISOString().slice(0, 10),
posko: 0, posko: 0,
idUid: 0, idUid: 0,
idUp3: 0, idUp3: 0,
}) })
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { posko, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : 0, posko: posko ? posko.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id : 0,
idUp3: up3? up3.id:0, idUp3: up3 ? up3.id : 0,
}) })
onResult(queryResult => { onResult(queryResult => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
@ -206,7 +197,7 @@ const filterData = (params: any) => {
onError((error) => { onError((error) => {
console.log(error) console.log(error)
}) })
} }
const filters = ref(); const filters = ref();
</script> </script>

View File

@ -28,6 +28,8 @@
<DxColumn v-for="i in 31" :width="150" alignment="center" :data-field="`tgl${i}`" data-type="number" <DxColumn v-for="i in 31" :width="150" alignment="center" :data-field="`tgl${i}`" data-type="number"
:caption="i" css-class="custom-table-column" /> :caption="i" css-class="custom-table-column" />
</DxColumn> </DxColumn>
<DxColumn :width="170" alignment="center" data-field="total" caption="Total"
css-class="custom-table-column" />
</DxDataGrid> </DxDataGrid>
</div> </div>
</template> </template>
@ -35,8 +37,7 @@
<script setup lang="ts"> <script setup lang="ts">
import Filters from '@/components/Form/Filters.vue' import Filters from '@/components/Form/Filters.vue'
import Type1 from '@/components/Form/FiltersType/Type1.vue' import Type1 from '@/components/Form/FiltersType/Type1.vue'
import { onMounted, ref } from 'vue' import { ref } from 'vue'
import { useFiltersStore } from '@/stores/filters'
import { DxDataGrid } from 'devextreme-vue' import { DxDataGrid } from 'devextreme-vue'
import { import {
DxColumn, DxColumn,
@ -110,6 +111,7 @@ const GET_REKAPITULASI_BERDASARKAN_MEDIA = gql`
idUp3: $idUp3 idUp3: $idUp3
) { ) {
media media
total
tgl1 tgl1
tgl10 tgl10
tgl11 tgl11
@ -148,7 +150,7 @@ const GET_REKAPITULASI_BERDASARKAN_MEDIA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_REKAPITULASI_BERDASARKAN_MEDIA, { const { onResult, onError, loading, refetch } = useQuery(GET_REKAPITULASI_BERDASARKAN_MEDIA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', posko: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })

View File

@ -22,8 +22,8 @@
<DxColumn css-class="custom-table-column" :width="50" alignment="center" <DxColumn css-class="custom-table-column" :width="50" alignment="center"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
<DxColumn alignment="center" data-field="id_uid" caption="Nama UP3" css-class="custom-table-column" /> <DxColumn alignment="center" data-field="nama_up3" caption="Nama UP3" css-class="custom-table-column" />
<DxColumn alignment="center" data-field="id_up3" caption="Nama Posko" css-class="custom-table-column" /> <DxColumn alignment="center" data-field="nama_posko" caption="Nama Posko" css-class="custom-table-column" />
<DxColumn :width="100" alignment="center" data-field="posko_in" caption="Posko IN" <DxColumn :width="100" alignment="center" data-field="posko_in" caption="Posko IN"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="100" alignment="center" data-field="posko_out" caption="Posko OUT" <DxColumn :width="100" alignment="center" data-field="posko_out" caption="Posko OUT"
@ -37,7 +37,6 @@
import Filters from '@/components/Form/Filters.vue' import Filters from '@/components/Form/Filters.vue'
import Type1 from '@/components/Form/FiltersType/Type1.vue' import Type1 from '@/components/Form/FiltersType/Type1.vue'
import { onMounted, ref } from 'vue' import { onMounted, ref } from 'vue'
import { useFiltersStore } from '@/stores/filters'
import { DxDataGrid } from 'devextreme-vue' import { DxDataGrid } from 'devextreme-vue'
import { DxColumn, DxColumnFixing, DxExport, DxLoadPanel, DxPaging, DxScrolling, DxSearchPanel, DxSelection } from 'devextreme-vue/data-grid' import { DxColumn, DxColumnFixing, DxExport, DxLoadPanel, DxPaging, DxScrolling, DxSearchPanel, DxSelection } from 'devextreme-vue/data-grid'
import { jsPDF } from 'jspdf' import { jsPDF } from 'jspdf'
@ -102,11 +101,14 @@ query rekapitulasiGangguanAlihPosko
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
id_uid id_posko
id_up3 id_uid
posko id_up3
posko_in nama_posko
posko_out nama_uid
nama_up3
posko_in
posko_out
} }
}`; }`;

View File

@ -154,14 +154,14 @@ const showPane = ref(true)
const dataReal = ref<any[]>([]) const dataReal = ref<any[]>([])
const GET_REKAP_JENIS_GANGGUAN = gql` const GET_REKAP_JENIS_GANGGUAN = gql`
query daftarGangguanRecoveryTime( query rekapitulasiPerJenisGangguan(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $posko: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
rekapitulasiJenisGangguan( rekapitulasiPerJenisGangguan(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko posko: $posko
@ -247,7 +247,7 @@ const filterData = (params: any) => {
onResult((queryResult) => { onResult((queryResult) => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
let no = 0 let no = 0
queryResult.data.rekapitulasiJenisGangguan.forEach((item: any) => { queryResult.data.rekapitulasiPerJenisGangguan.forEach((item: any) => {
dataReal.value = [ dataReal.value = [
...dataReal.value, ...dataReal.value,
{ {

View File

@ -12,10 +12,10 @@
:allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
<DxSelection mode="single" /> <DxSelection mode="single" />
<DxPaging :page-size="5" :enabled="true" /> <DxPaging :page-size="5" :enabled="true" />
<DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" <DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" :show-page-size-selector="true"
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" /> :show-info="true" :show-navigation-buttons="true" />
<DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" <DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading"
v-if="loading" v-model:visible="loading" :enabled="true" /> v-if="loading" v-model:visible="loading" :enabled="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
@ -38,7 +38,7 @@
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" <DxColumn :width="170" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="posko_asal" caption="Unit Asal" <DxColumn :width="170" alignment="center" data-field="nama_unit_lama" caption="Unit Asal"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="status_akhir" caption="Status" <DxColumn :width="120" alignment="center" data-field="status_akhir" caption="Status"
css-class="custom-table-column" /> css-class="custom-table-column" />
@ -60,7 +60,6 @@
import Filters from '@/components/Form/Filters.vue' import Filters from '@/components/Form/Filters.vue'
import Type3 from '@/components/Form/FiltersType/Type3.vue' import Type3 from '@/components/Form/FiltersType/Type3.vue'
import { onMounted, ref } from 'vue' import { onMounted, ref } from 'vue'
import { useFiltersStore } from '@/stores/filters'
import { DxDataGrid } from 'devextreme-vue' import { DxDataGrid } from 'devextreme-vue'
import { import {
DxColumn, DxColumn,
@ -119,46 +118,47 @@ const onSelectionChanged = ({ selectedRowsData }: any) => {
} }
const data = ref<any[]>([]) const data = ref<any[]>([])
const GET_DAFTAR_KELUHAN_DIPINDAHKAN_KE_POSKO_LAIN = gql` const GET_DAFTAR_KELUHAN_DIPINDAHKAN_KE_idUlp_LAIN = gql`
query daftarKeluhanDipindahkanKePoskoLain( query daftarKeluhanDialihkanKeUnitLain(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
daftarKeluhanDipindahkanKePoskoLain( daftarKeluhanDialihkanKeUnitLain(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
alamat_pelapor alamat_pelapor
durasi_recovery_time durasi_recovery_time
durasi_response_time durasi_response_time
id_keluhan id_unit_baru
id_uid id_unit_lama
id_up3 idpel_nometer
idpel_nometer keterangan_pelapor
keterangan_pelapor media
media nama_pelapor
nama_pelapor nama_unit_baru
no_laporan nama_unit_lama
no_telp_pelapor no_laporan
posko_asal no_telp_pelapor
posko_tujuan pembuat_laporan
status_akhir status_akhir
waktu_dialihkan waktu_dialihkan
waktu_recovery waktu_lapor
waktu_response waktu_recovery
waktu_response
} }
} }
` `
const { onResult, onError, loading, refetch } = useQuery(GET_DAFTAR_KELUHAN_DIPINDAHKAN_KE_POSKO_LAIN, { const { onResult, onError, loading, refetch } = useQuery(GET_DAFTAR_KELUHAN_DIPINDAHKAN_KE_idUlp_LAIN, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -166,16 +166,17 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DAFTAR_KELUHAN_DIPI
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { ulp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: ulp ? ulp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id : 0,
idUp3: up3? up3.id:0}) idUp3: up3 ? up3.id : 0
})
onResult((queryResult) => { onResult((queryResult) => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
data.value = queryResult.data.daftarKeluhanDipindahkanKePoskoLain data.value = queryResult.data.daftarKeluhanDialihkanKeUnitLain
} }
console.log(queryResult.data) console.log(queryResult.data)
console.log(queryResult.loading) console.log(queryResult.loading)

View File

@ -12,10 +12,10 @@
:allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
<DxSelection mode="single" /> <DxSelection mode="single" />
<DxPaging :page-size="5" :enabled="true" /> <DxPaging :page-size="5" :enabled="true" />
<DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" <DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" :show-page-size-selector="true"
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" /> :show-info="true" :show-navigation-buttons="true" />
<DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" <DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading"
v-if="loading" v-model:visible="loading" :enabled="true" /> v-if="loading" v-model:visible="loading" :enabled="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
@ -54,7 +54,7 @@
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="media" caption="Sumber Lapor" <DxColumn :width="150" alignment="center" data-field="media" caption="Sumber Lapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="posko" caption="Nama ULP" <DxColumn :width="150" alignment="center" data-field="idUlp" caption="Nama ULP"
css-class="custom-table-column" /> css-class="custom-table-column" />
</DxDataGrid> </DxDataGrid>
</div> </div>
@ -129,7 +129,7 @@ const GET_DATA = gql`
$maxJmlLapor: Int! $maxJmlLapor: Int!
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -138,24 +138,27 @@ const GET_DATA = gql`
dateTo: $dateTo dateTo: $dateTo
minJmlLapor: $minJmlLapor minJmlLapor: $minJmlLapor
maxJmlLapor: $maxJmlLapor maxJmlLapor: $maxJmlLapor
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
alamat_pelapor alamat_pelapor
durasi_recovery_time durasi_recovery_time
durasi_response_time durasi_response_time
id_keluhan idpel_nometer
idpel_nometer jumlah_lapor
keterangan_pelapor keterangan_pelapor
media media
nama_pelapor nama_pelapor
no_laporan nama_unit
no_telp_pelapor no_laporan
posko no_telp_pelapor
status_akhir status_akhir
waktu_recovery waktu_lapor
waktu_response
waktu_recovery
waktu_response
} }
} }
` `
@ -165,7 +168,7 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
maxJmlLapor: 100, maxJmlLapor: 100,
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -173,7 +176,7 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { ulp, uid, up3 } = params
const minJmlLapor = params.minJmlLapor ? params.minJmlLapor : 1; const minJmlLapor = params.minJmlLapor ? params.minJmlLapor : 1;
const maxJmlLapor = params.maxJmlLapor ? params.maxJmlLapor : 100; const maxJmlLapor = params.maxJmlLapor ? params.maxJmlLapor : 100;
refetch({ refetch({
@ -181,9 +184,10 @@ const filterData = (params: any) => {
maxJmlLapor: maxJmlLapor, maxJmlLapor: maxJmlLapor,
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: ulp ? ulp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id : 0,
idUp3: up3? up3.id:0}) idUp3: up3 ? up3.id : 0
})
onResult((queryResult) => { onResult((queryResult) => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
data.value = queryResult.data.daftarKeluhanMelaporLebihDariSatuKali data.value = queryResult.data.daftarKeluhanMelaporLebihDariSatuKali

View File

@ -24,12 +24,9 @@
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
<DxColumn :width="170" alignment="center" data-field="no_laporan" caption="No Laporan" <DxColumn :width="170" alignment="center" data-field="no_laporan" caption="No Laporan"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="pembuat_laporan" caption="Pembuat Laporan"
css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" <DxColumn :width="170" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_dialihkan" caption="Tgl Dialihkan"
css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_response" caption="Tgl Response" <DxColumn :width="170" alignment="center" data-field="waktu_response" caption="Tgl Response"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_recovery" caption="Tgl Recovery" <DxColumn :width="170" alignment="center" data-field="waktu_recovery" caption="Tgl Recovery"
@ -50,7 +47,7 @@
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" <DxColumn :width="170" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="posko" caption="Nama ULP" <DxColumn :width="150" alignment="center" data-field="nama_unit" caption="Nama ULP"
css-class="custom-table-column" /> css-class="custom-table-column" />
</DxDataGrid> </DxDataGrid>
</div> </div>
@ -125,7 +122,7 @@ const GET_DATA = gql`
$dateTo: Date! $dateTo: Date!
$minDurasiResponseTime: Int! $minDurasiResponseTime: Int!
$maxDurasiResponseTime: Int! $maxDurasiResponseTime: Int!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -134,24 +131,24 @@ const GET_DATA = gql`
dateTo: $dateTo dateTo: $dateTo
minDurasiResponseTime: $minDurasiResponseTime minDurasiResponseTime: $minDurasiResponseTime
maxDurasiResponseTime: $maxDurasiResponseTime maxDurasiResponseTime: $maxDurasiResponseTime
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
alamat_pelapor alamat_pelapor
durasi_recovery_time durasi_recovery_time
durasi_response_time durasi_response_time
id_keluhan idpel_nometer
idpel_nometer keterangan_pelapor
keterangan_pelapor media
media nama_pelapor
nama_pelapor nama_unit
no_laporan no_laporan
no_telp_pelapor no_telp_pelapor
posko status_akhir
status_akhir waktu_lapor
waktu_recovery waktu_recovery
waktu_response waktu_response
} }
} }
` `
@ -160,21 +157,19 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
minDurasiResponseTime: 0, minDurasiResponseTime: 0,
maxDurasiResponseTime: 0, maxDurasiResponseTime: 0,
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { ulp, uid, up3,maxTime,minTime } = params
const minDurasiResponseTime = params.minDurasiResponseTime ? params.minDurasiResponseTime : 0
const maxDurasiResponseTime = params.maxDurasiResponseTime ? params.maxDurasiResponseTime : 0
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
minDurasiResponseTime: minDurasiResponseTime, minDurasiResponseTime: minTime,
maxDurasiResponseTime: maxDurasiResponseTime, maxDurasiResponseTime:maxTime,
posko: posko ? posko.id : "", idUlp: ulp ? ulp.id :0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id :0,
idUp3: up3? up3.id:0}) idUp3: up3? up3.id:0})

View File

@ -12,10 +12,10 @@
:allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
<DxSelection mode="single" /> <DxSelection mode="single" />
<DxPaging :page-size="5" :enabled="true" /> <DxPaging :page-size="5" :enabled="true" />
<DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" <DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" :show-page-size-selector="true"
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" /> :show-info="true" :show-navigation-buttons="true" />
<DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" <DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading"
v-if="loading" v-model:visible="loading" :enabled="true" /> v-if="loading" v-model:visible="loading" :enabled="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
@ -24,18 +24,13 @@
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
<DxColumn :width="170" alignment="center" data-field="no_laporan" caption="No Laporan" <DxColumn :width="170" alignment="center" data-field="no_laporan" caption="No Laporan"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="pembuat_laporan" caption="Pembuat Laporan"
css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor" <DxColumn :width="170" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_dialihkan" caption="Tgl Dialihkan"
css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_response" caption="Tgl Response" <DxColumn :width="170" alignment="center" data-field="waktu_response" caption="Tgl Response"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="waktu_recovery" caption="Tgl Recovery" <DxColumn :width="170" alignment="center" data-field="waktu_recovery" caption="Tgl Recovery"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="120" alignment="center" data-field="jumlah_lapor" caption="Jml Lapor"
css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time" <DxColumn :width="170" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time" <DxColumn :width="170" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time"
@ -52,7 +47,7 @@
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor" <DxColumn :width="170" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="posko" caption="Nama ULP" <DxColumn :width="150" alignment="center" data-field="nama_unit" caption="Nama ULP"
css-class="custom-table-column" /> css-class="custom-table-column" />
</DxDataGrid> </DxDataGrid>
</div> </div>
@ -127,33 +122,33 @@ const GET_DATA = gql`
$dateTo: Date! $dateTo: Date!
$minDurasiRecoveryTime: Int! $minDurasiRecoveryTime: Int!
$maxDurasiRecoveryTime: Int! $maxDurasiRecoveryTime: Int!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
daftarKeluhanRecoveryTime( daftarKeluhanRecoveryTime(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
minDurasiRecoveryTime: $minDurasiRecoveryTime minDurasiRecoveryTime: $minDurasiRecoveryTime
maxDurasiRecoveryTime: $maxDurasiRecoveryTime maxDurasiRecoveryTime: $maxDurasiRecoveryTime
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
alamat_pelapor alamat_pelapor
durasi_recovery_time durasi_recovery_time
durasi_response_time durasi_response_time
id_keluhan idpel_nometer
idpel_nometer keterangan_pelapor
keterangan_pelapor media
media nama_pelapor
nama_pelapor nama_unit
no_laporan no_laporan
no_telp_pelapor no_telp_pelapor
posko status_akhir
status_akhir waktu_lapor
waktu_recovery waktu_recovery
waktu_response waktu_response
} }
} }
` `
@ -163,28 +158,27 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
minDurasiRecoveryTime: 0, minDurasiRecoveryTime: 0,
maxDurasiRecoveryTime: 0, maxDurasiRecoveryTime: 0,
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { ulp, uid, up3,minTime,maxTime } = params
const minDurasiRecoveryTime = params.minDurasiRecoveryTime ? params.minDurasiRecoveryTime : 0
const maxDurasiRecoveryTime = params.maxDurasiRecoveryTime ? params.maxDurasiRecoveryTime : 0
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
minDurasiRecoveryTime: minDurasiRecoveryTime, minDurasiRecoveryTime: minTime,
maxDurasiRecoveryTime: maxDurasiRecoveryTime, maxDurasiRecoveryTime: maxTime,
posko: posko ? posko.id : "", idUlp: ulp ? ulp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id : 0,
idUp3: up3? up3.id:0}) idUp3: up3 ? up3.id : 0
})
onResult((queryResult) => { onResult((queryResult) => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
data.value = queryResult.data.daftarKeluhanRecoveryTime data.value = queryResult.data.daftarKeluhanRecoveryTime
} }
console.log(queryResult.data) console.log(queryResult.data)
console.log(queryResult.loading) console.log(queryResult.loading)
@ -193,7 +187,7 @@ const filterData = (params: any) => {
onError((error) => { onError((error) => {
console.log(error) console.log(error)
}) })
} }
const filters = ref(); const filters = ref();
</script> </script>

View File

@ -54,7 +54,7 @@
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="media" caption="Sumber Lapor" <DxColumn :width="150" alignment="center" data-field="media" caption="Sumber Lapor"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Nama ULP" <DxColumn :width="150" alignment="center" data-field="nama_idUlp" caption="Nama ULP"
css-class="custom-table-column" /> css-class="custom-table-column" />
</DxDataGrid> </DxDataGrid>
</div> </div>
@ -127,14 +127,14 @@ const GET_DATA = gql`
query daftarKeluhanSelesaiTanpaIdPelanggan( query daftarKeluhanSelesaiTanpaIdPelanggan(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
daftarKeluhanSelesaiTanpaIdPelanggan( daftarKeluhanSelesaiTanpaIdPelanggan(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -148,7 +148,7 @@ const GET_DATA = gql`
nama_pelapor nama_pelapor
no_laporan no_laporan
no_telp_pelapor no_telp_pelapor
posko idUlp
status_akhir status_akhir
waktu_recovery waktu_recovery
waktu_response waktu_response
@ -159,18 +159,18 @@ const GET_DATA = gql`
const { onResult, onError,loading,refetch } = useQuery(GET_DATA, { const { onResult, onError,loading,refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id :0,
idUp3: up3? up3.id:0}) idUp3: up3? up3.id:0})

View File

@ -6,16 +6,16 @@
" /> " />
</Filters> </Filters>
<div id="data"> <div id="data">
<DxDataGrid class="max-h-[calc(100vh-140px)]" :show-column-lines="true" :show-row-lines="false" :show-borders="true" <DxDataGrid class="max-h-[calc(100vh-140px)]" :data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onSelectionChanged" :row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onSelectionChanged"
:column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget"
:word-wrap-enabled="true"> :word-wrap-enabled="true">
<DxSelection mode="single" /> <DxSelection mode="single" />
<DxPaging :page-size="5" :enabled="true" /> <DxPaging :page-size="5" :enabled="true" />
<DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" <DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" :show-page-size-selector="true"
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" /> :show-info="true" :show-navigation-buttons="true" />
<DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" <DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading"
v-if="loading" v-model:visible="loading" :enabled="true" /> v-if="loading" v-model:visible="loading" :enabled="true" />
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
@ -123,7 +123,7 @@ const GET_DATA = gql`
query daftarKeluhanBerdasarkanMedia( query daftarKeluhanBerdasarkanMedia(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
$media: String! $media: String!
@ -131,7 +131,7 @@ const GET_DATA = gql`
daftarKeluhanBerdasarkanMedia( daftarKeluhanBerdasarkanMedia(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
media: $media media: $media
@ -146,7 +146,7 @@ const GET_DATA = gql`
nama_pelapor nama_pelapor
no_laporan no_laporan
no_telp_pelapor no_telp_pelapor
posko idUlp
status_akhir status_akhir
waktu_recovery waktu_recovery
waktu_response waktu_response
@ -157,25 +157,26 @@ const GET_DATA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id : 0,
idUp3: up3? up3.id:0}) idUp3: up3 ? up3.id : 0
})
onResult((queryResult) => { onResult((queryResult) => {
if (queryResult.data != undefined) { if (queryResult.data != undefined) {
data.value = queryResult.data.daftarKeluhanBerdasarkanMedia data.value = queryResult.data.daftarKeluhanBerdasarkanMedia
} }
console.log(queryResult.data) console.log(queryResult.data)
console.log(queryResult.loading) console.log(queryResult.loading)

View File

@ -121,7 +121,7 @@ const GET_DATA = gql`
( (
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -129,7 +129,7 @@ const GET_DATA = gql`
( (
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -143,7 +143,7 @@ const GET_DATA = gql`
nama_pelapor nama_pelapor
no_laporan no_laporan
no_telp_pelapor no_telp_pelapor
posko idUlp
status_akhir status_akhir
waktu_recovery waktu_recovery
waktu_response waktu_response
@ -154,7 +154,7 @@ const GET_DATA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0, idUp3: 0,
media: 'Twitter' media: 'Twitter'
@ -163,12 +163,12 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
const media = params.media ? params.media.id : '' const media = params.media ? params.media.id : ''
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id : 0, idUid: uid ? uid.id : 0,
idUp3: up3 ? up3.id : 0, idUp3: up3 ? up3.id : 0,
media: media media: media

View File

@ -19,7 +19,7 @@
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
<DxColumnFixing :enabled="true" /> <DxColumnFixing :enabled="true" />
<DxColumn :width="170" alignment="center" data-field="posko" caption="Nama Unit" css-class="custom-table-column" /> <DxColumn :width="170" alignment="center" data-field="idUlp" caption="Nama Unit" css-class="custom-table-column" />
<DxColumn alignment="center" caption="Response Time" css-class="custom-table-column"> <DxColumn alignment="center" caption="Response Time" css-class="custom-table-column">
<DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total" <DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total"
css-class="custom-table-column" /> css-class="custom-table-column" />
@ -126,7 +126,7 @@ query rekapitulasiKeluhanAll
( (
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -134,7 +134,7 @@ query rekapitulasiKeluhanAll
( (
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -151,7 +151,7 @@ query rekapitulasiKeluhanAll
min_durasi_response min_durasi_response
persen_inproses persen_inproses
persen_selesai persen_selesai
posko idUlp
total total
total_diatas_sla_dispatch total_diatas_sla_dispatch
total_diatas_sla_recovery total_diatas_sla_recovery
@ -167,7 +167,7 @@ query rekapitulasiKeluhanAll
const { onResult, onError,loading,refetch } = useQuery(GET_DATA, { const { onResult, onError,loading,refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -175,11 +175,11 @@ query rekapitulasiKeluhanAll
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id :0,
idUp3: up3? up3.id:0}) idUp3: up3? up3.id:0})

View File

@ -147,14 +147,14 @@ const GET_DATA = gql`
query rekapitulasiKeluhanPenyelesaianPerFungsiBidang( query rekapitulasiKeluhanPenyelesaianPerFungsiBidang(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
rekapitulasiKeluhanPenyelesaianPerFungsiBidang( rekapitulasiKeluhanPenyelesaianPerFungsiBidang(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -182,7 +182,7 @@ const GET_DATA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -190,11 +190,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id :0,
idUp3: up3? up3.id:0}) idUp3: up3? up3.id:0})

View File

@ -138,7 +138,7 @@ query rekapitulasiKeluhanPerJenisKeluhan
( (
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -146,7 +146,7 @@ query rekapitulasiKeluhanPerJenisKeluhan
( (
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -176,7 +176,7 @@ query rekapitulasiKeluhanPerJenisKeluhan
const { onResult, onError, loading,refetch } = useQuery(GET_DATA, { const { onResult, onError, loading,refetch } = useQuery(GET_DATA, {
dateFrom: new Date("2023-10-01").toISOString().slice(0, 10), dateFrom: new Date("2023-10-01").toISOString().slice(0, 10),
dateTo: new Date("2023-10-01").toISOString().slice(0, 10), dateTo: new Date("2023-10-01").toISOString().slice(0, 10),
posko: 0, idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0, idUp3: 0,
}) })
@ -184,11 +184,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id :0,
idUp3: up3? up3.id:0}) idUp3: up3? up3.id:0})

View File

@ -138,7 +138,7 @@ query rekapitulasiKeluhanPerKelompokKeluhan
( (
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -146,7 +146,7 @@ query rekapitulasiKeluhanPerKelompokKeluhan
( (
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -176,7 +176,7 @@ query rekapitulasiKeluhanPerKelompokKeluhan
const { onResult, onError ,loading,refetch} = useQuery(GET_DATA, { const { onResult, onError ,loading,refetch} = useQuery(GET_DATA, {
dateFrom: new Date("2023-10-01").toISOString().slice(0, 10), dateFrom: new Date("2023-10-01").toISOString().slice(0, 10),
dateTo: new Date("2023-10-01").toISOString().slice(0, 10), dateTo: new Date("2023-10-01").toISOString().slice(0, 10),
posko: 0, idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0, idUp3: 0,
}) })
@ -184,11 +184,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id :0, idUid: uid ? uid.id :0,
idUp3: up3? up3.id:0}) idUp3: up3? up3.id:0})

View File

@ -145,14 +145,14 @@ const GET_DATA = gql`
query rekapitulasiKeluhanPerTanggal( query rekapitulasiKeluhanPerTanggal(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
rekapitulasiKeluhanPerTanggal( rekapitulasiKeluhanPerTanggal(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -185,7 +185,7 @@ const GET_DATA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: '',
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -193,11 +193,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id : 0, idUid: uid ? uid.id : 0,
idUp3: up3 ? up3.id : 0 idUp3: up3 ? up3.id : 0
}) })

View File

@ -21,7 +21,7 @@
<DxColumn :width="50" alignment="center" :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" <DxColumn :width="50" alignment="center" :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
caption="NO" css-class="custom-table-column" /> caption="NO" css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="posko" caption="Unit" css-class="custom-table-column" /> <DxColumn :width="170" alignment="center" data-field="idUlp" caption="Unit" css-class="custom-table-column" />
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total" <DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total"
css-class="custom-table-column" /> css-class="custom-table-column" />
@ -144,14 +144,14 @@ const GET_DATA = gql`
query rekapitulasiKeluhanPerUnit( query rekapitulasiKeluhanPerUnit(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
rekapitulasiKeluhanPerUnit( rekapitulasiKeluhanPerUnit(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -168,7 +168,7 @@ const GET_DATA = gql`
min_durasi_response min_durasi_response
persen_inproses persen_inproses
persen_selesai persen_selesai
posko idUlp
total total
total_diatas_sla_dispatch total_diatas_sla_dispatch
total_diatas_sla_recovery total_diatas_sla_recovery
@ -184,7 +184,7 @@ const GET_DATA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -192,11 +192,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id : 0, idUid: uid ? uid.id : 0,
idUp3: up3 ? up3.id : 0 idUp3: up3 ? up3.id : 0
}) })

View File

@ -96,14 +96,14 @@ const GET_DATA = gql`
query rekapitulasiKeluhanBerdasarkanMedia( query rekapitulasiKeluhanBerdasarkanMedia(
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
rekapitulasiKeluhanBerdasarkanMedia( rekapitulasiKeluhanBerdasarkanMedia(
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -145,7 +145,7 @@ const GET_DATA = gql`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10), dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10), dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
posko: '', idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0 idUp3: 0
}) })
@ -153,11 +153,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id : 0, idUid: uid ? uid.id : 0,
idUp3: up3 ? up3.id : 0 idUp3: up3 ? up3.id : 0
}) })

View File

@ -23,7 +23,7 @@
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" />
<DxColumn :width="150" alignment="center" data-field="regu" caption="Kode Unit" <DxColumn :width="150" alignment="center" data-field="regu" caption="Kode Unit"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn :width="170" alignment="center" data-field="nama_posko" caption="Nama Unit" <DxColumn :width="170" alignment="center" data-field="nama_idUlp" caption="Nama Unit"
css-class="custom-table-column" /> css-class="custom-table-column" />
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column"> <DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total" <DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total"
@ -131,7 +131,7 @@ query rekapitulasiKeluhanRatingPerUnit
( (
$dateFrom: Date! $dateFrom: Date!
$dateTo: Date! $dateTo: Date!
$posko: Int! $idUlp: Int!
$idUid: Int! $idUid: Int!
$idUp3: Int! $idUp3: Int!
) { ) {
@ -139,7 +139,7 @@ query rekapitulasiKeluhanRatingPerUnit
( (
dateFrom: $dateFrom dateFrom: $dateFrom
dateTo: $dateTo dateTo: $dateTo
posko: $posko idUlp: $idUlp
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
@ -147,7 +147,7 @@ query rekapitulasiKeluhanRatingPerUnit
indeks_rating indeks_rating
jumlah_non_rating jumlah_non_rating
jumlah_rating jumlah_rating
nama_posko nama_idUlp
persen_in_process persen_in_process
persen_non_rating persen_non_rating
persen_rating persen_rating
@ -165,7 +165,7 @@ query rekapitulasiKeluhanRatingPerUnit
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, { const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date("2023-10-01").toISOString().slice(0, 10), dateFrom: new Date("2023-10-01").toISOString().slice(0, 10),
dateTo: new Date("2023-10-01").toISOString().slice(0, 10), dateTo: new Date("2023-10-01").toISOString().slice(0, 10),
posko: 0, idUlp: 0,
idUid: 0, idUid: 0,
idUp3: 0, idUp3: 0,
}) })
@ -173,11 +173,11 @@ const filters = ref();
const filterData = (params: any) => { const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { posko, uid, up3 } = params const { idUlp, uid, up3 } = params
refetch({ refetch({
dateFrom: dateValue[0] ? dateValue[0].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10), 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), dateTo: dateValue[1] ? dateValue[1].split('-').reverse().join('-') : new Date().toISOString().slice(0, 10),
posko: posko ? posko.id : "", idUlp: idUlp ? idUlp.id : 0,
idUid: uid ? uid.id : 0, idUid: uid ? uid.id : 0,
idUp3: up3 ? up3.id : 0 idUp3: up3 ? up3.id : 0
}) })

View File

@ -29,6 +29,8 @@ const selected = ref(data.value[0].id)
watch( watch(
() => props.selected, () => props.selected,
(value: any) => { (value: any) => {
console.log('value', value)
console.log('aaaaaaaaaaaaaaaa')
selected.value = value.id selected.value = value.id
} }
) )