Refactor gangguan rekap components
This commit is contained in:
		| @@ -193,6 +193,323 @@ | ||||
|       </template> | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail Keluhan Belum Selesai" | ||||
|     @on-close="closedialogDetail" | ||||
|     :full-width="true" | ||||
|   > | ||||
|     <div class="w-full mb-4 lg:w-[70%] lg:float-left"> | ||||
|       <div class="p-4 bg-white rounded-xl lg:mr-4"> | ||||
|         <DxDataGrid | ||||
|           :allow-column-reordering="true" | ||||
|           class="max-h-[calc(100vh-140px)]" | ||||
|           :data-source="dataSub" | ||||
|           :show-column-lines="true" | ||||
|           :show-row-lines="false" | ||||
|           :show-borders="true" | ||||
|           :row-alternation-enabled="true" | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExporting" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
|           <DxSelection mode="single" /> | ||||
|           <DxPaging :page-size="20" :enabled="true" /> | ||||
|           <DxPager | ||||
|             :visible="true" | ||||
|             :allowed-page-sizes="[20, 50, 100]" | ||||
|             display-mode="full" | ||||
|             :show-page-size-selector="true" | ||||
|             :show-info="true" | ||||
|             :show-navigation-buttons="true" | ||||
|           /> | ||||
|  | ||||
|           <DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> | ||||
|           <DxExport | ||||
|             :enabled="true" | ||||
|             :formats="['pdf', 'xlsx', 'document']" | ||||
|             :allow-export-selected-data="false" | ||||
|           /> | ||||
|  | ||||
|           <DxColumn | ||||
|             css-class="custom-table-column" | ||||
|             :width="50" | ||||
|             alignment="center" | ||||
|             :calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" | ||||
|             data-type="number" | ||||
|             caption="No" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="No Laporan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_uid" | ||||
|             caption="UID/UIW" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_up3" | ||||
|             caption="UP3" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="nama_ulp" | ||||
|             caption="ULP" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="id_pelanggan" | ||||
|             caption="ID Pelanggan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="nama_pelapor" | ||||
|             caption="Nama Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="alamat_pelapor" | ||||
|             caption="Alamat Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="no_telp_pelapor" | ||||
|             caption="No Telp Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="keterangan_pelapor" | ||||
|             caption="Keterangan Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="penyebab" | ||||
|             caption="Penyebab" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="kode_gangguan" | ||||
|             caption="Kode Gangguan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="200" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Jenis Gangguan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_response_time" | ||||
|             caption="Durasi Response Time" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="durasi_recovery_time" | ||||
|             caption="Durasi Recovery Time:" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatTime" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Tgl Lapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|  | ||||
|           <template #formatText="{ data }"> | ||||
|             <p class="text-left cursor-pointer"> | ||||
|               {{ data.text }} | ||||
|             </p> | ||||
|           </template> | ||||
|  | ||||
|           <template #formatNumber="{ data }"> | ||||
|             <p class="text-right cursor-pointer"> | ||||
|               {{ data.text }} | ||||
|             </p> | ||||
|           </template> | ||||
|  | ||||
|           <template #formatTime="{ data }"> | ||||
|             <p> | ||||
|               {{ parseInt(data.text) ? formatWaktu(data.text) : '-' }} | ||||
|             </p> | ||||
|           </template> | ||||
|         </DxDataGrid> | ||||
|       </div> | ||||
|     </div> | ||||
|  | ||||
|     <div class="w-full mb-4 lg:w-[30%] lg:float-right"> | ||||
|       <div class="p-4 space-y-2 bg-white rounded-xl"> | ||||
|         <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> | ||||
|           <InputText :readonly="true" value="" 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">UID/UIW:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.nama_uid" 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">UP3:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.nama_up3" 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">ULP:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.nama_ulp" 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">ID Pelanggan:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.id_pengguna" 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">Nama Pelapor:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.nama_pelapor" 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">Alamat Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.alamat_pelapor" | ||||
|             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">No Telp Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.no_telp_pelapor" | ||||
|             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">Keterangan Pelapor:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.keterangan_pelapor" | ||||
|             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">Penyebab:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.penyebab" 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">Kode Gangguan:</h3> | ||||
|           <InputText :readonly="true" :value="dataSubSelected?.kode_gangguan" 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">Jenis Gangguan:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value="dataSubSelected?.nama_jenis_gangguan" | ||||
|             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">Durasi Response Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_response_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_response_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             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">Durasi Recoery Time:</h3> | ||||
|           <InputText | ||||
|             :readonly="true" | ||||
|             :value=" | ||||
|               parseInt(dataSubSelected?.durasi_recovery_time) | ||||
|                 ? formatWaktu(dataSubSelected?.durasi_recovery_time) | ||||
|                 : '-' | ||||
|             " | ||||
|             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 Lapor:</h3> | ||||
|           <InputText :readonly="true" value="" class-name="flex-1" /> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </DetailDialog> | ||||
|   <BufferDialog v-if="loadingData || loadingSubData" /> | ||||
| </template> | ||||
|  | ||||
| @@ -208,6 +525,7 @@ import { | ||||
|   DxGroupItem, | ||||
|   DxGrouping, | ||||
|   DxLoadPanel, | ||||
|   DxPager, | ||||
|   DxPaging, | ||||
|   DxScrolling, | ||||
|   DxSearchPanel, | ||||
| @@ -225,6 +543,9 @@ import { useQuery } from '@vue/apollo-composable' | ||||
| import { apolloClient, queries, requestGraphQl } from '@/utils/api/api.graphql' | ||||
| import { provideApolloClient } from '@vue/apollo-composable' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
| import DetailDialog from '@/components/Dialogs/DetailDialog.vue' | ||||
| import { formatWaktu } from '@/components/Form/FiltersType/reference' | ||||
| import InputText from '@/components/InputText.vue' | ||||
|  | ||||
| const client = apolloClient() | ||||
| provideApolloClient(client) | ||||
| @@ -278,12 +599,6 @@ const getDetail = async () => { | ||||
|   const selected = dataSelected.value | ||||
|  | ||||
|   const query = { | ||||
|     dateFrom: dateValue[0] | ||||
|       ? dateValue[0].split('-').reverse().join('-') | ||||
|       : new Date().toISOString().slice(0, 10), | ||||
|     dateTo: dateValue[1] | ||||
|       ? dateValue[1].split('-').reverse().join('-') | ||||
|       : new Date().toISOString().slice(0, 10), | ||||
|     idUlp: selected?.id_ulp ? selected?.id_ulp : 0, | ||||
|     idUid: selected?.id_uid ? selected?.id_uid : 0, | ||||
|     idUp3: selected?.id_up3 ? selected?.id_up3 : 0, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user