From 4aeb2958f7065c125ae518e00fc9822e77e51905 Mon Sep 17 00:00:00 2001 From: kur0nek-o Date: Fri, 5 Apr 2024 20:17:31 +0700 Subject: [PATCH] create export xlsx in transaksi --- src/assets/css/style.css | 18 +-- src/components/Pages/Transaksi/Transaksi.vue | 139 ++++++++++++++----- 2 files changed, 113 insertions(+), 44 deletions(-) diff --git a/src/assets/css/style.css b/src/assets/css/style.css index 4dbaeb1..a2f9a05 100755 --- a/src/assets/css/style.css +++ b/src/assets/css/style.css @@ -2475,10 +2475,6 @@ body { border-bottom-width: 0px; } -.border-b-2 { - border-bottom-width: 2px; -} - .border-l-4 { border-left-width: 4px; } @@ -2495,8 +2491,8 @@ body { border-top-width: 0px; } -.border-b-4 { - border-bottom-width: 4px; +.border-b-2 { + border-bottom-width: 2px; } .border-solid { @@ -2586,11 +2582,6 @@ body { border-color: rgb(255 51 51 / var(--tw-border-opacity)); } -.border-secondary-500 { - --tw-border-opacity: 1; - border-color: rgb(0 162 185 / var(--tw-border-opacity)); -} - .border-transparent { border-color: transparent; } @@ -2605,6 +2596,11 @@ body { border-color: rgb(255 255 51 / var(--tw-border-opacity)); } +.border-secondary-500 { + --tw-border-opacity: 1; + border-color: rgb(0 162 185 / var(--tw-border-opacity)); +} + .bg-black { --tw-bg-opacity: 1; background-color: rgb(0 0 0 / var(--tw-bg-opacity)); diff --git a/src/components/Pages/Transaksi/Transaksi.vue b/src/components/Pages/Transaksi/Transaksi.vue index c792385..fe0b775 100755 --- a/src/components/Pages/Transaksi/Transaksi.vue +++ b/src/components/Pages/Transaksi/Transaksi.vue @@ -29,6 +29,7 @@ +
- + () const dialogDetail = ref(false) const loadingData = ref(false) const tab = ref('gangguan') +const reportMeta = ref({ + uid: { id: 0, name: 'Pilih Unit' }, + up3: { id: 0, name: 'Pilih Area' }, + ulp: { id: 0, name: 'Pilih Rayon' }, + status: { id: 0, name: 'Pilih Status' }, + keyword: '', + searchBy: { id: 1, title: 'No Lapor' }, + sla: { + id: 1, + name: '45 Menit', + time: 45 + }, + periode: '' +}) + +const formatMetaData = (reportMeta: any) => { + const periode = reportMeta.periode ? reportMeta.periode.split(' s/d ') : '' + + let dateFromFormat = '' + let dateToFormat = '' + let dayTo = '' + + if (periode != '') { + const dateFrom = new Date(periode[0].split('-').reverse().join('-')) + const dateTo = new Date(periode[1].split('-').reverse().join('-')) + + dateFromFormat = `${dateFrom.getDate()}-${dateFrom.toLocaleString('id-ID', { + month: 'long' + })}-${dateFrom.getFullYear()}` + + dateToFormat = `${dateTo.getDate()}-${dateTo.toLocaleString('id-ID', { + month: 'long' + })}-${dateTo.getFullYear()}` + + dayTo = dateTo.toLocaleString('id-ID', { weekday: 'long' }) + } + + return { dateFromFormat, dateToFormat, dayTo } +} const onExporting = (e: any) => { - if (e.format === 'pdf') { - const doc = new jsPDF() + const meta = formatMetaData(reportMeta.value) + const workbook = new Workbook() + const worksheet = workbook.addWorksheet('Transaksi APKT') - exportToPdf({ - jsPDFDocument: doc, - component: e.component, - indent: 5 - }).then(() => { - doc.save(`.pdf`) + setHeaderStyle(worksheet, 1, 1, 'PT. PLN(Persero)') + setHeaderStyle( + worksheet, + 2, + 1, + `UNIT PLN : ${reportMeta.value.uid.id ? reportMeta.value.uid.name.toUpperCase() + ',' : ''} ${reportMeta.value.up3.id ? reportMeta.value.up3.name.toUpperCase() + ',' : ''} ${reportMeta.value.ulp.id ? reportMeta.value.ulp.name.toUpperCase() + ',' : ''}` + ) + setHeaderStyle( + worksheet, + 3, + 1, + `STATUS : ${reportMeta.value.status ? reportMeta.value.status.name.toUpperCase() : ''}` + ) + setHeaderStyle( + worksheet, + 4, + 1, + `SLA : ${reportMeta.value.sla ? reportMeta.value.sla.name.toUpperCase() : ''}` + ) + setHeaderStyle(worksheet, 5, 1, `PENCARIAN : ${reportMeta.value.keyword.toUpperCase()}`) + + setHeaderStyle(worksheet, 7, 1, 'Transaksi APKT'.toUpperCase(), true) + setHeaderStyle( + worksheet, + 8, + 1, + `PERIODE TANGGAL : ${meta.dateFromFormat} SD TGL ${meta.dateToFormat}`, + true + ) + + worksheet.mergeCells('A1:M1') + worksheet.mergeCells('A2:M2') + worksheet.mergeCells('A3:M3') + worksheet.mergeCells('A4:M4') + worksheet.mergeCells('A5:M5') + worksheet.mergeCells('A7:M7') + worksheet.mergeCells('A8:M8') + + exportToExcel({ + component: e.component, + worksheet, + autoFilterEnabled: true, + topLeftCell: { row: 10, column: 1 }, + loadPanel: { + enabled: false + } + }).then(() => { + workbook.xlsx.writeBuffer().then((buffer: any) => { + saveAs( + new Blob([buffer], { type: 'application/octet-stream' }), + `Laporan Transaksi APKT.xlsx` + ) }) - } else { - const workbook = new Workbook() - const worksheet = workbook.addWorksheet('Employees') + }) - exportToExcel({ - component: e.component, - worksheet, - autoFilterEnabled: true - }).then(() => { - workbook.xlsx.writeBuffer().then((buffer: any) => { - saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.xlsx') - }) - }) - - e.cancel = true - } + e.cancel = true } const dataGridRef = ref(null) const clearSelection = () => { @@ -359,12 +429,15 @@ const filterData = async (params: any) => { } else { data.value = [] } + + reportMeta.value = filters.value }) .catch((err) => { console.error(err) }) .finally(() => { loadingData.value = false + reportMeta.value = filters.value }) }