rekap monalisa gangguan , kpi , material

This commit is contained in:
Eko Haryadi
2024-04-05 22:20:45 +07:00
parent d671b797b2
commit f8da3e92d4
70 changed files with 6315 additions and 1631 deletions

View File

@@ -20,6 +20,7 @@ import { formatWaktu } from '@/components/Form/FiltersType/reference'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportDetailToWord, exportToWord } from './doc/MonalisaGR_DispatchingTimeGangguan_DOC'
const reportName = 'Dispacthing Time (DT) Gangguan'
const fontSize = 5
@@ -465,38 +466,34 @@ const exportToXLSX = (reportMeta: any, e: any) => {
worksheet,
2,
1,
`UNIT INDUK : ${
reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()
`UNIT INDUK : ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
3,
1,
`UNIT PELAKSANA PELAYANAN PELANGGAN : ${
reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()
`UNIT PELAKSANA PELAYANAN PELANGGAN : ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
4,
1,
`UNIT LAYANAN PELANGGAN : ${
reportMeta.ulp
? reportMeta.ulp.name.toUpperCase()
: 'Semua Unit Layanan Pelanggan'.toUpperCase()
`UNIT LAYANAN PELANGGAN : ${reportMeta.ulp
? reportMeta.ulp.name.toUpperCase()
: 'Semua Unit Layanan Pelanggan'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
5,
1,
`REGIONAL : ${
reportMeta.regional ? reportMeta.regional.name.toUpperCase() : 'Semua Regional'.toUpperCase()
`REGIONAL : ${reportMeta.regional ? reportMeta.regional.name.toUpperCase() : 'Semua Regional'.toUpperCase()
}`
)
@@ -560,4 +557,10 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX, exportDetailToPDF, exportDetailToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
const exportDetailToDOCX = (reportMeta: any, rawData: any) => {
exportDetailToWord(reportMeta, rawData, `Laporan Detail ${reportName}`, null)
}
export { exportToPDF, exportDetailToPDF, exportToXLSX, exportDetailToXLSX, exportToDOCX, exportDetailToDOCX }

View File

@@ -19,6 +19,7 @@ import { Workbook } from 'exceljs'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportToWord } from './doc/MonalisaGR_ENSGangguan_DOC'
const reportName = 'Rekapitulasi ENS Gangguan'
const fontSize = 5
@@ -368,5 +369,7 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX , exportToDOCX}

View File

@@ -19,6 +19,7 @@ import { Workbook } from 'exceljs'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber } from '@/utils/numbers'
import { formatWaktu } from '@/components/Form/FiltersType/reference'
import { exportDetailToWord, exportToWord } from './doc/MonalisaGR_GangguanBelumSelesai_DOC'
const reportName = 'Rekapitulasi Gangguan Belum Selesai'
const fontSize = 5
@@ -391,38 +392,34 @@ const exportToXLSX = (reportMeta: any, e: any) => {
worksheet,
2,
1,
`UNIT INDUK : ${
reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()
`UNIT INDUK : ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
3,
1,
`UNIT PELAKSANA PELAYANAN PELANGGAN : ${
reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()
`UNIT PELAKSANA PELAYANAN PELANGGAN : ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
4,
1,
`UNIT LAYANAN PELANGGAN : ${
reportMeta.ulp
? reportMeta.ulp.name.toUpperCase()
: 'Semua Unit Layanan Pelanggan'.toUpperCase()
`UNIT LAYANAN PELANGGAN : ${reportMeta.ulp
? reportMeta.ulp.name.toUpperCase()
: 'Semua Unit Layanan Pelanggan'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
5,
1,
`REGIONAL : ${
reportMeta.regional ? reportMeta.regional.name.toUpperCase() : 'Semua Regional'.toUpperCase()
`REGIONAL : ${reportMeta.regional ? reportMeta.regional.name.toUpperCase() : 'Semua Regional'.toUpperCase()
}`
)
@@ -490,4 +487,10 @@ const exportDetailToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX, exportDetailToPDF, exportDetailToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
const exportDetailToDOCX = (reportMeta: any, rawData: any) => {
exportDetailToWord(reportMeta, rawData, `Laporan Detail ${reportName}`, null)
}
export { exportToPDF, exportDetailToPDF, exportToXLSX, exportDetailToXLSX, exportToDOCX, exportDetailToDOCX }

View File

@@ -18,6 +18,7 @@ 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/MonalisaGR_GangguanPerJenisGangguan_DOC'
const reportName = 'Rekapitulasi Gangguan Per Jenis Gangguan'
const fontSize = 5
@@ -283,4 +284,7 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX , exportToDOCX}

View File

@@ -19,6 +19,7 @@ import { Workbook } from 'exceljs'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportToWord } from './doc/MonalisaGR_JumlahDDRPTRCTGangguan_DOC'
const reportName = 'Jumlah dan Durasi RPT RCT Gangguan'
const fontSize = 5
@@ -322,4 +323,7 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX , exportToDOCX}

View File

@@ -20,6 +20,7 @@ import { formatWaktu } from '@/components/Form/FiltersType/reference'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportToWord } from './doc/MonalisaGR_JumlahKaliGangguan_DOC'
const reportName = 'Jumlah Kali Gangguan'
const fontSize = 5
@@ -308,38 +309,34 @@ const exportToXLSX = (reportMeta: any, e: any) => {
worksheet,
2,
1,
`UNIT INDUK : ${
reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()
`UNIT INDUK : ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
3,
1,
`UNIT PELAKSANA PELAYANAN PELANGGAN : ${
reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()
`UNIT PELAKSANA PELAYANAN PELANGGAN : ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
4,
1,
`UNIT LAYANAN PELANGGAN : ${
reportMeta.ulp
? reportMeta.ulp.name.toUpperCase()
: 'Semua Unit Layanan Pelanggan'.toUpperCase()
`UNIT LAYANAN PELANGGAN : ${reportMeta.ulp
? reportMeta.ulp.name.toUpperCase()
: 'Semua Unit Layanan Pelanggan'.toUpperCase()
}`
)
setHeaderStyle(
worksheet,
5,
1,
`REGIONAL : ${
reportMeta.regional ? reportMeta.regional.name.toUpperCase() : 'Semua Regional'.toUpperCase()
`REGIONAL : ${reportMeta.regional ? reportMeta.regional.name.toUpperCase() : 'Semua Regional'.toUpperCase()
}`
)
@@ -371,4 +368,8 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
console.log(reportMeta, rawData)
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX, exportToDOCX }

View File

@@ -19,6 +19,7 @@ import { Workbook } from 'exceljs'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportToWord } from './doc/MonalisaGR_LaporUlang_DOC'
const reportName = 'Rekapitulasi Lapor Ulang Gangguan'
const fontSize = 5
@@ -369,4 +370,7 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX , exportToDOCX}

View File

@@ -20,6 +20,7 @@ import { formatWaktu } from '@/components/Form/FiltersType/reference'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportToWord } from './doc/MonalisaGR_RecoveryTimeGangguan_DOC'
const reportName = 'Recovery Time (RCT) Gangguan'
const fontSize = 5
@@ -381,4 +382,7 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX , exportToDOCX}

View File

@@ -20,6 +20,7 @@ import { formatWaktu } from '@/components/Form/FiltersType/reference'
import { setHeaderStyle } from '@/report/utils/xlsx'
import { formatNumber, formatPercentage } from '@/utils/numbers'
import { getMonthName } from '@/utils/texts'
import { exportToWord } from './doc/MonalisaGR_ResponseTimeGangguan_DOC'
const reportName = 'Response Time (RPT) Gangguan'
const fontSize = 5
@@ -381,4 +382,7 @@ const exportToXLSX = (reportMeta: any, e: any) => {
e.cancel = true
}
export { exportToPDF, exportToXLSX }
const exportToDOCX = (reportMeta: any, rawData: any) => {
exportToWord(reportMeta, formatData(rawData), `Laporan ${reportName}`, null)
}
export { exportToPDF, exportToXLSX , exportToDOCX}

View File

@@ -0,0 +1,287 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="3">No</th>
<th rowspan="3">Nama Unit</th>
<th colspan="6">Jumlah Dispatching Time Gangguan</th>
</tr>
<tr>
<th colspan="3">MOM</th>
<th colspan="3">YOY</th>
</tr>
<tr>
<th>${getMonthName(reportMeta.lastMonth)} ${reportMeta.lastYearMoM}</th>
<th>${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.lastYear}</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,288 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="3">No</th>
<th rowspan="3">Nama Unit</th>
<th colspan="6">ENS Gangguan</th>
</tr>
<tr>
<th colspan="3">MOM</th>
<th colspan="3">YOY</th>
</tr>
<tr>
<th>${getMonthName(reportMeta.lastMonth)} ${reportMeta.lastYearMoM}</th>
<th>${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.lastYear}</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,266 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="2">No</th>
<th rowspan="2">Nama Unit</th>
<th colspan="3">Tahun</th>
</tr>
<tr>
<th>Gangguan</th>
<th>Informasi</th>
<th>Total</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td> item.no_laporan}</td>`;
cr += `<td>${item.nama_uid}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.id_pelanggan}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += `<td>${item.penyebab}</td>`;
cr += `<td>${item.kode_gangguan}</td>`;
cr += `<td>${item.jenis_gangguan}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : '-'}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : '-'}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>No Laporan</th>
<th>UID/UIW</th>
<th>UP3</th>
<th>ULP</th>
<th>ID Pelanggan</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Penyebab</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Tgl Lapor</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,278 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ID Gangguan</th>
<th>Jenis Gangguan</th>
<th>Jumlah</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,311 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<<tr>
<th rowspan="4">Nama Unit</th>
<th colspan="12">Jumlah dan Durasi RPT & RCT Gangguan</th>
</tr>
<tr>
<th colspan="6">
${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}
</th>
<th colspan="6">
s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}
</th>
</tr>
<tr>
<th>Total RPT</th>
<th>Jumlah Gangguan</th>
<th>RPT Gangguan</th>
<th>Total RCT</th>
<th>Jumlah Gangguan</th>
<th>RCT Gangguan</th>
<th>Total RPT</th>
<th>Jumlah Gangguan</th>
<th>RPT Gangguan</th>
<th>Total RCT</th>
<th>Jumlah Gangguan</th>
<th>RCT Gangguan</th>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c=a/b</td>
<td>d</td>
<td>e</td>
<td>f=d/e</td>
<td>a</td>
<td>b</td>
<td>c=a/b</td>
<td>d</td>
<td>e</td>
<td>f=d/e</td>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,288 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="3">No</th>
<th rowspan="3">Nama Unit</th>
<th colspan="6">Jumlah Kali Gangguan</th>
</tr>
<tr>
<th colspan="3">MOM</th>
<th colspan="3">YOY</th>
</tr>
<tr>
<th>${getMonthName(reportMeta.lastMonth)} ${reportMeta.lastYearMoM}</th>
<th>${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.lastYear}</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,288 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="3">No</th>
<th rowspan="3">Nama Unit</th>
<th colspan="6">Lapor Ulang Gangguan</th>
</tr>
<tr>
<th colspan="3">MOM</th>
<th colspan="3">YOY</th>
</tr>
<tr>
<th>${getMonthName(reportMeta.lastMonth)} ${reportMeta.lastYearMoM}</th>
<th>${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.lastYear}</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,288 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="3">No</th>
<th rowspan="3">Nama Unit</th>
<th colspan="6">Jumlah RCT Kali Gangguan</th>
</tr>
<tr>
<th colspan="3">MOM</th>
<th colspan="3">YOY</th>
</tr>
<tr>
<th>${getMonthName(reportMeta.lastMonth)} ${reportMeta.lastYearMoM}</th>
<th>${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.lastYear}</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }

View File

@@ -0,0 +1,288 @@
import { formatWaktu } from "@/components/Form/FiltersType/reference";
import { getMonthName } from "@/utils/texts";
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
const company = "PT. PLN (Persero)";
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
for (let index = 0; index < rawData.length; index++) {
const element = rawData[index];
var column = `<tr>`;
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 += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
: column += `<td ${styleTotal}>${content}</td>`;
}
column += `</tr>`;
tbody += column;
}
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.ulp ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th rowspan="3">No</th>
<th rowspan="3">Nama Unit</th>
<th colspan="6">Jumlah RCT Kali Gangguan</th>
</tr>
<tr>
<th colspan="3">MOM</th>
<th colspan="3">YOY</th>
</tr>
<tr>
<th>${getMonthName(reportMeta.lastMonth)} ${reportMeta.lastYearMoM}</th>
<th>${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.lastYear}</th>
<th>s.d ${getMonthName(reportMeta.currentMonth)} ${reportMeta.currentYear}</th>
<th>%</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
<style type="text/css" media="print">
@page Section1 {
size:841.95pt 21.0cm;
mso-page-orientation:landscape;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;
}
@page{
size: landscape;
font-size: 5px;
}
div.Section1 {
page:Section1;
}
table.main {
border-collapse: collapse;
width: 100%;
text-transform: uppercase;
font-size: 8px;
}
table.main thead tr {
background-color: #c0c0c0;
}
</style>
</head><body>
<div class="Section1">
`;
var tbody = ``;
var cr = ``;
rawData.map((item: any, i: any) => {
cr += '<tr>';
cr += `<td>${i + 1}</td>`;
cr += `<td>${item.nama_ulp}</td>`;
cr += `<td>${item.no_laporan}</td>`;
cr += `<td>${item.waktu_lapor}</td>`;
cr += `<td>${item.waktu_response}</td>`;
cr += `<td>${item.waktu_recovery}</td>`;
cr += `<td>${item.durasi_response_time ? formatWaktu(item.durasi_response_time) : ''}</td>`;
cr += `<td>${item.durasi_recovery_time ? formatWaktu(item.durasi_recovery_time) : ''}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.idpel_nometer}</td>`;
cr += `<td>${item.nama_pelapor}</td>`;
cr += `<td>${item.alamat_pelapor}</td>`;
cr += `<td>${item.no_telp_pelapor}</td>`;
cr += `<td>${item.keterangan_pelapor}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += `<td>${item.status_akhir}</td>`;
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '<td></td>';
cr += '</tr>';
});
tbody += cr;
var body = `
<table border=0 style="border:none">
<tr>
<td colspan="3"> ${company.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Induk Distribusi/Wilayah </td>
<td>:</td>
<td> ${reportMeta.uid
? reportMeta.uid.name.toUpperCase()
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
<tr>
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.up3
? reportMeta.up3.name.toUpperCase()
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
</tr>
<tr>
<td> Unit Layanan Pelanggan</td>
<td>:</td>
<td> ${reportMeta.posko ? reportMeta.ulp.name.toUpperCase() : 'Semua Unit Layanan Pelanggan'.toUpperCase()}</td>
</tr>
</table>
<center><h6>${filename.toUpperCase()}</h6></center>
<table class="main">
<thead>
<tr>
<th>No</th>
<th>ULP</th>
<th>No Laporan</th>
<th>Tgl/ Jam Lapor</th>
<th>Tgl/ Jam Datang</th>
<th>Tgl/ Jam Nyala</th>
<th>Durasi Response Time</th>
<th>Durasi Recovery Time</th>
<th>Durasi Penugasan Regu</th>
<th>Durasi Perjalanan Regu</th>
<th>Dispatch Oleh</th>
<th>IDPEL/NO METER</th>
<th>Nama Pelapor</th>
<th>Alamat Pelapor</th>
<th>No Telp Pelapor</th>
<th>Keterangan Pelapor</th>
<th>Sumber Lapor</th>
<th>Diselesaikan Oleh</th>
<th>Status</th>
<th>Referensi Marking</th>
<th>Kode Gangguan</th>
<th>Jenis Gangguan</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></div></body></html>`;
var html = preHtml + body + postHtml;
var url =
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
filename = filename ? filename + ".doc" : "document.doc";
var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.click();
document.body.removeChild(downloadLink);
}
export { exportToWord, exportDetailToWord }