feat: create export pdf in rekapitulasi gangguan all

This commit is contained in:
kur0nek-o
2024-03-21 14:55:48 +07:00
parent 67563b64bf
commit ddd40b6e80
3 changed files with 375 additions and 113 deletions

View File

@ -1027,6 +1027,7 @@ import InputText from '@/components/InputText.vue'
import { apolloClient } from '@/utils/api/api.graphql'
import { provideApolloClient } from '@vue/apollo-composable'
import autoTable from 'jspdf-autotable'
import { exportToPDF } from '@/report/Gangguan/Rekap/RGangguan_ALL'
const client = apolloClient()
provideApolloClient(client)
@ -1042,6 +1043,12 @@ const dialogDetail = ref(false)
const closedialogDetail = () => (dialogDetail.value = false)
const loadingData = ref(false)
const loadingSubData = ref(false)
const reportMeta = ref({
uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' },
up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' },
posko: { id: 0, name: 'Semua Posko' },
periode: ''
})
const filterData = (params: any) => {
loadingData.value = true
@ -1131,119 +1138,7 @@ const showDetail = () => {
const onExporting = (e: any) => {
if (e.format === 'pdf') {
const doc = new jsPDF({
orientation: 'landscape'
})
autoTable(doc, {
head: [
// [
// 'No',
// 'No Laporan',
// 'Nama Pelapor',
// 'Alamat Pelapor',
// 'No Telp Pelapor',
// 'Keterangan Pelapor',
// 'Status',
// 'Tgl Lapor',
// 'Tgl Response',
// 'Tgl Recovery',
// 'Durasi Response Time',
// 'Durasi Recovery Time',
// 'Sumber Lapor',
// 'Tgl Media',
// 'Keterangan Media'
// ],
// ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15']
[
{
content: 'Nama Unit',
rowSpan: 2
},
{
content: 'Total',
rowSpan: 2
},
{
content: 'Selesai',
rowSpan: 2
},
{
content: '%',
rowSpan: 2
},
{
content: 'In Proses',
rowSpan: 2
},
{
content: '%',
rowSpan: 2
},
{
content: 'Dispatching Time',
colSpan: 5
},
{
content: 'Response Time',
colSpan: 5
},
{
content: 'Recovery Time',
colSpan: 5
}
],
['Rata-Rata', 'Max', 'Min', '>SLA', '<SLA']
],
// body: data.value.map((item, i) => [
// { content: ++i, styles: { halign: 'right' } },
// item.no_laporan,
// item.nama_pelapor,
// item.alamat_pelapor,
// item.no_telp_pelapor,
// item.keterangan_pelapor,
// item.status_akhir,
// item.waktu_lapor,
// item.waktu_response,
// item.waktu_recovery,
// parseInt(item.durasi_response_time) ? formatWaktu(item.durasi_response_time) : '-',
// parseInt(item.durasi_recovery_time) ? formatWaktu(item.durasi_recovery_time) : '-',
// item.nama_posko,
// item.waktu_media,
// item.keterangan_media
// ]),
styles: {
fontSize: 3,
cellPadding: 1,
lineColor: [0, 0, 0],
lineWidth: 0.1,
cellWidth: 'auto'
},
rowPageBreak: 'auto',
headStyles: {
fillColor: [192, 192, 192],
textColor: [0, 0, 0],
fontStyle: 'bold',
cellWidth: 'wrap',
halign: 'center',
valign: 'middle'
},
bodyStyles: {
textColor: [0, 0, 0]
},
didParseCell: function (data) {
if (data.row.section === 'head') {
data.cell.text = data.cell.text.map(function (word: any) {
return word.toUpperCase()
})
}
},
startY: 23
})
doc.save('Laporan Rekapitulasi Gangguan All.pdf', { returnPromise: true }).then(() => {
console.log('pdf berhasil disimpan')
})
exportToPDF(reportMeta, data)
} else {
const workbook = new Workbook()
const worksheet = workbook.addWorksheet('Employees')
@ -1276,6 +1171,7 @@ const onDataSubSelectionChanged = ({ selectedRowsData }: any) => {
}
const filters = ref()
onMounted(() => {
if (import.meta.env.DEV) {
data.value = dummyData.gangguan.rekap.rekapitulasiAllGangguan