diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue index fb0bdf9..06b1fa8 100755 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPP.vue @@ -855,7 +855,11 @@ import { import { computed, ref } from 'vue' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import { formatWaktu } from '@/components/Form/FiltersType/reference' -import { exportToPDF, exportToXLSX } from '@/report/Anomali/Gangguan/Anomali_LAPPGP_LPP' +import { + exportToPDF, + exportToXLSX, + exportToDOCX +} from '@/report/Anomali/Gangguan/Anomali_LAPPGP_LPP' import { queries, requestGraphQl } from '@/utils/api/api.graphql' import DetailDialog from '@/components/Dialogs/DetailDialog.vue' import InputText from '@/components/InputText.vue' @@ -969,6 +973,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue index ffe17e9..28c2cb6 100755 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue @@ -490,7 +490,11 @@ import { import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import { formatWaktu } from '@/components/Form/FiltersType/reference' import { queries, requestGraphQl } from '@/utils/api/api.graphql' -import { exportToPDF, exportToXLSX } from '@/report/Anomali/Gangguan/Anomali_LAPPGP_LPT' +import { + exportToPDF, + exportToXLSX, + exportToDOCX +} from '@/report/Anomali/Gangguan/Anomali_LAPPGP_LPT' const position = { of: '#data' } const showIndicator = ref(true) @@ -601,6 +605,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue index 06aca6f..34fa400 100755 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPP.vue @@ -126,7 +126,11 @@ import { import { computed, ref } from 'vue' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import { formatWaktu } from '@/components/Form/FiltersType/reference' -import { exportToPDF, exportToXLSX } from '@/report/Anomali/Gangguan/Anomali_LAPPGU_LPP' +import { + exportToPDF, + exportToXLSX, + exportToDOCX +} from '@/report/Anomali/Gangguan/Anomali_LAPPGU_LPP' const props = defineProps({ data: Array as () => any[], @@ -157,6 +161,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue index f1f92e3..5249223 100755 --- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue +++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue @@ -1071,7 +1071,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Anomali/Gangguan/Anomali_LAPPGU_LPT' import BufferDialog from '@/components/Dialogs/BufferDialog.vue' @@ -1193,6 +1195,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -1202,6 +1205,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/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue index 84d84e2..7fce0a3 100755 --- a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue +++ b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPP.vue @@ -127,7 +127,11 @@ import { import { computed, ref } from 'vue' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' import { formatWaktu } from '@/components/Form/FiltersType/reference' -import { exportToPDF, exportToXLSX } from '@/report/Anomali/Keluhan/Anomali_LAPPKU_LPP' +import { + exportToPDF, + exportToXLSX, + exportToDOCX +} from '@/report/Anomali/Keluhan/Anomali_LAPPKU_LPP' const position = { of: '#data' } const showIndicator = ref(true) @@ -147,10 +151,11 @@ const reportMeta = ref(computed(() => props.filters)) const onExporting = (e: any) => { if (e.format === 'pdf') { - exportToPDF(reportMeta.value, data.value, true) + exportToPDF(reportMeta.value, data.value) } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } const dataGridRef = ref(null) diff --git a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue index f2281cc..0e92e37 100755 --- a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue +++ b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue @@ -758,7 +758,9 @@ import { exportToPDF, exportToXLSX, exportDetailToPDF, - exportDetailToXLSX + exportDetailToXLSX, + exportToDOCX, + exportDetailToDOCX } from '@/report/Anomali/Keluhan/Anomali_LAPPKU_LPT' import BufferDialog from '@/components/Dialogs/BufferDialog.vue' @@ -865,6 +867,7 @@ const onExporting = (e: any) => { } else if (e.format === 'xlsx') { exportToXLSX(reportMeta.value, e) } else { + exportToDOCX(reportMeta.value, data.value) } } @@ -892,6 +895,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/Anomali/Gangguan/Anomali_LAPPGP_LPP.ts b/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPP.ts index c8295a6..549e3eb 100644 --- a/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPP.ts +++ b/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPP.ts @@ -18,8 +18,9 @@ import autoTable from 'jspdf-autotable' import { Workbook } from 'exceljs' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord } from './doc/Anomali_LAPPGP_LPP' -const reportName = 'Laporan Anomali Penanganan Pengaduan Gangguan Petugas' +const reportName = 'Anomali Penanganan Pengaduan Gangguan Petugas' const fontSize = 5 const formatData = (rawData: any) => { @@ -322,4 +323,9 @@ const exportToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +export { exportToPDF, exportToXLSX, exportToDOCX } diff --git a/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPT.ts b/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPT.ts index 54cb42a..fb3fb5b 100644 --- a/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPT.ts +++ b/src/report/Anomali/Gangguan/Anomali_LAPPGP_LPT.ts @@ -16,11 +16,11 @@ import { saveAs } from 'file-saver' import { jsPDF } from 'jspdf' import autoTable from 'jspdf-autotable' 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 } from './doc/Anomali_LAPPGP_LPT' -const reportName = 'Laporan Anomali Penanganan Pengaduan Gangguan Petugas' +const reportName = 'Anomali Penanganan Pengaduan Gangguan Petugas' const fontSize = 5 const formatData = (rawData: any) => { @@ -417,4 +417,9 @@ const exportToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +export { exportToPDF, exportToXLSX, exportToDOCX } diff --git a/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPP.ts b/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPP.ts index 7396722..613d4d8 100644 --- a/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPP.ts +++ b/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPP.ts @@ -18,8 +18,9 @@ import autoTable from 'jspdf-autotable' import { Workbook } from 'exceljs' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord } from './doc/Anomali_LAPPGU_LPP' -const reportName = 'Laporan Anomali Penanganan Pengaduan Gangguan Unit' +const reportName = 'Anomali Penanganan Pengaduan Gangguan Unit' const fontSize = 5 const formatData = (rawData: any) => { @@ -289,4 +290,9 @@ const exportToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +export { exportToPDF, exportToXLSX, exportToDOCX } diff --git a/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPT.ts b/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPT.ts index 8f9c030..1477727 100644 --- a/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPT.ts +++ b/src/report/Anomali/Gangguan/Anomali_LAPPGU_LPT.ts @@ -1,17 +1,4 @@ import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' -import { - Document, - AlignmentType, - Packer, - Paragraph, - Table, - TableCell, - TableRow, - VerticalAlign, - TextRun, - WidthType, - PageOrientation -} from 'docx' import { saveAs } from 'file-saver' import { jsPDF } from 'jspdf' import autoTable from 'jspdf-autotable' @@ -19,8 +6,9 @@ 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/Anomali_LAPPGU_LPT' -const reportName = 'Laporan Anomali Penanganan Pengaduan Gangguan Unit' +const reportName = 'Anomali Penanganan Pengaduan Gangguan Unit' const fontSize = 5 const detailFontSize = 3 @@ -651,4 +639,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/Anomali/Gangguan/doc/Anomali_LAPPGP_LPP.ts b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGP_LPP.ts new file mode 100644 index 0000000..a1c4a20 --- /dev/null +++ b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGP_LPP.ts @@ -0,0 +1,176 @@ +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)
+ + + + + + + + + + + + + + + + + + + + + + +
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() + }
JENIS LAPORAN
:
${rawMeta.jenisLaporan.name.toUpperCase()}
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
Nama UnitNama PetugasTotal WOTotal Pengaduan Yang Diselesaikan Secara Anomali% Pengaduan Diselesaikan Secara Anomali
(PLN Mobile, CC123, DLL)PLN MobileCC 123TotalPLN MobileCC 123Total
abcd=b+ce=b/af=c/ag=e+f
+
+
+

${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/Anomali/Gangguan/doc/Anomali_LAPPGP_LPT.ts b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGP_LPT.ts new file mode 100644 index 0000000..8355d61 --- /dev/null +++ b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGP_LPT.ts @@ -0,0 +1,188 @@ +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)
+ + + + + + + + + + + + + + + + + + + + + + +
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() + }
JENIS LAPORAN
:
${rawMeta.jenisLaporan.name.toUpperCase()}
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
Nama UnitTotal PetugasTotal Petugas Yang Pengaduan Diselesaikan Secara Anomali% Petugas Yang Pengaduan Diselesaikan Secara Anomali
aPLN MobileCC 123TotalPLN MobileCC 123Total
bcd=b+ce=b/af=c/ag=e+f
MarkingNon MarkingMarkingNon MarkingMarkingNon MarkingMarkingNon MarkingMarkingNon MarkingMarkingNon Marking
+
+
+

${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/Anomali/Gangguan/doc/Anomali_LAPPGU_LPP.ts b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGU_LPP.ts new file mode 100644 index 0000000..79e6c63 --- /dev/null +++ b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGU_LPP.ts @@ -0,0 +1,162 @@ +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)
+ + + + + + + + + + + + + + + + + + + + + + +
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() + }
JENIS LAPORAN
:
${rawMeta.jenisLaporan.name.toUpperCase()}
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + ${tbody} +
Nama UnitTotal WO PLN MobileTotal Pengaduan Yang Diselesaikan Secara Anomali% Pengaduan Yang Diselesaikan Secara Anomali
abc=b/a
+
+
+

${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/Anomali/Gangguan/doc/Anomali_LAPPGU_LPT.ts b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGU_LPT.ts new file mode 100644 index 0000000..849f62b --- /dev/null +++ b/src/report/Anomali/Gangguan/doc/Anomali_LAPPGU_LPT.ts @@ -0,0 +1,352 @@ +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)
+ + + + + + + + + + + + + + + + + + + + + + +
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() + }
JENIS LAPORAN
:
${rawMeta.jenisLaporan.name.toUpperCase()}
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
Nama UnitTotal WOTotal Pengaduan Yang Diselesaikan Secara Anomali% Pengaduan Yang Diselesaikan Secara Anomali
CC 123PLN MobileLoketLainnyaTotalPLN MobileCC 123TotalPLN MobileCC 123Total
abcde=a+b+c+dfgh=f+gi=f/ej=g/ek=i+j
MarkingNon MarkingMarkingNon MarkingMarkingNon MarkingMarkingNon MarkingMarkingNon MarkingMarkingNon Marking
+
+
+

${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('')} + +
NoUIW/DUP3RayonNo LaporanNo Laporan ReferensiTgl/Jam LaporTgl/Jam DatangTgl/Jam NyalaDurasi Response TimeDurasi Recovery TimeDurasi Penugasan ReguDurasi Perjalanan ReguJarak ClosingDispacth OlehIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporSumber LaporDiselesaikan OlehStatusStatus IndukReferensi Marking IndukKode GangguanJenis GangguanPenyebabTindakan
${i + 1}${item.nama_uid}${item.nama_up3}${item.nama_ulp}${item.no_laporan}${item.no_laporan_referensi}${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.durasi_dispatch_time ? formatWaktu(item.durasi_dispatch_time) : '-'}${item.durasi_perjalanan ? formatWaktu(item.durasi_perjalanan) : '-'}${item.distance}${item.dispatch_by}${item.idpel_nometer}${item.nama_pelapor}${item.alamat_pelapor}${item.no_telp_pelapor}${item.keterangan_pelapor}${item.media}${item.diselesaikan_oleh}${item.status_akhir}${item.status_induk}${item.referensi_marking_induk}${item.kode_gangguan}${item.jenis_gangguan}${item.penyebab}${item.tindakan}
+
+
+

${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/Anomali/Keluhan/Anomali_LAPPKU_LPP.ts b/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPP.ts index b856a17..7731d97 100644 --- a/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPP.ts +++ b/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPP.ts @@ -18,8 +18,9 @@ import autoTable from 'jspdf-autotable' import { Workbook } from 'exceljs' import { setHeaderStyle } from '@/report/utils/xlsx' import { formatNumber, formatPercentage } from '@/utils/numbers' +import { exportToWord } from './doc/Anomali_LAPPKU_LPP' -const reportName = 'Laporan Anomali Penanganan Pengaduan Keluhan Unit' +const reportName = 'Anomali Penanganan Pengaduan Keluhan Unit' const fontSize = 5 const formatData = (rawData: any) => { @@ -41,7 +42,6 @@ const formatData = (rawData: any) => { 'Semua Unit', formatNumber(total.wo_pln_mobile), formatNumber(total.total_anomali), - formatPercentage(persen_anomali), formatPercentage(!persen_anomali || !isFinite(persen_anomali) ? 0 : persen_anomali) ]) @@ -287,4 +287,9 @@ const exportToXLSX = (reportMeta: any, e: any) => { e.cancel = true } -export { exportToPDF, exportToXLSX } +const exportToDOCX = (reportMeta: any, rawData: any) => { + const meta = formatMetaData(reportMeta) + exportToWord(reportMeta, meta, formatData(rawData), reportName) +} + +export { exportToPDF, exportToXLSX, exportToDOCX } diff --git a/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPT.ts b/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPT.ts index 6f1cf60..7bc81bc 100644 --- a/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPT.ts +++ b/src/report/Anomali/Keluhan/Anomali_LAPPKU_LPT.ts @@ -19,8 +19,9 @@ 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/Anomali_LAPPKU_LPT' -const reportName = 'Laporan Anomali Penanganan Pengaduan Keluhan Unit' +const reportName = 'Anomali Penanganan Pengaduan Keluhan Unit' const fontSize = 5 const detailFontSize = 5 @@ -510,4 +511,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/Anomali/Keluhan/doc/Anomali_LAPPKU_LPP.ts b/src/report/Anomali/Keluhan/doc/Anomali_LAPPKU_LPP.ts new file mode 100644 index 0000000..79e6c63 --- /dev/null +++ b/src/report/Anomali/Keluhan/doc/Anomali_LAPPKU_LPP.ts @@ -0,0 +1,162 @@ +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)
+ + + + + + + + + + + + + + + + + + + + + + +
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() + }
JENIS LAPORAN
:
${rawMeta.jenisLaporan.name.toUpperCase()}
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + ${tbody} +
Nama UnitTotal WO PLN MobileTotal Pengaduan Yang Diselesaikan Secara Anomali% Pengaduan Yang Diselesaikan Secara Anomali
abc=b/a
+
+
+

${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/Anomali/Keluhan/doc/Anomali_LAPPKU_LPT.ts b/src/report/Anomali/Keluhan/doc/Anomali_LAPPKU_LPT.ts new file mode 100644 index 0000000..06101f0 --- /dev/null +++ b/src/report/Anomali/Keluhan/doc/Anomali_LAPPKU_LPT.ts @@ -0,0 +1,318 @@ +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)
+ + + + + + + + + + + + + + + + + + + + + + +
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() + }
JENIS LAPORAN
:
${rawMeta.jenisLaporan.name.toUpperCase()}
+ +
+
+ + + + + + + + +
${reportName.toUpperCase()}
${`PERIODE TANGGAL : ${formattedMeta.dateFromFormat} SD TGL ${formattedMeta.dateToFormat}`}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${tbody} +
Nama UnitTotal WOTotal Pengaduan Yang Diselesaikan Secara Anomali% Pengaduan Yang Diselesaikan Secara Anomali
CC 123PLN MobileLoketLainnyaTotalPLN MobileCC 123TotalPLN MobileCC 123Total
abcde=a+b+c+dfgh=f+gi=f/ej=g/ek=i+j
+
+
+

${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('')} + +
NoUIW/DUP3RayonNo LaporanNo Laporan ReferensiTgl LaporDalam Proses BidangSelesai Bidang UnitDurasi Response TimeDurasi Recovery TimeStatusIDPEL/NO METERNama PelaporAlamat PelaporNo Telp PelaporKeterangan PelaporUraianResponse Pelanggan
${i + 1}${item.nama_uid}${item.nama_up3}${item.nama_ulp}${item.no_laporan}${item.referensi_marking}${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.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) +} diff --git a/src/report/Cico/doc/LaporanCICO.ts b/src/report/Cico/doc/LaporanCICO.ts index 3a87969..06d7541 100644 --- a/src/report/Cico/doc/LaporanCICO.ts +++ b/src/report/Cico/doc/LaporanCICO.ts @@ -1,5 +1,3 @@ -import { formatWaktu } from '@/components/Form/FiltersType/reference' - export const exportToWord = ( rawMeta: any, formattedMeta: any,