Add laporanCheckInCheckOutDetail and update laporanCheckInCheckOut queries

This commit is contained in:
Dede Fuji Abdul 2024-03-31 23:37:56 +07:00
parent aa45bea79f
commit 80a7ff5f15
2 changed files with 281 additions and 132 deletions

View File

@ -184,7 +184,7 @@
<DetailDialog <DetailDialog
:open="dialogDetail" :open="dialogDetail"
title="Daftar Detail Jumlah WO Gangguan Individu" title="Daftar Detail Penugasan Khusus"
@on-close="closedialogDetail" @on-close="closedialogDetail"
:full-width="true" :full-width="true"
> >
@ -243,7 +243,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="nama_uid"
caption="UID/UIW" caption="UID/UIW"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -251,7 +251,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="nama_up3"
caption="UP3" caption="UP3"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -259,7 +259,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="nama_posko"
caption="Posko" caption="Posko"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -267,7 +267,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="media"
caption="Sumber Lapor" caption="Sumber Lapor"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -275,7 +275,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="pembuat_laporan"
caption="Created By" caption="Created By"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -283,7 +283,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="dispatch_by"
caption="Dispatch By" caption="Dispatch By"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -291,15 +291,15 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_dispatch"
caption="Dispatch Time" caption="Dispatch Time"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatNumber"
/> />
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="user_regu"
caption="User Regu" caption="User Regu"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -307,7 +307,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="nama_regu"
caption="Nama Regu" caption="Nama Regu"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -315,7 +315,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="personil_yantek"
caption="Nama Petugas" caption="Nama Petugas"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -323,7 +323,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="shift"
caption="Shif" caption="Shif"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -331,7 +331,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="check_in_petugas"
caption="Check In Petugas" caption="Check In Petugas"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -339,7 +339,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="no_laporan"
caption="No Laporan" caption="No Laporan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -347,7 +347,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_lapor"
caption="Tgl Lapor" caption="Tgl Lapor"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -355,7 +355,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_dispatch"
caption="Tgl Penugasan Baru" caption="Tgl Penugasan Baru"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -363,7 +363,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_perjalanan"
caption="Tgl Dalam Perjalanan" caption="Tgl Dalam Perjalanan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -371,7 +371,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_response"
caption="Tgl Pengerjaan" caption="Tgl Pengerjaan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -379,7 +379,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_nyala_sementara"
caption="Tgl Nyala Sementara" caption="Tgl Nyala Sementara"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -387,7 +387,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_nyala"
caption="Tgl Nyala" caption="Tgl Nyala"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -395,7 +395,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="waktu_selesai"
caption="Tgl Selesai" caption="Tgl Selesai"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -403,7 +403,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="durasi_waktu_response"
caption="Durasi Perjalanan" caption="Durasi Perjalanan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -411,7 +411,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="durasi_wo"
caption="Durasi WO" caption="Durasi WO"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -419,7 +419,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="check_out_petugas"
caption="Check Out Petugas" caption="Check Out Petugas"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -427,39 +427,39 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="durasi_menit_response"
caption="RPT" caption="RPT"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatNumber"
/> />
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="durasi_menit_recovery"
caption="RCT" caption="RCT"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatNumber"
/> />
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="rating"
caption="Rating" caption="Rating"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatNumber"
/> />
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="jml_pelanggan_padam"
caption="Jml Pelanggan Padam" caption="Jml Pelanggan Padam"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatNumber"
/> />
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="fasilitas"
caption="Fasilitas" caption="Fasilitas"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -467,7 +467,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="sub_fasilitas"
caption="Sub Fasilitas" caption="Sub Fasilitas"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -475,7 +475,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="peralatan"
caption="Peralatan" caption="Peralatan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -483,7 +483,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="dampak_kerusakan"
caption="Dampak Kerusakan" caption="Dampak Kerusakan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -491,7 +491,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="penyebab"
caption="Penyebab" caption="Penyebab"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -499,7 +499,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="kelompok_penyebab"
caption="Kelompok Penyebab" caption="Kelompok Penyebab"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -507,7 +507,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="cuaca"
caption="Cuaca" caption="Cuaca"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -515,7 +515,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="keterangan_pelapor"
caption="Keterangan Pelapor" caption="Keterangan Pelapor"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -523,7 +523,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="keterangan"
caption="Keterangan" caption="Keterangan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -531,15 +531,16 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="penyebab_padam"
caption="Penyebab Padam" caption="Penyebab Padam"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
:calculate-display-value="(item: any) => `${item.penyebab} - ${item.kelompok_penyebab}`"
/> />
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="tindakan"
caption="Tindakan" caption="Tindakan"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -547,7 +548,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="status_akhir"
caption="APKT Status" caption="APKT Status"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -555,7 +556,7 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="referensi_marking"
caption="Referensi Marking" caption="Referensi Marking"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatText"
@ -563,10 +564,10 @@
<DxColumn <DxColumn
:width="150" :width="150"
alignment="center" alignment="center"
data-field="" data-field="blth"
caption="BLTH" caption="BLTH"
css-class="custom-table-column" css-class="custom-table-column"
cell-template="formatText" cell-template="formatNumber"
/> />
<template #formatText="{ data }"> <template #formatText="{ data }">
@ -587,202 +588,279 @@
<div class="p-4 space-y-2 bg-white rounded-xl"> <div class="p-4 space-y-2 bg-white rounded-xl">
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">UID/UIW:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">UID/UIW:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.nama_uid" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">UP3:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">UP3:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.nama_up3" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Posko:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Posko:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.nama_posko" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Sumber Lapor:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Sumber Lapor:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.media" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Created By:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Created By:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.pembuat_laporan"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Dispatch By:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Dispatch By:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.dispatch_by" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Dispatch Time:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Dispatch Time:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.durasi_waktu_dispatch"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">User Regu:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">User Regu:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.user_regu" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Nama Regu:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Nama Regu:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.nama_regu" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Nama Petugas:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Nama Petugas:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.personil_yantek"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Shif:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Shif:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.shift" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Check In Petugas:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Check In Petugas:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.check_in_petugas"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">No Laporan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">No Laporan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.no_laporan" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Lapor:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Lapor:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.waktu_lapor" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Penugasan Regu:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Penugasan Regu:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.waktu_dispatch"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Dalam Perjalanan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Dalam Perjalanan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.waktu_perjalanan"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Pengerjaan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Pengerjaan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.waktu_perjalanan"
class-name="flex-1"
/>
</div>
<div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala Sementara:</h3>
<InputText
:readonly="true"
:value="dataSubSelected?.waktu_nyala_sementara"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.waktu_nyala" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Selesai:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Selesai:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.waktu_selesai" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Perjalanan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Perjalanan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.durasi_waktu_response"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi WO:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi WO:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.durasi_wo" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Check Out Petugas:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Check Out Petugas:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.check_out_petugas"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">RPT</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">RPT</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.durasi_menit_response"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">RCT</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">RCT</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.durasi_menit_recovery"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Rating</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Rating</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.rating" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Jml Pelanggan Padam:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Jml Pelanggan Padam:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.jml_pelanggan_padam"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Fasilitas:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Fasilitas:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.fasilitas" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Sub Fasilitas:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Sub Fasilitas:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.sub_fasilitas" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Peralatan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Peralatan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.peralatan" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Dampak Kerusakan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Dampak Kerusakan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.dampak_kerusakan"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Penyebab:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Penyebab:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.penyebab" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Kelompok Penyebab:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Kelompok Penyebab:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.kelompok_penyebab"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Cuaca:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Cuaca:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.cuaca" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.keterangan_pelapor"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.keterangan" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Penyebab Padam:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Penyebab Padam:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="`${dataSubSelected?.penyebab} - ${dataSubSelected?.kelompok_penyebab}`"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tindakan:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Tindakan:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.tindakan" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">PKT Status:</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">APKT Status:</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.status_akhir" class-name="flex-1" />
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText
:readonly="true"
:value="dataSubSelected?.referensi_marking"
class-name="flex-1"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[135px] text-gray-800">BLTH</h3> <h3 class="text-sm font-medium w-[135px] text-gray-800">BLTH</h3>
<InputText :readonly="true" :value="dataSubSelected" class-name="flex-1" /> <InputText :readonly="true" :value="dataSubSelected?.blth" class-name="flex-1" />
</div> </div>
</div> </div>
</div> </div>
@ -813,7 +891,7 @@ import { Workbook } from 'exceljs'
import Filters from '@/components/Form/Filters.vue' import Filters from '@/components/Form/Filters.vue'
import { Type1 } from '@/components/Form/FiltersType' import { Type1 } from '@/components/Form/FiltersType'
import { useQuery } from '@vue/apollo-composable' import { useQuery } from '@vue/apollo-composable'
import { queries } from '@/utils/api/api.graphql' import { queries, requestGraphQl } from '@/utils/api/api.graphql'
import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers'
import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import DetailDialog from '@/components/Dialogs/DetailDialog.vue'
import InputText from '@/components/InputText.vue' import InputText from '@/components/InputText.vue'
@ -838,10 +916,9 @@ const loadingSubData = ref(false)
const closedialogDetail = () => (dialogDetail.value = false) const closedialogDetail = () => (dialogDetail.value = false)
const getDetail = () => { const getDetail = async () => {
loadingSubData.value = true
const dateValue = filters.value.periode.split(' s/d ') const dateValue = filters.value.periode.split(' s/d ')
const ref = dataSelected.value const selected = dataSelected.value
const query = { const query = {
dateFrom: dateValue[0] dateFrom: dateValue[0]
@ -850,29 +927,27 @@ const getDetail = () => {
dateTo: dateValue[1] dateTo: dateValue[1]
? dateValue[1].split('-').reverse().join('-') ? dateValue[1].split('-').reverse().join('-')
: new Date().toISOString().slice(0, 10), : new Date().toISOString().slice(0, 10),
posko: ref.id_posko, idPosko: selected?.id_posko ? selected?.id_posko : 0,
idUid: ref.id_uid, idUid: selected?.id_uid ? selected?.id_uid : 0,
idUp3: ref.id_up3 idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
personilYantek: selected?.personil_yantek ? selected?.personil_yantek : ''
} }
const { onResult, onError, loading, refetch } = useQuery( loadingSubData.value = true
queries.gangguan.rekap.gangguanAllDetail, await requestGraphQl(queries.cico.laporanCheckInCheckOutDetail, query)
query .then((result) => {
) if (result.data.data != undefined) {
dataSub.value = result.data.data.detailCheckInCheckOut
onResult((queryResult) => { } else {
if (queryResult.data != undefined) { dataSub.value = []
dataSub.value = queryResult.data.detailGangguan }
} })
}) .catch((err) => {
console.error(err)
onError((error) => { })
console.log(error) .finally(() => {
}) loadingSubData.value = false
})
watch(loading, (value) => {
loadingSubData.value = value
})
} }
const dataGridRef = ref<DxDataGrid | null>(null) const dataGridRef = ref<DxDataGrid | null>(null)
@ -920,23 +995,27 @@ const onExporting = (e: any) => {
const onDataSelectionChanged = ({ selectedRowsData }: any) => { const onDataSelectionChanged = ({ selectedRowsData }: any) => {
if (selectedRowsData[0] != undefined) { if (selectedRowsData[0] != undefined) {
dataSelected.value = selectedRowsData[0] dataSelected.value = selectedRowsData[0]
showDetail()
} }
showDetail()
} }
const onDataSubSelectionChanged = ({ selectedRowsData }: any) => { const onDataSubSelectionChanged = ({ selectedRowsData }: any) => {
if (selectedRowsData[0] != undefined) { if (selectedRowsData[0] != undefined) {
dataSubSelected.value = selectedRowsData[0] dataSubSelected.value = selectedRowsData[0]
} }
dataSubSelected.value = data
console.log(data)
} }
const filterData = (params: any) => { const resetData = () => {
data.value = []
dataSub.value = []
}
const filterData = async (params: any) => {
resetData()
const { posko, uid, up3 } = params const { posko, uid, up3 } = params
const dateValue = params.periode.split(' s/d ') const dateValue = params.periode.split(' s/d ')
const { onResult, onError, loading, refetch } = useQuery(queries.cico.laporanCheckInCheckOut, { const query = {
dateFrom: dateValue[0] dateFrom: dateValue[0]
? dateValue[0].split('-').reverse().join('-') ? dateValue[0].split('-').reverse().join('-')
: new Date().toISOString().slice(0, 10), : new Date().toISOString().slice(0, 10),
@ -946,20 +1025,23 @@ const filterData = (params: any) => {
idPosko: posko ? posko.id : 0, idPosko: 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) => { loadingData.value = true
if (queryResult.data != undefined) { await requestGraphQl(queries.cico.laporanCheckInCheckOut, query)
data.value = queryResult.data.laporanCheckInCheckOut .then((result) => {
} if (result.data.data != undefined) {
console.log(queryResult.data) data.value = result.data.data.laporanCheckInCheckOut
}) } else {
onError((error) => { data.value = []
console.log(error) }
}) })
watch(loading, (value) => { .catch((err) => {
loadingData.value = value console.error(err)
}) })
.finally(() => {
loadingData.value = false
})
} }
const filters = ref() const filters = ref()

View File

@ -2825,6 +2825,70 @@ export const queries = {
} }
}, },
cico: { cico: {
laporanCheckInCheckOutDetail: gql`
query detailCheckInCheckOut(
$dateFrom: Date!
$dateTo: Date!
$idPosko: Int!
$idUid: Int!
$idUp3: Int!
$personilYantek: String!
) {
detailCheckInCheckOut(
dateFrom: $dateFrom
dateTo: $dateTo
idPosko: $idPosko
idUid: $idUid
idUp3: $idUp3
personilYantek: $personilYantek
) {
id
id_uid
nama_uid
id_up3
nama_up3
id_posko
nama_posko
media
pembuat_laporan
dispatch_by
durasi_waktu_dispatch
user_regu
nama_regu
personil_yantek
shift
check_in_petugas
no_laporan
durasi_wo
waktu_lapor
waktu_dispatch
waktu_perjalanan
waktu_nyala_sementara
waktu_nyala
waktu_selesai
waktu_response
durasi_waktu_response
check_out_petugas
durasi_menit_response
durasi_menit_recovery
rating
jml_pelanggan_padam
fasilitas
sub_fasilitas
peralatan
dampak_kerusakan
kelompok_penyebab
cuaca
keterangan_pelapor
keterangan
penyebab
tindakan
status_akhir
referensi_marking
blth
}
}
`,
laporanCheckInCheckOut: gql` laporanCheckInCheckOut: gql`
query laporanCheckInCheckOut( query laporanCheckInCheckOut(
$dateFrom: Date! $dateFrom: Date!
@ -2840,6 +2904,9 @@ export const queries = {
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
id_uid
id_up3
id_posko
user_regu user_regu
personil_yantek personil_yantek
jumlah_wo_gangguan_individual jumlah_wo_gangguan_individual