From 4e438c4c237b059d7080ea12a879e6a50ce3ca5e Mon Sep 17 00:00:00 2001 From: kur0nek-o Date: Fri, 5 Apr 2024 17:02:31 +0700 Subject: [PATCH] create export doc rekapitulasi keluhan --- src/assets/css/style.css | 8 + .../Pages/Keluhan/Rekap/RKeluhan_ALL.vue | 6 +- .../Keluhan/Rekap/RKeluhan_BerdasarMedia.vue | 6 +- .../Rekap/RKeluhan_PerFungsiBidang.vue | 6 +- .../Rekap/RKeluhan_PerJenisKeluhan.vue | 6 +- .../Rekap/RKeluhan_PerKelompokKeluhan.vue | 6 +- .../Keluhan/Rekap/RKeluhan_PerTanggal.vue | 6 +- .../Pages/Keluhan/Rekap/RKeluhan_PerUnit.vue | 6 +- .../Gangguan/Rekap/RGangguan_JenisGangguan.ts | 273 ++++++++-------- src/report/Keluhan/Rekap/RKeluhan_ALL.ts | 21 +- .../Keluhan/Rekap/RKeluhan_BerdasarMedia.ts | 25 +- .../Keluhan/Rekap/RKeluhan_PerFungsiBidang.ts | 24 +- .../Keluhan/Rekap/RKeluhan_PerJenisKeluhan.ts | 24 +- .../Rekap/RKeluhan_PerKelompokKeluhan.ts | 24 +- .../Keluhan/Rekap/RKeluhan_PerTanggal.ts | 24 +- src/report/Keluhan/Rekap/RKeluhan_PerUnit.ts | 24 +- src/report/Keluhan/Rekap/doc/RKeluhan_ALL.ts | 298 +++++++++++++++++ .../Rekap/doc/RKeluhan_BerdasarMedia.ts | 288 ++++++++++++++++ .../Rekap/doc/RKeluhan_PerFungsiBidang.ts | 303 +++++++++++++++++ .../Rekap/doc/RKeluhan_PerJenisKeluhan.ts | 307 +++++++++++++++++ .../Rekap/doc/RKeluhan_PerKelompokKeluhan.ts | 309 ++++++++++++++++++ .../Keluhan/Rekap/doc/RKeluhan_PerTanggal.ts | 309 ++++++++++++++++++ .../Keluhan/Rekap/doc/RKeluhan_PerUnit.ts | 300 +++++++++++++++++ 23 files changed, 2442 insertions(+), 161 deletions(-) create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_ALL.ts create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_BerdasarMedia.ts create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_PerFungsiBidang.ts create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_PerJenisKeluhan.ts create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_PerKelompokKeluhan.ts create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_PerTanggal.ts create mode 100644 src/report/Keluhan/Rekap/doc/RKeluhan_PerUnit.ts diff --git a/src/assets/css/style.css b/src/assets/css/style.css index bd90444..79a78a4 100755 --- a/src/assets/css/style.css +++ b/src/assets/css/style.css @@ -1073,6 +1073,10 @@ body { visibility: hidden; } +.collapse { + visibility: collapse; +} + .static { position: static; } @@ -1895,6 +1899,10 @@ body { table-layout: fixed; } +.border-collapse { + border-collapse: collapse; +} + .origin-top-left { transform-origin: top left; } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_ALL.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_ALL.vue index 3f32559..fb7b7fe 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_ALL.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_ALL.vue @@ -758,7 +758,9 @@ import { exportToPDF, exportDetailToPDF, exportToXLSX, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_ALL' import BufferDialog from '@/components/Dialogs/BufferDialog.vue' @@ -995,6 +997,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -1004,6 +1007,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_BerdasarMedia.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_BerdasarMedia.vue index f85c5c4..20d7014 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_BerdasarMedia.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_BerdasarMedia.vue @@ -478,7 +478,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_BerdasarMedia' const client = apolloClient() @@ -615,6 +617,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -624,6 +627,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerFungsiBidang.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerFungsiBidang.vue index 42a16a9..7d6f44d 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerFungsiBidang.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerFungsiBidang.vue @@ -799,7 +799,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_PerFungsiBidang' const client = apolloClient() @@ -951,6 +953,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -960,6 +963,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.vue index 4cdd0b6..9a92bcf 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.vue @@ -943,7 +943,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_PerJenisKeluhan' const client = apolloClient() @@ -1081,6 +1083,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -1090,6 +1093,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.vue index 24644c1..62e2827 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.vue @@ -805,7 +805,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan' const client = apolloClient() @@ -952,6 +954,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -961,6 +964,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerTanggal.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerTanggal.vue index 0becdc4..57abaa2 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerTanggal.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerTanggal.vue @@ -808,7 +808,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_PerTanggal' const client = apolloClient() @@ -950,6 +952,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -959,6 +962,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerUnit.vue b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerUnit.vue index 4f7ae3b..5ae97ab 100755 --- a/src/components/Pages/Keluhan/Rekap/RKeluhan_PerUnit.vue +++ b/src/components/Pages/Keluhan/Rekap/RKeluhan_PerUnit.vue @@ -938,7 +938,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Keluhan/Rekap/RKeluhan_PerUnit' const client = apolloClient() @@ -1078,6 +1080,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -1087,6 +1090,7 @@ const onExportingDetail = (e: any) => { } else if (e.format === 'xlsx') { exportDetailToXLSX(reportMeta.value, e) } else { + exportDetailToDOCX(reportMeta.value, dataSub.value) } } diff --git a/src/report/Gangguan/Rekap/RGangguan_JenisGangguan.ts b/src/report/Gangguan/Rekap/RGangguan_JenisGangguan.ts index 93e6cad..593a93f 100644 --- a/src/report/Gangguan/Rekap/RGangguan_JenisGangguan.ts +++ b/src/report/Gangguan/Rekap/RGangguan_JenisGangguan.ts @@ -40,6 +40,7 @@ const groupingData = (data: any) => { const formatData = (rawData: any) => { const data = groupingData(rawData) + console.log(data) const formattedData: any = [] const grandTotal: any = { total_laporan: 0, @@ -59,148 +60,150 @@ const formatData = (rawData: any) => { total_recovery_time_kurang_sla: 0 } - for (const sub_kelompok of data) { - const total: any = { - total_laporan: 0, - total_laporan_sudah_selesai: 0, - total_laporan_belum_selesai: 0, - total_response_time_total: 0, - total_response_time_rata_rata: [], - total_response_time_max: [], - total_response_time_min: [], - total_response_time_lebih_sla: 0, - total_response_time_kurang_sla: 0, - total_recovery_time_total: 0, - total_recovery_time_rata_rata: [], - total_recovery_time_max: [], - total_recovery_time_min: [], - total_recovery_time_lebih_sla: 0, - total_recovery_time_kurang_sla: 0 - } - - formattedData.push([ - { - content: `${sub_kelompok} (${data[sub_kelompok][0].nama_sub_kelompok})`, - colSpan: 20, - styles: { fontStyle: 'bold' } + for (const sub_kelompok of Object.keys(data)) { + if (Object.prototype.hasOwnProperty.call(data, sub_kelompok)) { + const total: any = { + total_laporan: 0, + total_laporan_sudah_selesai: 0, + total_laporan_belum_selesai: 0, + total_response_time_total: 0, + total_response_time_rata_rata: [], + total_response_time_max: [], + total_response_time_min: [], + total_response_time_lebih_sla: 0, + total_response_time_kurang_sla: 0, + total_recovery_time_total: 0, + total_recovery_time_rata_rata: [], + total_recovery_time_max: [], + total_recovery_time_min: [], + total_recovery_time_lebih_sla: 0, + total_recovery_time_kurang_sla: 0 } - ]) - for (let i = 0; i < data[sub_kelompok].length; i++) { formattedData.push([ - { content: i + 1, styles: { halign: 'right' } }, - data[sub_kelompok][i].kode, - data[sub_kelompok][i].jenisGangguan, - formatNumber(data[sub_kelompok][i].laporan.total), - formatNumber(data[sub_kelompok][i].laporan.sudahSelesai.jml), - formatPercentage( - !data[sub_kelompok][i].laporan.sudahSelesai.jml || !data[sub_kelompok][i].laporan.total - ? '0%' - : (data[sub_kelompok][i].laporan.sudahSelesai.jml / - data[sub_kelompok][i].laporan.total) * - 100 - ), - formatNumber(data[sub_kelompok][i].laporan.belumSelesai.jml), - formatPercentage( - !data[sub_kelompok][i].laporan.belumSelesai.jml || !data[sub_kelompok][i].laporan.total - ? '0%' - : (data[sub_kelompok][i].laporan.belumSelesai.jml / - data[sub_kelompok][i].laporan.total) * - 100 - ), - formatNumber(data[sub_kelompok][i].responseTime.menit.total), - formatNumber(data[sub_kelompok][i].responseTime.menit.rataRata), - formatWaktu(data[sub_kelompok][i].responseTime.menit.max), - formatWaktu(data[sub_kelompok][i].responseTime.menit.min), - formatNumber(data[sub_kelompok][i].responseTime.laporan.lebihSla), - formatNumber(data[sub_kelompok][i].responseTime.laporan.kurangSla), - formatNumber(data[sub_kelompok][i].recoveryTime.menit.total), - formatNumber(data[sub_kelompok][i].recoveryTime.menit.rataRata), - formatWaktu(data[sub_kelompok][i].recoveryTime.menit.max), - formatWaktu(data[sub_kelompok][i].recoveryTime.menit.min), - formatNumber(data[sub_kelompok][i].recoveryTime.laporan.lebihSla), - formatNumber(data[sub_kelompok][i].recoveryTime.laporan.kurangSla) + { + content: `${sub_kelompok} (${data[sub_kelompok][0].nama_sub_kelompok})`, + colSpan: 20, + styles: { fontStyle: 'bold' } + } ]) - total.total_laporan += data[sub_kelompok][i].laporan.total - total.total_laporan_sudah_selesai += data[sub_kelompok][i].laporan.sudahSelesai.jml - total.total_laporan_belum_selesai += data[sub_kelompok][i].laporan.belumSelesai.jml - total.total_response_time_total += data[sub_kelompok][i].responseTime.menit.total - total.total_response_time_rata_rata.push(data[sub_kelompok][i].responseTime.menit.rataRata) - total.total_response_time_max.push(data[sub_kelompok][i].responseTime.menit.max) - total.total_response_time_min.push(data[sub_kelompok][i].responseTime.menit.min) - total.total_response_time_lebih_sla += data[sub_kelompok][i].responseTime.laporan.lebihSla - total.total_response_time_kurang_sla += data[sub_kelompok][i].responseTime.laporan.kurangSla - total.total_recovery_time_total += data[sub_kelompok][i].recoveryTime.menit.total - total.total_recovery_time_rata_rata.push(data[sub_kelompok][i].recoveryTime.menit.rataRata) - total.total_recovery_time_max.push(data[sub_kelompok][i].recoveryTime.menit.max) - total.total_recovery_time_min.push(data[sub_kelompok][i].recoveryTime.menit.min) - total.total_recovery_time_lebih_sla += data[sub_kelompok][i].recoveryTime.laporan.lebihSla - total.total_recovery_time_kurang_sla += data[sub_kelompok][i].recoveryTime.laporan.kurangSla + for (let i = 0; i < data[sub_kelompok].length; i++) { + formattedData.push([ + { content: i + 1, styles: { halign: 'right' } }, + data[sub_kelompok][i].kode, + data[sub_kelompok][i].jenisGangguan, + formatNumber(data[sub_kelompok][i].laporan.total), + formatNumber(data[sub_kelompok][i].laporan.sudahSelesai.jml), + formatPercentage( + !data[sub_kelompok][i].laporan.sudahSelesai.jml || !data[sub_kelompok][i].laporan.total + ? '0%' + : (data[sub_kelompok][i].laporan.sudahSelesai.jml / + data[sub_kelompok][i].laporan.total) * + 100 + ), + formatNumber(data[sub_kelompok][i].laporan.belumSelesai.jml), + formatPercentage( + !data[sub_kelompok][i].laporan.belumSelesai.jml || !data[sub_kelompok][i].laporan.total + ? '0%' + : (data[sub_kelompok][i].laporan.belumSelesai.jml / + data[sub_kelompok][i].laporan.total) * + 100 + ), + formatNumber(data[sub_kelompok][i].responseTime.menit.total), + formatNumber(data[sub_kelompok][i].responseTime.menit.rataRata), + formatWaktu(data[sub_kelompok][i].responseTime.menit.max), + formatWaktu(data[sub_kelompok][i].responseTime.menit.min), + formatNumber(data[sub_kelompok][i].responseTime.laporan.lebihSla), + formatNumber(data[sub_kelompok][i].responseTime.laporan.kurangSla), + formatNumber(data[sub_kelompok][i].recoveryTime.menit.total), + formatNumber(data[sub_kelompok][i].recoveryTime.menit.rataRata), + formatWaktu(data[sub_kelompok][i].recoveryTime.menit.max), + formatWaktu(data[sub_kelompok][i].recoveryTime.menit.min), + formatNumber(data[sub_kelompok][i].recoveryTime.laporan.lebihSla), + formatNumber(data[sub_kelompok][i].recoveryTime.laporan.kurangSla) + ]) - grandTotal.total_laporan_sudah_selesai += data[sub_kelompok][i].laporan.sudahSelesai.jml - grandTotal.total_laporan += data[sub_kelompok][i].laporan.total - grandTotal.total_laporan_belum_selesai += data[sub_kelompok][i].laporan.belumSelesai.jml - grandTotal.total_response_time_total += data[sub_kelompok][i].responseTime.menit.total - grandTotal.total_response_time_rata_rata.push( - data[sub_kelompok][i].responseTime.menit.rataRata - ) - grandTotal.total_response_time_max.push(data[sub_kelompok][i].responseTime.menit.max) - grandTotal.total_response_time_min.push(data[sub_kelompok][i].responseTime.menit.min) - grandTotal.total_response_time_lebih_sla += - data[sub_kelompok][i].responseTime.laporan.lebihSla - grandTotal.total_response_time_kurang_sla += - data[sub_kelompok][i].responseTime.laporan.kurangSla - grandTotal.total_recovery_time_total += data[sub_kelompok][i].recoveryTime.menit.total - grandTotal.total_recovery_time_rata_rata.push( - data[sub_kelompok][i].recoveryTime.menit.rataRata - ) - grandTotal.total_recovery_time_max.push(data[sub_kelompok][i].recoveryTime.menit.max) - grandTotal.total_recovery_time_min.push(data[sub_kelompok][i].recoveryTime.menit.min) - grandTotal.total_recovery_time_lebih_sla += - data[sub_kelompok][i].recoveryTime.laporan.lebihSla - grandTotal.total_recovery_time_kurang_sla += - data[sub_kelompok][i].recoveryTime.laporan.kurangSla + total.total_laporan += data[sub_kelompok][i].laporan.total + total.total_laporan_sudah_selesai += data[sub_kelompok][i].laporan.sudahSelesai.jml + total.total_laporan_belum_selesai += data[sub_kelompok][i].laporan.belumSelesai.jml + total.total_response_time_total += data[sub_kelompok][i].responseTime.menit.total + total.total_response_time_rata_rata.push(data[sub_kelompok][i].responseTime.menit.rataRata) + total.total_response_time_max.push(data[sub_kelompok][i].responseTime.menit.max) + total.total_response_time_min.push(data[sub_kelompok][i].responseTime.menit.min) + total.total_response_time_lebih_sla += data[sub_kelompok][i].responseTime.laporan.lebihSla + total.total_response_time_kurang_sla += data[sub_kelompok][i].responseTime.laporan.kurangSla + total.total_recovery_time_total += data[sub_kelompok][i].recoveryTime.menit.total + total.total_recovery_time_rata_rata.push(data[sub_kelompok][i].recoveryTime.menit.rataRata) + total.total_recovery_time_max.push(data[sub_kelompok][i].recoveryTime.menit.max) + total.total_recovery_time_min.push(data[sub_kelompok][i].recoveryTime.menit.min) + total.total_recovery_time_lebih_sla += data[sub_kelompok][i].recoveryTime.laporan.lebihSla + total.total_recovery_time_kurang_sla += data[sub_kelompok][i].recoveryTime.laporan.kurangSla + + grandTotal.total_laporan_sudah_selesai += data[sub_kelompok][i].laporan.sudahSelesai.jml + grandTotal.total_laporan += data[sub_kelompok][i].laporan.total + grandTotal.total_laporan_belum_selesai += data[sub_kelompok][i].laporan.belumSelesai.jml + grandTotal.total_response_time_total += data[sub_kelompok][i].responseTime.menit.total + grandTotal.total_response_time_rata_rata.push( + data[sub_kelompok][i].responseTime.menit.rataRata + ) + grandTotal.total_response_time_max.push(data[sub_kelompok][i].responseTime.menit.max) + grandTotal.total_response_time_min.push(data[sub_kelompok][i].responseTime.menit.min) + grandTotal.total_response_time_lebih_sla += + data[sub_kelompok][i].responseTime.laporan.lebihSla + grandTotal.total_response_time_kurang_sla += + data[sub_kelompok][i].responseTime.laporan.kurangSla + grandTotal.total_recovery_time_total += data[sub_kelompok][i].recoveryTime.menit.total + grandTotal.total_recovery_time_rata_rata.push( + data[sub_kelompok][i].recoveryTime.menit.rataRata + ) + grandTotal.total_recovery_time_max.push(data[sub_kelompok][i].recoveryTime.menit.max) + grandTotal.total_recovery_time_min.push(data[sub_kelompok][i].recoveryTime.menit.min) + grandTotal.total_recovery_time_lebih_sla += + data[sub_kelompok][i].recoveryTime.laporan.lebihSla + grandTotal.total_recovery_time_kurang_sla += + data[sub_kelompok][i].recoveryTime.laporan.kurangSla + } + + formattedData.push([ + { content: 'TOTAL', colSpan: 3, styles: { fontStyle: 'bold' } }, + formatNumber(total.total_laporan), + formatNumber(total.total_laporan_sudah_selesai), + formatPercentage( + !total.total_laporan_sudah_selesai || !total.total_laporan + ? '0%' + : (total.total_laporan_sudah_selesai / total.total_laporan) * 100 + ), + formatNumber(total.total_laporan_belum_selesai), + formatPercentage( + !total.total_laporan_belum_selesai || !total.total_laporan + ? '0%' + : (total.total_laporan_belum_selesai / total.total_laporan) * 100 + ), + formatNumber(total.total_response_time_total), + formatNumber( + total.total_response_time_rata_rata.length + ? total.total_response_time_rata_rata.reduce((a: any, b: any) => a + b) / + total.total_response_time_rata_rata.length + : 0 + ), + formatWaktu(Math.max(...total.total_response_time_max)), + formatWaktu(Math.min(...total.total_response_time_min)), + formatNumber(total.total_response_time_lebih_sla), + formatNumber(total.total_response_time_kurang_sla), + formatNumber(total.total_recovery_time_total), + formatNumber( + total.total_recovery_time_rata_rata.length + ? total.total_recovery_time_rata_rata.reduce((a: any, b: any) => a + b) / + total.total_recovery_time_rata_rata.length + : 0 + ), + formatWaktu(Math.max(...total.total_recovery_time_max)), + formatWaktu(Math.min(...total.total_recovery_time_min)), + formatNumber(total.total_recovery_time_lebih_sla), + formatNumber(total.total_recovery_time_kurang_sla) + ]) } - - formattedData.push([ - { content: 'TOTAL', colSpan: 3, styles: { fontStyle: 'bold' } }, - formatNumber(total.total_laporan), - formatNumber(total.total_laporan_sudah_selesai), - formatPercentage( - !total.total_laporan_sudah_selesai || !total.total_laporan - ? '0%' - : (total.total_laporan_sudah_selesai / total.total_laporan) * 100 - ), - formatNumber(total.total_laporan_belum_selesai), - formatPercentage( - !total.total_laporan_belum_selesai || !total.total_laporan - ? '0%' - : (total.total_laporan_belum_selesai / total.total_laporan) * 100 - ), - formatNumber(total.total_response_time_total), - formatNumber( - total.total_response_time_rata_rata.length - ? total.total_response_time_rata_rata.reduce((a: any, b: any) => a + b) / - total.total_response_time_rata_rata.length - : 0 - ), - formatWaktu(Math.max(...total.total_response_time_max)), - formatWaktu(Math.min(...total.total_response_time_min)), - formatNumber(total.total_response_time_lebih_sla), - formatNumber(total.total_response_time_kurang_sla), - formatNumber(total.total_recovery_time_total), - formatNumber( - total.total_recovery_time_rata_rata.length - ? total.total_recovery_time_rata_rata.reduce((a: any, b: any) => a + b) / - total.total_recovery_time_rata_rata.length - : 0 - ), - formatWaktu(Math.max(...total.total_recovery_time_max)), - formatWaktu(Math.min(...total.total_recovery_time_min)), - formatNumber(total.total_recovery_time_lebih_sla), - formatNumber(total.total_recovery_time_kurang_sla) - ]) } formattedData.push([ diff --git a/src/report/Keluhan/Rekap/RKeluhan_ALL.ts b/src/report/Keluhan/Rekap/RKeluhan_ALL.ts index 5975f41..09085b0 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_ALL.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_ALL.ts @@ -19,6 +19,7 @@ import { Workbook } from 'exceljs' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_ALL' const reportName = 'Rekapitulasi Keluhan All' const fontSize = 5 @@ -240,6 +241,7 @@ const formatMetaData = (reportMeta: any) => { const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => { const data = formatData(rawData) + console.log(data) const meta = formatMetaData(reportMeta) const doc = new jsPDF({ orientation: 'landscape' @@ -646,4 +648,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX, exportDetailToPDF, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/RKeluhan_BerdasarMedia.ts b/src/report/Keluhan/Rekap/RKeluhan_BerdasarMedia.ts index 2654886..1f02fcb 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_BerdasarMedia.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_BerdasarMedia.ts @@ -18,6 +18,8 @@ import autoTable from 'jspdf-autotable' import { Workbook } from 'exceljs' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_BerdasarMedia' +import { formatWaktu } from '@/components/Form/FiltersType/reference' const reportName = 'Rekapitulasi Keluhan Berdasarkan Media' const fontSize = 5 @@ -348,8 +350,8 @@ const exportDetailToPDF = (reportMeta: any, rawData: any) => { item.waktu_lapor, item.waktu_response, item.waktu_recovery, - item.durasi_response_time, - item.durasi_recovery_time, + item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-', + item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-', item.status_akhir, item.idpel_nometer, item.nama_pelapor, @@ -526,4 +528,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX, exportDetailToPDF, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/RKeluhan_PerFungsiBidang.ts b/src/report/Keluhan/Rekap/RKeluhan_PerFungsiBidang.ts index b82669d..13f8432 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_PerFungsiBidang.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_PerFungsiBidang.ts @@ -19,6 +19,7 @@ import { Workbook } from 'exceljs' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_PerFungsiBidang' const reportName = 'Rekapitulasi Keluhan Per Fungsi Bidang' const fontSize = 5 @@ -576,8 +577,8 @@ const exportDetailToPDF = (reportMeta: any, rawData: any) => { item.waktu_lapor, '', '', - item.durasi_response_time, - item.durasi_recovery_time, + item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-', + item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-', '', item.idpel_nometer, item.nama_pelapor, @@ -754,4 +755,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportDetailToPDF, exportToXLSX, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData, reportMeta.groupBy), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportDetailToPDF, + exportToXLSX, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.ts b/src/report/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.ts index 000d401..b07e6b2 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_PerJenisKeluhan.ts @@ -19,6 +19,7 @@ import { Workbook } from 'exceljs' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_PerJenisKeluhan' const reportName = 'Rekapitulasi Keluhan Per Jenis Keluhan' const fontSize = 5 @@ -549,8 +550,8 @@ const exportDetailToPDF = (reportMeta: any, rawData: any) => { item.waktu_lapor, item.waktu_response, item.waktu_recovery, - item.durasi_response_time, - item.durasi_recovery_time, + item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-', + item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-', item.status_akhir, item.idpel_nometer, item.nama_pelapor, @@ -727,4 +728,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX, exportDetailToPDF, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.ts b/src/report/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.ts index 169c4e2..deff4f9 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_PerKelompokKeluhan.ts @@ -19,6 +19,7 @@ import { Workbook } from 'exceljs' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_PerKelompokKeluhan' const reportName = 'Rekapitulasi Keluhan Per Kelompok Keluhan' const fontSize = 5 @@ -576,8 +577,8 @@ const exportDetailToPDF = (reportMeta: any, rawData: any) => { item.waktu_lapor, item.waktu_response, item.waktu_recovery, - item.durasi_response_time, - item.durasi_recovery_time, + item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-', + item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-', item.status_akhir, item.idpel_nometer, item.nama_pelapor, @@ -754,4 +755,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportDetailToPDF, exportToXLSX, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData, reportMeta.groupBy), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportDetailToPDF, + exportToXLSX, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/RKeluhan_PerTanggal.ts b/src/report/Keluhan/Rekap/RKeluhan_PerTanggal.ts index 6149313..eca8657 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_PerTanggal.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_PerTanggal.ts @@ -19,6 +19,7 @@ import { Workbook } from 'exceljs' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_PerTanggal' const reportName = 'Rekapitulasi Keluhan Per Tanggal' const fontSize = 5 @@ -576,8 +577,8 @@ const exportDetailToPDF = (reportMeta: any, rawData: any) => { item.waktu_lapor, item.waktu_response, item.waktu_recovery, - item.durasi_response_time, - item.durasi_recovery_time, + item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-', + item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-', item.status_akhir, item.idpel_nometer, item.nama_pelapor, @@ -754,4 +755,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportDetailToPDF, exportToXLSX, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData, reportMeta.groupBy), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportDetailToPDF, + exportToXLSX, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/RKeluhan_PerUnit.ts b/src/report/Keluhan/Rekap/RKeluhan_PerUnit.ts index d7ce089..3654bb7 100644 --- a/src/report/Keluhan/Rekap/RKeluhan_PerUnit.ts +++ b/src/report/Keluhan/Rekap/RKeluhan_PerUnit.ts @@ -19,6 +19,7 @@ import { Workbook } from 'exceljs' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord, exportDetailToWord } from './doc/RKeluhan_PerUnit' const reportName = 'Rekapitulasi Keluhan Per Unit' const fontSize = 5 @@ -526,8 +527,8 @@ const exportDetailToPDF = (reportMeta: any, rawData: any) => { item.waktu_lapor, item.waktu_response, item.waktu_recovery, - item.durasi_response_time, - item.durasi_recovery_time, + item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-', + item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-', item.status_akhir, item.idpel_nometer, item.nama_pelapor, @@ -693,4 +694,21 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX, exportDetailToPDF, exportDetailToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +const exportDetailToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportDetailToWord(meta, rawData, reportName) +} + +export { + exportToPDF, + exportToXLSX, + exportDetailToPDF, + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_ALL.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_ALL.ts new file mode 100644 index 0000000..bc286d4 --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_ALL.ts @@ -0,0 +1,298 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content.content === 'TOTAL') { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
UNIT LAYANAN PELANGGAN
:
${ + rawMeta.ulp + ? rawMeta.ulp.name.toUpperCase() + : 'Semua Unit Layanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
NoNama UnitResponse TimePenyelesaian
TotalSelesai%InProses%Rata-RataMaxMin>SLA + Rata-RataMaxMin>SLA +
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData + .map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + ) + .join('')} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.waktu_response}${item.waktu_recovery}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.status_akhir}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.nama_ulp}${item.uraian}${item.respon_pelanggan}
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_BerdasarMedia.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_BerdasarMedia.ts new file mode 100644 index 0000000..0fd992d --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_BerdasarMedia.ts @@ -0,0 +1,288 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let columnTanggal = '' + for (let i = 1; i <= 31; i++) { + columnTanggal += `${i}` + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
UNIT LAYANAN PELANGGAN
:
${ + rawMeta.ulp + ? rawMeta.ulp.name.toUpperCase() + : 'Semua Unit Layanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + ${columnTanggal} + + + ${tbody} +
NoNama MediaTanggal
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData + .map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + ) + .join('')} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.waktu_response}${item.waktu_recovery}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.status_akhir}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.nama_ulp}${item.uraian}${item.respon_pelanggan}
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_PerFungsiBidang.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_PerFungsiBidang.ts new file mode 100644 index 0000000..4fa1fdb --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_PerFungsiBidang.ts @@ -0,0 +1,303 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
UNIT LAYANAN PELANGGAN
:
${ + rawMeta.ulp + ? rawMeta.ulp.name.toUpperCase() + : 'Semua Unit Layanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
NoFungsi BidangLaporanResponse TimePenyelesaian
Total%Total%HariLaporanHariLaporan
Rata-RataMaxMin>Sla + TotalRata-RataMaxMin>Sla +
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData.map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + )} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_PerJenisKeluhan.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_PerJenisKeluhan.ts new file mode 100644 index 0000000..0cb232f --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_PerJenisKeluhan.ts @@ -0,0 +1,307 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
UNIT LAYANAN PELANGGAN
:
${ + rawMeta.ulp + ? rawMeta.ulp.name.toUpperCase() + : 'Semua Unit Layanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
NoJenis KeluhanLaporanResponse TimePenyelesaian
TotalSudah SelesaiBelum SelesaiHariLaporanHariLaporan
Jml%Jml%TotalRata-RataMaxMin>Sla + TotalRata-RataMaxMin>Sla +
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData.map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + )} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.waktu_response}${item.waktu_recovery}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.status_akhir}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.nama_ulp}${item.uraian}${item.respon_pelanggan}
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_PerKelompokKeluhan.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_PerKelompokKeluhan.ts new file mode 100644 index 0000000..9c4e1ba --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_PerKelompokKeluhan.ts @@ -0,0 +1,309 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
UNIT LAYANAN PELANGGAN
:
${ + rawMeta.ulp + ? rawMeta.ulp.name.toUpperCase() + : 'Semua Unit Layanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
NoKelompok KeluhanLaporanResponse TimePenyelesaian
TotalSudah SelesaiBelum SelesaiHariLaporanHariLaporan
Jml%Jml%TotalRata-RataMaxMin>Sla + TotalRata-RataMaxMin>Sla +
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData + .map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + ) + .join('')} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.waktu_response}${item.waktu_recovery}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.status_akhir}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.nama_ulp}${item.uraian}${item.respon_pelanggan}
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_PerTanggal.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_PerTanggal.ts new file mode 100644 index 0000000..df5d5ce --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_PerTanggal.ts @@ -0,0 +1,309 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
UNIT LAYANAN PELANGGAN
:
${ + rawMeta.ulp + ? rawMeta.ulp.name.toUpperCase() + : 'Semua Unit Layanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
NoTanggal LaporLaporanResponse TimePenyelesaian
TotalSudah SelesaiBelum SelesaiHariLaporanHariLaporan
Jml%Jml%TotalRata-RataMaxMin>Sla + TotalRata-RataMaxMin>Sla +
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData + .map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + ) + .join('')} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.waktu_response}${item.waktu_recovery}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.status_akhir}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.nama_ulp}${item.uraian}${item.respon_pelanggan}
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} diff --git a/src/report/Keluhan/Rekap/doc/RKeluhan_PerUnit.ts b/src/report/Keluhan/Rekap/doc/RKeluhan_PerUnit.ts new file mode 100644 index 0000000..05291c5 --- /dev/null +++ b/src/report/Keluhan/Rekap/doc/RKeluhan_PerUnit.ts @@ -0,0 +1,300 @@ +import { formatWaktu } from '@/components/Form/FiltersType/reference' + +export const exportToWord = ( + rawMeta: any, + formattedMeta: any, + rawData: any, + reportName: String +) => { + const filename = 'Laporan ' + reportName + '.doc' + + let tbody = '' + + for (let index = 0; index < rawData.length; index++) { + const element = rawData[index] + + let column = `` + let styleTotal = '' + + for (let i = 0; i < element.length; i++) { + const content = element[i] + const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : '' + + if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) { + styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"' + } + + i === 0 + ? (column += `${content.content}`) + : (column += `${content}`) + } + + column += `` + tbody += column + } + + let preHtml = ` + + + + ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+ + + + + + + + + + + + +
UNIT INDUK
:
${ + rawMeta.uid + ? rawMeta.uid.name.toUpperCase() + : 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase() + }
UNIT PELAKSANA PELAYANAN PELANGGAN
:
${ + rawMeta.up3 + ? rawMeta.up3.name.toUpperCase() + : 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase() + }
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
NoUnitLaporanResponse TimePenyelesaian
TotalSudah SelesaiBelum SelesaiHariLaporanHariLaporan
Jml%Jml%TotalRata-RataMaxMin>Sla<SlaTotalRata-RataMaxMin>Sla<Sla
+
+
+

${formattedMeta.dayTo}, ${formattedMeta.dateToFormat}

+
+

(.........................................)

+
+
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +} + +export const exportDetailToWord = (formattedMeta: any, rawData: any, reportName: String) => { + const filename = 'Laporan Detail ' + reportName + '.doc' + + let preHtml = ` + + + + Daftar Detail ${reportName} + + + + ` + + const body = ` +
+
+
PT. PLN(Persero)
+
+ + + + + + + +
${'DAFTAR DETAIL ' + reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ${rawData + .map( + (item: any, i: any) => ` + + + + + + + + + + + + + + + + + + + ` + ) + .join('')} + +
NoNo LaporanTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporRayonUraianResponse Pelanggan
${i + 1}${item.no_laporan}${item.waktu_lapor}${item.waktu_response}${item.waktu_recovery}${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}${item.status_akhir}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.nama_ulp}${item.uraian}${item.respon_pelanggan}
+
+ +
+ ` + + const postHtml = '' + const html = preHtml + body + postHtml + const url = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(html) + const downloadLink = document.createElement('a') + + document.body.appendChild(downloadLink) + downloadLink.href = url + downloadLink.download = filename + downloadLink.click() + document.body.removeChild(downloadLink) +}