Refactor code: Remove unnecessary code and update placeholders
This commit is contained in:
parent
7997adacb9
commit
61105e8e02
@ -12,6 +12,7 @@ import {
|
|||||||
itemsUlp
|
itemsUlp
|
||||||
} from './reference'
|
} from './reference'
|
||||||
import { onMounted, ref } from 'vue'
|
import { onMounted, ref } 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'
|
||||||
@ -24,8 +25,9 @@ const data = ref({
|
|||||||
up3: up3.value,
|
up3: up3.value,
|
||||||
ulp: ulp.value,
|
ulp: ulp.value,
|
||||||
periode: '',
|
periode: '',
|
||||||
group: 1
|
groupBy: false
|
||||||
})
|
})
|
||||||
|
|
||||||
const setUid = (value: any) => {
|
const setUid = (value: any) => {
|
||||||
uid.value = value
|
uid.value = value
|
||||||
selectedUid(value)
|
selectedUid(value)
|
||||||
@ -47,6 +49,7 @@ const setUlp = (value: any) => {
|
|||||||
|
|
||||||
console.log('data.value', data.value)
|
console.log('data.value', data.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
emit('update:filters', data.value)
|
emit('update:filters', data.value)
|
||||||
fetchUid()
|
fetchUid()
|
||||||
@ -96,12 +99,7 @@ onMounted(() => {
|
|||||||
>
|
>
|
||||||
|
|
||||||
<InlineRadioGroup
|
<InlineRadioGroup
|
||||||
@update:group-value="
|
@update:group-value="(value) => (data.groupBy = value.id === 2)"
|
||||||
(value) => {
|
|
||||||
data.group = value
|
|
||||||
console.log('data.group', value)
|
|
||||||
}
|
|
||||||
"
|
|
||||||
:radio-items="[
|
:radio-items="[
|
||||||
{ id: 1, title: 'Tidak' },
|
{ id: 1, title: 'Tidak' },
|
||||||
{ id: 2, title: 'Ya, Grupkan' }
|
{ id: 2, title: 'Ya, Grupkan' }
|
||||||
|
@ -16,7 +16,7 @@ import { onMounted, ref } from 'vue'
|
|||||||
const emit = defineEmits(['update:filters'])
|
const emit = defineEmits(['update:filters'])
|
||||||
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 poskoPlaceholder = 'Semua Unit Layanan Pelanggan'
|
const poskoPlaceholder = 'Semua Posko'
|
||||||
const up3 = 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 posko = ref({ id: 0, name: poskoPlaceholder })
|
const posko = ref({ id: 0, name: poskoPlaceholder })
|
||||||
|
@ -16,16 +16,16 @@ import { onMounted, ref, watch } from 'vue'
|
|||||||
const emit = defineEmits(['update:filters'])
|
const emit = defineEmits(['update:filters'])
|
||||||
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 poskoPlaceholder = 'Semua Unit Layanan Pelanggan'
|
const poskoPlaceholder = 'Semua Posko'
|
||||||
const up3 = 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 posko = ref({ id: 0, name: poskoPlaceholder })
|
const posko = ref({ id: 0, name: poskoPlaceholder })
|
||||||
const totalMin = ref("1 Menit")
|
const totalMin = ref('1 Menit')
|
||||||
const totalMax = ref("5 Menit")
|
const totalMax = ref('5 Menit')
|
||||||
|
|
||||||
const setDataMin = (value: any) => totalMin.value = value
|
const setDataMin = (value: any) => (totalMin.value = value)
|
||||||
const getDataMin = () => totalMin.value
|
const getDataMin = () => totalMin.value
|
||||||
const setDataMax = (value: any) => totalMax.value = value
|
const setDataMax = (value: any) => (totalMax.value = value)
|
||||||
const getDataMax = () => totalMax.value
|
const getDataMax = () => totalMax.value
|
||||||
|
|
||||||
const data = ref({
|
const data = ref({
|
||||||
@ -37,8 +37,6 @@ const data = ref({
|
|||||||
maxTime: getDataMax().split(' ')[0]
|
maxTime: getDataMax().split(' ')[0]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const setUid = (value: any) => {
|
const setUid = (value: any) => {
|
||||||
uid.value = value
|
uid.value = value
|
||||||
selectedUid(value)
|
selectedUid(value)
|
||||||
@ -109,21 +107,35 @@ onMounted(() => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<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="block mb-2 font-semibold text-gray-800 sm:mb-0">Unit Induk Distribusi/Wilayah:</label>
|
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0"
|
||||||
|
>Unit Induk Distribusi/Wilayah:</label
|
||||||
|
>
|
||||||
|
|
||||||
<Select @update:selected="setUid($event)" :data="itemsUid" :placeholder="uidPlaceholder" />
|
<Select @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="block mb-2 font-semibold text-gray-800 sm:mb-0">Unit Pelaksanaan Pelayanan Pelanggan:</label>
|
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0"
|
||||||
|
>Unit Pelaksanaan Pelayanan Pelanggan:</label
|
||||||
|
>
|
||||||
|
|
||||||
<Select @update:selected="setUp3($event)" :data="itemsUp3" :selected="up3" :placeholder="up3Placeholder" />
|
<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">
|
||||||
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0">Posko:</label>
|
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0">Posko:</label>
|
||||||
|
|
||||||
<Select @update:selected="setPosko($event)" :data="itemsPosko" :selected="posko" :placeholder="poskoPlaceholder" />
|
<Select
|
||||||
|
@update:selected="setPosko($event)"
|
||||||
|
:data="itemsPosko"
|
||||||
|
:selected="posko"
|
||||||
|
:placeholder="poskoPlaceholder"
|
||||||
|
/>
|
||||||
</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">
|
||||||
|
@ -369,7 +369,5 @@ const filterData = (params: any) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const filters = ref({
|
const filters = ref({ groupBy: false })
|
||||||
groupBy: false
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -210,11 +210,6 @@
|
|||||||
{{ data.text }}
|
{{ data.text }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
<template #title-header="{ data }">
|
|
||||||
<p class="w-full text-center">
|
|
||||||
{{ data.column.caption }}
|
|
||||||
</p>
|
|
||||||
</template>
|
|
||||||
</DxDataGrid>
|
</DxDataGrid>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
>
|
>
|
||||||
<Type13 @update:filters="(value) => (filters = value)" />
|
<Type13 @update:filters="(value) => (filters = value)" />
|
||||||
</Filters>
|
</Filters>
|
||||||
|
|
||||||
<div id="data">
|
<div id="data">
|
||||||
<DxDataGrid
|
<DxDataGrid
|
||||||
class="max-h-[calc(100vh-140px)] mb-10"
|
class="max-h-[calc(100vh-140px)] mb-10"
|
||||||
@ -45,18 +46,30 @@
|
|||||||
|
|
||||||
<DxColumn
|
<DxColumn
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
:width="50"
|
:width="100"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
|
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
|
||||||
data-type="number"
|
data-type="number"
|
||||||
|
data-field="no"
|
||||||
caption="No"
|
caption="No"
|
||||||
/>
|
/>
|
||||||
|
<!-- <DxColumn
|
||||||
|
:width="120"
|
||||||
|
alignment="center"
|
||||||
|
data-field="nama_uid"
|
||||||
|
caption="Nama UID"
|
||||||
|
css-class="custom-table-column"
|
||||||
|
:group-index="0"
|
||||||
|
name="NamaUID"
|
||||||
|
v-if="filters.groupBy"
|
||||||
|
/> -->
|
||||||
<DxColumn
|
<DxColumn
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="fungsi_bidang"
|
data-field="fungsi_bidang"
|
||||||
caption="Fungsi Bidang"
|
caption="Fungsi Bidang"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="cell-left"
|
||||||
/>
|
/>
|
||||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||||
<DxColumn
|
<DxColumn
|
||||||
@ -83,6 +96,7 @@
|
|||||||
data-type="number"
|
data-type="number"
|
||||||
caption="%"
|
caption="%"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="percent"
|
||||||
/>
|
/>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
||||||
@ -101,6 +115,7 @@
|
|||||||
data-type="number"
|
data-type="number"
|
||||||
caption="%"
|
caption="%"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="percent"
|
||||||
/>
|
/>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
@ -217,11 +232,130 @@
|
|||||||
</DxColumn>
|
</DxColumn>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
|
|
||||||
|
<DxSummary>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="Total"
|
||||||
|
show-in-column="no"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
</DxSummary>
|
||||||
|
|
||||||
<template #data-waktu="{ data }">
|
<template #data-waktu="{ data }">
|
||||||
<p>
|
<p>
|
||||||
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
<template #percent="{ data }">
|
||||||
|
<p>{{ data.text }}%</p>
|
||||||
|
</template>
|
||||||
|
<template #cell-left="{ data }">
|
||||||
|
<p class="text-left">
|
||||||
|
{{ data.text }}
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
</DxDataGrid>
|
</DxDataGrid>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -240,7 +374,9 @@ import {
|
|||||||
DxPaging,
|
DxPaging,
|
||||||
DxScrolling,
|
DxScrolling,
|
||||||
DxSearchPanel,
|
DxSearchPanel,
|
||||||
DxSelection
|
DxSelection,
|
||||||
|
DxSummary,
|
||||||
|
DxTotalItem
|
||||||
} from 'devextreme-vue/data-grid'
|
} from 'devextreme-vue/data-grid'
|
||||||
import { jsPDF } from 'jspdf'
|
import { jsPDF } from 'jspdf'
|
||||||
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
|
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
|
||||||
@ -325,6 +461,44 @@ const GET_DATA = gql`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
// const GET_DATA = gql`
|
||||||
|
// query rekapitulasiKeluhanPenyelesaianPerFungsiBidang(
|
||||||
|
// $dateFrom: Date!
|
||||||
|
// $dateTo: Date!
|
||||||
|
// $idUlp: Int!
|
||||||
|
// $idUid: Int!
|
||||||
|
// $idUp3: Int!
|
||||||
|
// ) {
|
||||||
|
// rekapitulasiKeluhanPenyelesaianPerFungsiBidang(
|
||||||
|
// dateFrom: $dateFrom
|
||||||
|
// dateTo: $dateTo
|
||||||
|
// idUlp: $idUlp
|
||||||
|
// idUid: $idUid
|
||||||
|
// idUp3: $idUp3
|
||||||
|
// ) {
|
||||||
|
// id_uid
|
||||||
|
// nama_uid
|
||||||
|
// fungsi_bidang
|
||||||
|
// total
|
||||||
|
// total_durasi_response
|
||||||
|
// total_durasi_recovery
|
||||||
|
// total_selesai
|
||||||
|
// persen_selesai
|
||||||
|
// total_inproses
|
||||||
|
// persen_inproses
|
||||||
|
// avg_durasi_response
|
||||||
|
// min_durasi_response
|
||||||
|
// max_durasi_response
|
||||||
|
// total_dibawah_sla_response
|
||||||
|
// total_diatas_sla_response
|
||||||
|
// avg_durasi_recovery
|
||||||
|
// min_durasi_recovery
|
||||||
|
// max_durasi_recovery
|
||||||
|
// total_dibawah_sla_recovery
|
||||||
|
// total_diatas_sla_recovery
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// `
|
||||||
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),
|
||||||
@ -332,7 +506,7 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
|
|||||||
idUid: 0,
|
idUid: 0,
|
||||||
idUp3: 0
|
idUp3: 0
|
||||||
})
|
})
|
||||||
const filters = ref()
|
const filters = ref({ groupBy: false })
|
||||||
|
|
||||||
const filterData = (params: any) => {
|
const filterData = (params: any) => {
|
||||||
const dateValue = params.periode.split(' s/d ')
|
const dateValue = params.periode.split(' s/d ')
|
||||||
|
@ -41,10 +41,11 @@
|
|||||||
|
|
||||||
<DxColumn
|
<DxColumn
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
:width="50"
|
:width="100"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
|
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
|
||||||
data-type="number"
|
data-type="number"
|
||||||
|
data-field="no"
|
||||||
caption="No"
|
caption="No"
|
||||||
/>
|
/>
|
||||||
<DxColumn
|
<DxColumn
|
||||||
@ -53,7 +54,17 @@
|
|||||||
data-field="tipe_keluhan"
|
data-field="tipe_keluhan"
|
||||||
caption="Jenis Keluhan"
|
caption="Jenis Keluhan"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="cell-left"
|
||||||
/>
|
/>
|
||||||
|
<!-- <DxColumn
|
||||||
|
:width="170"
|
||||||
|
alignment="center"
|
||||||
|
data-field="tipe_keluhan"
|
||||||
|
caption="Jenis Keluhan"
|
||||||
|
name="tipeKeluhan"
|
||||||
|
css-class="custom-table-column"
|
||||||
|
:group-index="0"
|
||||||
|
/> -->
|
||||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||||
<DxColumn
|
<DxColumn
|
||||||
:width="150"
|
:width="150"
|
||||||
@ -97,6 +108,7 @@
|
|||||||
data-type="number"
|
data-type="number"
|
||||||
caption="%"
|
caption="%"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="percent"
|
||||||
/>
|
/>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
@ -213,11 +225,257 @@
|
|||||||
</DxColumn>
|
</DxColumn>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
|
|
||||||
|
<DxSummary>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="Total"
|
||||||
|
show-in-column="no"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
<DxGroupItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
:show-in-group-footer="true"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="Total"
|
||||||
|
show-in-column="no"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
</DxSummary>
|
||||||
|
|
||||||
<template #data-waktu="{ data }">
|
<template #data-waktu="{ data }">
|
||||||
<p>
|
<p>
|
||||||
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
<template #percent="{ data }">
|
||||||
|
<p>{{ data.text }}%</p>
|
||||||
|
</template>
|
||||||
|
<template #cell-left="{ data }">
|
||||||
|
<p class="text-left">
|
||||||
|
{{ data.text }}
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
</DxDataGrid>
|
</DxDataGrid>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -236,7 +494,10 @@ import {
|
|||||||
DxPaging,
|
DxPaging,
|
||||||
DxScrolling,
|
DxScrolling,
|
||||||
DxSearchPanel,
|
DxSearchPanel,
|
||||||
DxSelection
|
DxSelection,
|
||||||
|
DxSummary,
|
||||||
|
DxTotalItem,
|
||||||
|
DxGroupItem
|
||||||
} from 'devextreme-vue/data-grid'
|
} from 'devextreme-vue/data-grid'
|
||||||
import { jsPDF } from 'jspdf'
|
import { jsPDF } from 'jspdf'
|
||||||
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
|
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
|
||||||
@ -320,6 +581,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),
|
||||||
|
@ -46,18 +46,30 @@
|
|||||||
|
|
||||||
<DxColumn
|
<DxColumn
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
:width="50"
|
:width="100"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
|
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
|
||||||
data-type="number"
|
data-type="number"
|
||||||
|
data-field="no"
|
||||||
caption="No"
|
caption="No"
|
||||||
/>
|
/>
|
||||||
|
<!-- <DxColumn
|
||||||
|
:width="120"
|
||||||
|
alignment="center"
|
||||||
|
data-field="nama_uid"
|
||||||
|
caption="Nama UID"
|
||||||
|
css-class="custom-table-column"
|
||||||
|
:group-index="0"
|
||||||
|
name="NamaUID"
|
||||||
|
v-if="filters.groupBy"
|
||||||
|
/> -->
|
||||||
<DxColumn
|
<DxColumn
|
||||||
:width="170"
|
:width="170"
|
||||||
alignment="center"
|
alignment="center"
|
||||||
data-field="kelompok"
|
data-field="kelompok"
|
||||||
caption="Kelompok Keluhan"
|
caption="Kelompok Keluhan"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="cell-left"
|
||||||
/>
|
/>
|
||||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||||
<DxColumn
|
<DxColumn
|
||||||
@ -84,6 +96,7 @@
|
|||||||
data-type="number"
|
data-type="number"
|
||||||
caption="%"
|
caption="%"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="percent"
|
||||||
/>
|
/>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
||||||
@ -102,6 +115,7 @@
|
|||||||
data-type="number"
|
data-type="number"
|
||||||
caption="%"
|
caption="%"
|
||||||
css-class="custom-table-column"
|
css-class="custom-table-column"
|
||||||
|
cell-template="percent"
|
||||||
/>
|
/>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
@ -218,11 +232,130 @@
|
|||||||
</DxColumn>
|
</DxColumn>
|
||||||
</DxColumn>
|
</DxColumn>
|
||||||
|
|
||||||
|
<DxSummary>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="Total"
|
||||||
|
show-in-column="no"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_selesai"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}%"
|
||||||
|
column="persen_inproses"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_response"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="avg_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="min_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="max_durasi_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_diatas_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
<DxTotalItem
|
||||||
|
summary-type="sum"
|
||||||
|
display-format="{0}"
|
||||||
|
column="total_dibawah_sla_recovery"
|
||||||
|
css-class="text-white"
|
||||||
|
/>
|
||||||
|
</DxSummary>
|
||||||
|
|
||||||
<template #data-waktu="{ data }">
|
<template #data-waktu="{ data }">
|
||||||
<p>
|
<p>
|
||||||
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
|
<template #percent="{ data }">
|
||||||
|
<p>{{ data.text }}%</p>
|
||||||
|
</template>
|
||||||
|
<template #cell-left="{ data }">
|
||||||
|
<p class="text-left">
|
||||||
|
{{ data.text }}
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
</DxDataGrid>
|
</DxDataGrid>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -241,7 +374,9 @@ import {
|
|||||||
DxPaging,
|
DxPaging,
|
||||||
DxScrolling,
|
DxScrolling,
|
||||||
DxSearchPanel,
|
DxSearchPanel,
|
||||||
DxSelection
|
DxSelection,
|
||||||
|
DxSummary,
|
||||||
|
DxTotalItem
|
||||||
} from 'devextreme-vue/data-grid'
|
} from 'devextreme-vue/data-grid'
|
||||||
import { jsPDF } from 'jspdf'
|
import { jsPDF } from 'jspdf'
|
||||||
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
|
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
|
||||||
@ -325,6 +460,44 @@ const GET_DATA = gql`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
// const GET_DATA = gql`
|
||||||
|
// query rekapitulasiKeluhanPerKelompokKeluhan(
|
||||||
|
// $dateFrom: Date!
|
||||||
|
// $dateTo: Date!
|
||||||
|
// $idUlp: Int!
|
||||||
|
// $idUid: Int!
|
||||||
|
// $idUp3: Int!
|
||||||
|
// ) {
|
||||||
|
// rekapitulasiKeluhanPerKelompokKeluhan(
|
||||||
|
// dateFrom: $dateFrom
|
||||||
|
// dateTo: $dateTo
|
||||||
|
// idUlp: $idUlp
|
||||||
|
// idUid: $idUid
|
||||||
|
// idUp3: $idUp3
|
||||||
|
// ) {
|
||||||
|
// kelompok
|
||||||
|
// id_uid
|
||||||
|
// nama_uid
|
||||||
|
// total
|
||||||
|
// total_selesai
|
||||||
|
// persen_selesai
|
||||||
|
// total_inproses
|
||||||
|
// persen_inproses
|
||||||
|
// avg_durasi_response
|
||||||
|
// min_durasi_response
|
||||||
|
// max_durasi_response
|
||||||
|
// total_durasi_recovery
|
||||||
|
// total_durasi_response
|
||||||
|
// total_dibawah_sla_response
|
||||||
|
// total_diatas_sla_response
|
||||||
|
// avg_durasi_recovery
|
||||||
|
// min_durasi_recovery
|
||||||
|
// max_durasi_recovery
|
||||||
|
// total_dibawah_sla_recovery
|
||||||
|
// total_diatas_sla_recovery
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// `
|
||||||
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),
|
||||||
@ -332,7 +505,7 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
|
|||||||
idUid: 0,
|
idUid: 0,
|
||||||
idUp3: 0
|
idUp3: 0
|
||||||
})
|
})
|
||||||
const filters = ref()
|
const filters = ref({ groupBy: false })
|
||||||
|
|
||||||
const filterData = (params: any) => {
|
const filterData = (params: any) => {
|
||||||
const dateValue = params.periode.split(' s/d ')
|
const dateValue = params.periode.split(' s/d ')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user