diff --git a/src/components/Pages/Cico/LaporanCICO.vue b/src/components/Pages/Cico/LaporanCICO.vue
index b3f3b01..a996c30 100755
--- a/src/components/Pages/Cico/LaporanCICO.vue
+++ b/src/components/Pages/Cico/LaporanCICO.vue
@@ -888,7 +888,9 @@ import {
exportToPDF,
exportToXLSX,
exportDetailToPDF,
- exportDetailToXLSX
+ exportDetailToXLSX,
+ exportToDOCX,
+ exportDetailToDOCX
} from '@/report/Cico/LaporanCICO'
const client = apolloClient()
@@ -967,6 +969,7 @@ const onExporting = (e: any) => {
} else if (e.format === 'xlsx') {
exportToXLSX(reportMeta.value, e)
} else {
+ exportToDOCX(reportMeta.value, data.value)
}
}
@@ -976,6 +979,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/Cico/LaporanCICO.ts b/src/report/Cico/LaporanCICO.ts
index 319615d..2c76cee 100644
--- a/src/report/Cico/LaporanCICO.ts
+++ b/src/report/Cico/LaporanCICO.ts
@@ -17,9 +17,10 @@ import { jsPDF } from 'jspdf'
import autoTable from 'jspdf-autotable'
import { Workbook } from 'exceljs'
import { setHeaderStyle } from '@/report/utils/xlsx'
-import { formatNumber, formatPercentage } from '@/utils/numbers'
+import { formatNumber } from '@/utils/numbers'
+import { exportToWord, exportDetailToWord } from './doc/LaporanCICO'
-const reportName = 'Laporan Check In Check Out (CICO)'
+const reportName = 'Check In Check Out (CICO)'
const fontSize = 5
const detailFontSize = 3
@@ -537,4 +538,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/Cico/doc/LaporanCICO.ts b/src/report/Cico/doc/LaporanCICO.ts
new file mode 100644
index 0000000..3a87969
--- /dev/null
+++ b/src/report/Cico/doc/LaporanCICO.ts
@@ -0,0 +1,334 @@
+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 || content} | `)
+ : (column += `${content} | `)
+ }
+
+ column += `
`
+ tbody += column
+ }
+
+ let preHtml = `
+
+
+
+ ${reportName}
+
+
+
+ `
+
+ const body = `
+
+
+ PT. PLN(Persero)
+
+
+
+
+
+
+
+
+ ${reportName.toUpperCase()} |
+
+
+ ${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`} |
+
+
+
+
+
+
+
+
+
+ User Regu |
+ Personil Yantek |
+ Jumlah WO Gangguan Individual |
+ Rata-rata Durasi WO Gangguan |
+ Rata-rata RPT WO Gangguan |
+ Rata-rata RCT WO Gangguan |
+ Jumlah WO Penugasan Khusus |
+ Rata-rata WO Penugasan Khusus |
+
+
+ ${tbody}
+
+
+
+
+ `
+
+ 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}`} |
+
+
+
+
+
+
+
+
+
+ No |
+ UID/UIW |
+ UP3 |
+ Posko |
+ Sumber Lapor |
+ Create By |
+ Dispacth By |
+ User Regu |
+ Nama Regu |
+ Nama Petugas |
+ Shift |
+ Check In Petugas |
+ No Laporan |
+ Tgl Lapor |
+ Tgl Penugasan Baru |
+ Tgl Dalam Perjalanan |
+ Tgl Pengerjaan |
+ Tgl Nyala Sementara |
+ Tgl Nyala |
+ Tgl Selesai |
+ Durasi Perjalanan |
+ Durasi WO |
+ Check Out Petugas |
+ RPT |
+ RCT |
+ Rating |
+ Jml Pelanggan Padam |
+ Fasilitas |
+ Sub Fasilitas |
+ Peralatan |
+ Dampak Kerusakan |
+ Penyebab |
+ Kelompok Penyebab |
+ Cuaca |
+ Keterangan Pelapor |
+ Keterangan |
+ Penyebab Padam |
+ Tindakan |
+ APKT Status |
+ Referensi Marking |
+ BLTH |
+
+
+
+ ${rawData
+ .map(
+ (item: any, i: any) => `
+
+ ${i + 1} |
+ ${item.nama_uid} |
+ ${item.nama_up3} |
+ ${item.nama_posko} |
+ ${item.media} |
+ ${item.pembuat_laporan} |
+ ${item.dispacth_by} |
+ ${item.waktu_dispacth} |
+ ${item.user_regu} |
+ ${item.nama_regu} |
+ ${item.personil_yantek} |
+ ${item.shift} |
+ ${item.check_in_petugas} |
+ ${item.no_laporan} |
+ ${item.waktu_lapor} |
+ ${item.waktu_dispacth} |
+ ${item.waktu_perjalanan} |
+ ${item.waktu_response} |
+ ${item.waktu_nyala_sementara} |
+ ${item.waktu_nyala} |
+ ${item.waktu_selesai} |
+ ${item.durasi_waktu_response} |
+ ${item.durasi_wo} |
+ ${item.check_out_petugas} |
+ ${item.durasi_menit_response} |
+ ${item.durasi_menit_recovery} |
+ ${item.rating} |
+ ${item.jml_pelanggan_padam} |
+ ${item.fasilitas} |
+ ${item.sub_fasilitas} |
+ ${item.peralatan} |
+ ${item.dampak_kerusakan} |
+ ${item.penyebab} |
+ ${item.kelompok_penyebab} |
+ ${item.cuaca} |
+ ${item.keterangan_pelapor} |
+ ${item.keterangan} |
+ ${item.penyebab_padam} |
+ ${item.tindakan} |
+ ${item.status_akhir} |
+ ${item.referensi_marking} |
+ ${item.blth} |
+
+ `
+ )
+ .join('')}
+
+
+
+
+
+ `
+
+ 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)
+}